@coduckai/cli
v0.1.11
Published
CoDuck command-line interface — hosting, generation, domains, DB, email, Stripe, and everything else, for humans and agents.
Maintainers
Readme
@coduckai/cli
The CoDuck command-line interface — hosting, generation, custom domains, database, email, Stripe, storage, and everything else, for humans and agents.
npm install -g @coduckai/cli
coduck login
coduck --helpDesign
- One binary, two modes. TTY → human (colors, tables, prompts); piped or
--json→ machine (NDJSON, no prompts, real exit codes). Auto-detected. - Total API coverage. Every CoDuck API route has a command — no "use the web app for that" gaps.
- Agent-friendly. Every prompt has a flag;
--no-inputfails instead of hanging. stdout = data, stderr = chatter. - Exit codes: 0 ok · 1 generic · 2 usage · 3 auth · 4 not found · 5 conflict · 6 network · 7 server.
Common commands
coduck create-existing --name my-app # import an existing project
coduck push # upload local files (chunked; honors .coduckignore + .gitignore)
coduck deploy # build + run the container
coduck logs --follow --since 30m --grep error
coduck env set KEY value
coduck domains add example.comRun coduck spec --json for the full, machine-readable command list.
Deploy config (coduck.json)
coduck.json is the only file CoDuck reads (other *.toml/*.config files in
your repo are unrelated to CoDuck). It's written by create-existing and holds
your project's deploy config:
{
"projectId": "…",
"dir": "./", // source root to push/deploy
"runtime": "node20",
"install": "npm ci", // optional — defaults to npm install
"build": "npm run build",
"preStart": "npm run migrate", // optional — runs before start (good for DB migrations)
"start": "npm start",
"port": 3000,
"instanceSize": "small" // small | medium | large (paid plans unlock medium/large)
}push uploads from dir; deploy builds and runs the container using these commands.
Environment variables
coduck env import .env # bulk import; reserved/invalid keys are skipped (not fatal)
coduck env reserved # list keys CoDuck manages (rejected on write)CoDuck injects its own keys (DATABASE_URL, PORT, NODE_ENV, CODUCK_*, …) at
deploy time — see coduck env reserved. The managed Postgres starts empty:
reach it at DATABASE_URL/DIRECT_URL and bootstrap your schema in your build
or preStart command (the platform doesn't expose a raw DB connection URL).
Release
Versioned with git tags. Pushing a v* tag publishes to npm via GitHub Actions
(requires the NPM_TOKEN repo secret). coduck --version reads package.json
at runtime, so bumping package.json is the single source of truth — no constant
to keep in sync.
License
MIT © CoDuckAI
