Skip to content

Installation

curral is a single binary that is both the server (curral serve) and a client (curral query).

Terminal window
docker pull lucasapassos/curral
  • Images for linux/amd64 and linux/arm64.
  • Distroless, non-root (uid 65532), no shell, about 190 MB.
  • The httpfs, avro and iceberg extensions are installed at build time, so the container boots without internet access.
  • Pin a version tag (for example lucasapassos/curral:v0.4.1) in production.

The image has no curl; its HEALTHCHECK uses curral healthcheck.

Extension autoloading is disabled at runtime, so every extension a query may need must be listed in the catalog file and available at startup. To bake more into the Docker image:

Terminal window
docker build --build-arg EXTENSIONS="httpfs avro iceberg postgres" -t curral .

For the binary, install them into a directory and pass --extension-dir:

Terminal window
curral install-extensions --extension-dir ./extensions postgres json
Command
curral serve run the server; see server flags
curral check validate the files and mount the catalog without starting HTTP
curral query run a query against a server; see CLI
curral hash-password generate a bcrypt hash for the users file
curral gen-api-key NAME [ROLE...] generate an API key and its users-file entry
curral install-extensions download DuckDB extensions for offline use
curral healthcheck [url] probe /healthz (used by the Docker image)
curral version print the version