CLI reference
The core loop is four commands — init, dev, check, publish — over the committed snoozestack/ folder. Project-scoped commands use the [project] name declared in snoozestack/project.toml (written by snoozestack link), or an explicit --project <ref>. Most resource groups accept --dev / --preview <name> to scope an operation to that namespace. Add --help to any command for the full detail.
Nearly every command below has a counterpart tool on the project's MCP endpoint, so an AI client can do this work directly instead of shelling out to the CLI on your behalf.
snoozestack init [name] # scaffold project.toml + a starter function + schema.mjssnoozestack check # validate the manifest — file and line on failuresnoozestack dev [--port <n>] # run the whole runtime natively; prints the dashboard linksnoozestack dev reset # throw away local state, rebuild + reseed snoozestack publish # validate, push every declared resource in order, go livesnoozestack publish --preview staging # same, into the "staging" namespace instead of livesnoozestack versions # every recorded publish, newest firstsnoozestack versions diff <a> <b> # added/removed/changed across two versionssnoozestack promote <version-id> # point live at a recorded version (also: rollback)snoozestack user login # prompts for email/password (or APP_EMAIL/APP_PASSWORD)snoozestack user # who this machine is signed in assnoozestack user logout # forget + revoke the stored tokensnoozestack link --project my-app # record the project in snoozestack/project.toml snoozestack projects listsnoozestack projects create <name> # provision a hosted projectsnoozestack projects keys [<ref>] # SNOOZESTACK_URL + API keyssnoozestack projects tokens create <name> # project-scoped credential for CIsnoozestack projects delete <ref> [--yes]snoozestack schema build # schema.mjs → snoozestack/schema.json (offline)snoozestack schema push # build, then publish it to the projectsnoozestack migration generate <name> # diff against the last build → SQL migration filesnoozestack migration create <name> # blank file, for hand-written SQLsnoozestack db push # apply .sql migrations (legacy database-server projects)snoozestack secrets set KEY=value # hosted default — running runtimes pick it upsnoozestack secrets set KEY=value --dev # local-only override for snoozestack devsnoozestack secrets set KEY=value --preview stagingsnoozestack secrets list # names + which namespaces override; never valuessnoozestack secrets unset KEYsnoozestack storage push # create/update declared [[storage]] buckets (never deletes)snoozestack storage listsnoozestack storage create <name> [--public] | public <name> | private <name>snoozestack storage delete <name> [--yes] # the only file-destroying commandsnoozestack queues push # create/update declared [[queues]] + their triggerssnoozestack queues list # depth gauges per queuesnoozestack queues send <name> <message> # enqueue a test messagesnoozestack queues dead-letters <name> # what exhausted its retriessnoozestack queues delete <name> [--yes] snoozestack triggers create <name> --queue <q> --function <fn> [--notify <service>]snoozestack triggers list | enable <name> | disable <name> | delete <name> snoozestack webhooks push # create declared [[webhooks]]snoozestack webhooks create <name> --queue <q># → https://<ref>.snoozestack.com/api/webhooks/<name>/<token>snoozestack webhooks list | delete <name> [--yes]snoozestack notifications push # create declared [[push]] servicessnoozestack notifications enable [<name>] # imperative shortcutsnoozestack notifications devices # registered device tokenssnoozestack notifications register-device --token <hex> # let dev send to a real devicesnoozestack notifications test --service <name> --device <id> --title … --body …snoozestack sites push # publish every declared [[sites]] entry, livesnoozestack sites publish <name> --dir ./dist [--no-promote] # ad-hoc one-offsnoozestack sites versions <name> # version history + preview URLssnoozestack sites promote <name> <version-id> # go live (also: rollback)snoozestack sites primary <name> # serve this one at the project host rootsnoozestack sites list | delete <name> [--yes] snoozestack domains claim <domain> # start connecting (idempotent)snoozestack domains status [<domain>] # the setup checklistsnoozestack domains primary platform|custom # which URL generated links usesnoozestack domains records list|add|delete <domain> …snoozestack domains list | retry <domain> | delete <domain> [--yes]snoozestack auth push # send the declared [auth] config (publish runs this)snoozestack auth pull [--force] # write the email/page templates into the project as filessnoozestack signals # hosted event stream, newest firstsnoozestack signals --range 24h --event page_view --lines 100snoozestack signals tail [--type log] # the LOCAL dev store, livesnoozestack signals query | clear # read / empty the local store snoozestack logs functions --lines 100 # auth | storage | functions | queues | sites | postgres snoozestack audit # who changed what — console, CLI, and MCPsnoozestack audit --area auth --actor mcpFunction code lives at ./snoozestack/functions/<name>/index.ts, migrations at ./snoozestack/migrations/*.sql, table definitions in ./snoozestack/schema.mjs. The login token is stored in ~/.snoozestack/config.json (APP_CONFIG_DIR overrides it); CI should skip login entirely and pass a project token via --token or APP_SERVICE_TOKEN. snoozestack update upgrades the CLI in place.