Skip to main content

Configuration

Gantry is configured via environment variables, a YAML config file, or CLI flags. These are evaluated in priority order:

CLI flags  >  Environment variables  >  gantry.yaml  >  Built-in defaults

Environment Variables​

VariableDefaultDescription
GANTRY_PORT8080HTTP listen port
GANTRY_DB./data/gantry.dbDatabase connection string
GANTRY_DEVfalseEnable development mode
GANTRY_ADMIN_PASSWORDchangemeInitial admin user password
GANTRY_JWT_SECRET(auto-generated)JWT signing secret (HMAC-SHA256)
GANTRY_DATA_DIR./dataDirectory for SQLite DB and encryption key
GANTRY_ENCRYPTION_KEY(auto-generated)AES-256-GCM key for encrypting plugin configs

Example​

export GANTRY_PORT=9000
export GANTRY_DB=postgres://user:pass@localhost:5432/gantry
export GANTRY_ADMIN_PASSWORD=my-secure-password
export GANTRY_JWT_SECRET=a-long-random-string-here

gantry serve

Config File (gantry.yaml)​

Place gantry.yaml in the current directory or pass --config /path/to/gantry.yaml:

# gantry.yaml
port: 8080
db: ./data/gantry.db # or postgres:// for PostgreSQL
dev: false
adminPassword: changeme
jwtSecret: "" # auto-generated if empty
dataDir: ./data
encryptionKey: "" # auto-generated if empty
gantry serve --config ./gantry.yaml

CLI Flags (gantry serve)​

FlagDescription
--port, -pHTTP listen port
--dbDatabase DSN
--devEnable development mode
--admin-passwordInitial admin password
--configPath to gantry.yaml
--tls-certTLS certificate file (enables HTTPS)
--tls-keyTLS private key file

Database Configuration​

SQLite (Default)​

SQLite is the default and requires zero configuration. The database file is created automatically.

# Default location
GANTRY_DB=./data/gantry.db

# Custom location
GANTRY_DB=/var/lib/gantry/gantry.db

Gantry enables WAL mode and foreign keys automatically.

PostgreSQL​

For production multi-instance deployments:

GANTRY_DB=postgres://gantry:password@postgres.example.com:5432/gantry
# or
GANTRY_DB=postgresql://gantry:password@postgres.example.com:5432/gantry?sslmode=require
PostgreSQL Support

PostgreSQL support is currently in progress. SQLite is recommended for most deployments.

Security Configuration​

JWT Secret​

The JWT secret signs all authentication tokens. It should be a long, random string that stays stable across restarts.

# Generate a good secret
openssl rand -hex 32

GANTRY_JWT_SECRET=a64characterrandomhexstringhere

If GANTRY_JWT_SECRET is empty, Gantry auto-generates a random secret on startup. This means all existing sessions are invalidated on every restart. Always set this in production.

Admin Password​

The default admin password is changeme. Change it before exposing Gantry to a network.

GANTRY_ADMIN_PASSWORD=my-secure-password

You can also change it after startup via Settings → Users in the UI, or via the API:

curl -X PUT http://localhost:8080/api/v1/auth/me/password \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"currentPassword": "changeme", "newPassword": "my-secure-password"}'

Encryption Key​

Gantry encrypts sensitive plugin configuration (API tokens, credentials) with AES-256-GCM.

# Auto-generated and persisted to $GANTRY_DATA_DIR/encryption.key
# Or set explicitly:
GANTRY_ENCRYPTION_KEY=your-32-byte-hex-key-here
Key Management

Do not lose your encryption key. If it changes, existing encrypted plugin configs become unreadable. Always back up $GANTRY_DATA_DIR/encryption.key or set GANTRY_ENCRYPTION_KEY explicitly in production.

Development Mode​

--dev / GANTRY_DEV=true enables:

  • Verbose structured JSON logging to stdout
  • Open CORS headers (all origins allowed) for local frontend development
  • More detailed error messages in API responses

Never run development mode in production.

Data Directory​

GANTRY_DATA_DIR controls where Gantry stores persistent data:

$GANTRY_DATA_DIR/
├── gantry.db # SQLite database (if using SQLite)
└── encryption.key # Auto-generated AES-256-GCM key

In Docker deployments, mount a volume to this directory:

docker run -v /path/to/data:/data -e GANTRY_DATA_DIR=/data ...

CLI Auth Configuration​

The gantry CLI commands (get, apply, export, describe, run) connect to a running server. Configure them via:

Environment VariableDescription
GANTRY_SERVERServer URL (default: http://localhost:8080)
GANTRY_TOKENBearer token or API key for authentication
export GANTRY_SERVER=https://gantry.your-org.com
export GANTRY_TOKEN=gantry_yourapikey

gantry get service

Or pass flags:

gantry get service --server https://gantry.your-org.com --token gantry_yourapikey