Skip to content
DocsExamplesDialectsDiagnosticsDownloadsGitHub
Get started
OverviewDocumentationGet startedIntroductionInstall SeagullCore conceptsProject structure
Tutorials
OverviewTutorialsExamples
Build a task applicationYour first queryBuild a useful data layerSearch and shape resultsEvolve the databaseTest your data layerKeep SQL and Go in step
Go furtherUse PostgreSQL and pgxEmbed the generator
How-to guides
OverviewHow-to guides
ConnectionsRun queries in a transactionRoute reads to a replicaUse prepared statementsName and trace generated queries
DialectsUse PostgreSQL-specific queriesUse TimescaleDB hypertablesUse continuous aggregatesUse ClickHouse MergeTree tablesRead ClickHouse arrays, maps and tuplesRun asynchronous ClickHouse mutationsRead nested data with DuckDBWrite analytical DuckDB queriesUse MySQL and MariaDBUse SQLite databases and extensionsUse CockroachDB
EmbeddingGenerate SQL wrappers from GoVet and inspect a catalogue from GoRegister custom SQL functionsCustomise generation with a presetGenerate from an existing databaseObserve and limit generator workProvide a custom schema sourceRead configuration and assemble a generator
ExtensionsWriting an emitterBuild and test a custom emitterBuild a custom sgl binaryConfigure a built-in dialectImplement a migration backend or executor
Interactive toolsUse the playground and open an exampleRun an example locally
MigrationsRun migrations at application start-upCreate, apply and roll back migrationsApply seeds, namespaces and hooksRun migrations from the command lineConfigure migration locks and namespacesRecover an interrupted migrationInvestigate checksum mismatchesRoll back or target a migration versionUse migration hooks and observability
OperationsVerifying releases
ProjectsAdd Seagull to an existing projectConfigure multiple databasesChoose and configure a driver
QueriesChoose a query commandName and type parametersPass a slice to a queryAdd optional filtersValidate sorting and paginationAdd bounded paginationBuild queries at runtimeQuery through CTEs, views and functionsDeclare SQL functions in migrations
ResultsHandle NULL and missing rowsEmbed joined resultsCollect one-to-many resultsStream rows and stop earlyHandle an optional single rowTag, document and mock generated code
ToolingTroubleshoot generation and executionCheck SQL and generated code in CIInspect queries and compare schemasFormat directives and change prefixesUpgrade Seagull and regenerateTest generated queries
TypesInspect SQL-to-Go typesUse JSON and custom Go typesWork with enums, arrays and nested valuesRead arrays and listsOverride SQL-to-Go types
WritesReturn inserted or updated rowsWrite an upsertBatch writes and use COPY
Reference
OverviewReferenceDiagnosticsDialects
CoreConfigurationCLIDirectivesType mappingCompatibilityKnown limitationsGenerator APIQuery commandsRuntime query builderGenerated Go APIOutput writing APIPresetsErrors and observabilityMigration and seed filesDialect and driver matrix
DialectsDialect referenceSQLitePostgreSQLCockroachDBTimescaleDBMySQLMariaDBDuckDBClickHouse
EmbeddingPlayground and WASMConfiguration and assembly APIsSQL model
ExtensionsDialect APIEmit APIMigrate APISchema APIObserve API
OperationsMigration runtime
OrientationGlossary
Explanation
OverviewExplanation
CoreArchitecture
DesignWhy SeagullFrom SQL to GoThe schema catalogueHow inference worksWhat analysis can guaranteeDialects, drivers and emittersStatic and dynamic queriesGenerated code at runtimeRead-only analysis and replicasMigration safety and recoverySeagull inside other toolsSeagull in the browserReproducible generation and upgrades
On this page
On this page
  • Overview

Get started

New to Seagull? Read the introduction, prepare the tool and build your first query. The concepts and layout pages help you place the same pieces in an existing application.

Overview

  • Introduction
  • Install Seagull
  • Core concepts
  • Project structure

Seagull source e1d7ce1f013f36f6a748196a1eeeaf243bf0838b

Edit this page on GitHub ↗
← DocumentationIntroduction →
On this page
  • Overview
pre-release

Plain SQL in, typed Go out, from SQLite to ClickHouse. Born in the Piko project.

Product
DocsExamplesDialectsDiagnosticsDownloadsCLI reference
Source
GitHubReleasesIssues
The family
Piko, the frameworkPipit, Go interpretedPolitePixels
© 2026 PolitePixelsWill steal your chips.