Deploy with synq.json
Add a declarative synq.json to your repo so Synq builds and deploys it the same way every time — in the wizard and headlessly on push.
Committing an synq.json to your repo root makes your deploy reproducible: the framework,
build commands, env, domains, and scaling are declared in the repo instead of clicked through the
wizard each time. It's the same idea as vercel.json or railway.toml.
Synq still auto-detects everything — synq.json just overrides what you declare. So
you only add the fields you want to pin. The full field list lives in the
reference.
1. Scaffold it
From your repo root:
synq config initThis writes a minimal synq.json with the $schema line (for editor autocomplete) plus any
package manager / build command it can detect locally. Open it and add what you need.
2. Declare your deploy
A typical server app:
{
"$schema": "https://synquic.tech/synq.schema.json",
"framework": "nextjs",
"buildCommand": "pnpm build",
"port": 3000,
"runtime": "docker",
"env": {
"NEXT_PUBLIC_API_URL": "https://api.acme.com",
"DATABASE_URL": { "value": "postgres://…", "secret": true }
},
"domains": ["app.acme.com"]
}- Secrets — wrap the value in
{ "value": "…", "secret": true }so it's encrypted at rest. - Custom domain — a dotted hostname is treated as custom; a bare label is a free subdomain.
- Leave out anything detection already gets right (most
installCommands,outputDirectoryfor known frameworks, etc.).
A static site is just:
{
"$schema": "https://synquic.tech/synq.schema.json",
"framework": "vite",
"buildCommand": "pnpm build",
"outputDirectory": "dist",
"productionMode": "static"
}3. Validate
synq config validateFix any reported error (bad enum, out-of-range port, malformed service). Warnings (e.g. unknown
keys) are non-fatal. Use --json for machine-readable output in CI.
4. Deploy
Deploy as usual — from GitHub, a
local folder, or the CLI. The wizard opens pre-filled from
your synq.json; you can still tweak anything before deploying.
Because auto-deploy on push and headless deploys run the same
resolution, a push to your deploy branch honors synq.json with no wizard at all — which is
the point: the repo describes its own deploy.
Precedence
Detection runs first, then synq.json overrides field-by-field. If a deploy isn't picking up
a value, confirm the field name against the reference and re-run
synq config validate.
Multi-service and monorepos
Declare services for a compose project, or monorepo to override detected sub-apps — see the
reference for both. Note that services and
monorepo are alternatives to a single-app config, not additions to it.
Deployments, rollback & redeploy
Find every deployment and its logs, undo a bad deploy in seconds, run one again, and keep a known-good version safe, from the panel or the terminal.
Environment variables & secrets
Give your app its settings and secrets. See and edit them inline on the Environment page or with the CLI, keep the sensitive ones masked, and apply changes without a full rebuild.