Migrations are stored in schema/*.sql and embedded via go:embed. Applied migrations are tracked in schema_migrations table. Initial schema includes source_content, source_metadata, output_content, request_cache, negative_cache, and cache_stats tables.