CLI reference
The CLI talks to the portal's management API with a token stored in ~/.shovelbase/config.json. Commands that operate on a project use the link file shovelbase.json in your app repo (created by shovelbase link), or an explicit --project <ref>.
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.
authentication & linking
shovelbase user login --url https://shovelbase.com # prompts for admin email/passwordshovelbase user login --url … --email … --password … # non-interactive (CI); or # APP_EMAIL / APP_PASSWORD envshovelbase user # who this machine is signed in asshovelbase user logout # forget the stored tokenshovelbase link --project my-app # link the current directoryprojects
shovelbase projects listshovelbase projects create <name> [--json] # provision a full project stackshovelbase projects keys [<ref>] [--json] # SHOVELBASE_URL + anon/service keysshovelbase projects delete <ref> [--yes] # delete project + ALL its datadatabase migrations
shovelbase migration create add_scores_table # shovelbase/migrations/<ts>_add_scores_table.sqlshovelbase db push # apply pending migrations, in orderfunctions, MCP endpoints & secrets
shovelbase functions deploy [name] [--no-verify-jwt] [--mcp] # all functions, or oneshovelbase functions listshovelbase functions delete <name>shovelbase mcp list # MCP endpoints + client URLs shovelbase functions schedules create <name> --function <fn> --cron "0 3 * * *" [--payload '{}']shovelbase functions schedules list # cron → function timersshovelbase functions schedules enable <name> | disable <name>shovelbase functions schedules delete <name> [--yes] shovelbase secrets set OPENAI_API_KEY=sk-… # env for ALL functions, applied liveshovelbase secrets listshovelbase secrets unset OPENAI_API_KEYfeature flags
shovelbase flags create new-checkout --description "New checkout flow" [--on]shovelbase flags list # name on/off rollout descriptionshovelbase flags enable <name> | disable <name>shovelbase flags configure <name> [--on|--off] [--rollout <0-100>] [--description "<text>"]shovelbase flags delete <name> [--yes] # Ramp a flag to more users; the same people stay in as it growsshovelbase flags configure new-checkout --on --rollout 10shovelbase flags configure new-checkout --rollout 50queues, triggers & webhooks
shovelbase queues list # SQS queues + approximate message countsshovelbase queues create <name>shovelbase queues delete <name> [--yes]shovelbase queues send <name> <message> # enqueue a test message shovelbase triggers create <name> --queue <q> --function <fn> [--function <fn2> …]shovelbase triggers list # queue → function linksshovelbase triggers enable <name> | disable <name>shovelbase triggers delete <name> [--yes] shovelbase webhooks create <name> --queue <q> # public inbound URL → queue# → https://<ref>.shovelbase.com/webhooks/<name>/<token>shovelbase webhooks listshovelbase webhooks delete <name> [--yes]static websites
shovelbase sites listshovelbase sites publish <name> --dir ./dist # S3 sync → https://<ref>.shovelbase.comshovelbase sites delete <name> [--yes]logs & signals
shovelbase logs functions --lines 100 # rest | auth | storage | functionsshovelbase logs queues # | queues | sites | postgresshovelbase logs auth --project my-app shovelbase signals # newest-first product-analytics eventsshovelbase signals --range 24h --event page_view --lines 100shovelbase signals --user user_123 --jsonFunction code and migrations are read from ./shovelbase/functions/<name>/index.ts and ./shovelbase/migrations/*.sql. APP_CONFIG_DIR overrides where the CLI stores its token (useful for CI).