CLI
Reference for the optional rivet CLI: deploy to Rivet Compute and run local dev for serverless platforms.
The rivet CLI (@rivetkit/cli) is optional. You only need it for:
| Use case | Command |
|---|---|
| Deploy to Rivet Compute | rivet deploy |
| Local dev for serverless platforms (Cloudflare, Supabase) | rivet dev --provider <name> |
Run it with your package runner:
npx @rivetkit/cli <command>
| Command | Description |
|---|---|
rivet dev | Run a local engine and your handler’s dev server. |
rivet deploy | Build and deploy the project to Rivet Cloud. |
rivet engine | Run the bundled rivet-engine binary directly. |
rivet setup-ci | Install the GitHub Actions deploy workflow. |
rivet dev
Starts a local engine, spawns your dev server, and registers the serverless runner pointing at it. The engine keeps running across restarts; Ctrl-C stops only the dev server.
rivet dev [--provider <serverless|cloudflare|supabase|none>] [--port N] [--fn-name NAME] [--url URL] [-- <command>...]
--provider selects how the dev server is launched. Anything after -- is appended to the preset command (or is the command to run when no provider is set).
--provider | Spawns | Port |
|---|---|---|
| (omitted) | your -- <command> (needs --port) | from --port |
serverless | your -- <command> (gets PORT) | auto |
cloudflare | wrangler dev | 8787 |
supabase | supabase functions serve | 54321 |
none | nothing (engine only) | — |
For cloudflare, the CLI also passes the engine endpoint as --var RIVET_ENDPOINT:..., so the Worker connects back with no wrangler.toml config.
| Flag | Description |
|---|---|
--port | Handler port. Required without a provider unless --url is set. |
--fn-name | Supabase function name (default rivet). |
--url | Explicit handler URL, overriding port and path. |
--engine-binary | Path to a rivet-engine binary. |
rivet deploy
Builds and pushes your project’s Docker image and upserts the managed pool, printing the dashboard URL. See Deploying to Rivet Compute.
rivet deploy --token cloud_api_xxxxx
The token is saved to ~/.rivet/credentials (also read from RIVET_CLOUD_TOKEN), so later deploys can omit it.
| Flag | Default | Description |
|---|---|---|
--token | env / credentials | Rivet Cloud API token. |
--namespace | production | Cloud namespace. |
--project / --org | from token | Override project/org. |
--dockerfile | Dockerfile | Dockerfile to build. |
--build-context | . | Docker build context. |
--env KEY=VAL | — | Environment override, repeatable. |
--image | project slug | Image repository name. |
--tag | git short SHA | Image tag. |
rivet engine
Runs the bundled rivet-engine binary directly, against the same local database and ports as rivet dev. Arguments are forwarded verbatim.
rivet engine nuke # wipe local engine state
rivet engine wf list # inspect workflows
rivet setup-ci
Installs .github/workflows/rivet-deploy.yml, which deploys to Rivet Cloud on push and pull request. Add --force to overwrite. Then set the token secret:
gh secret set RIVET_CLOUD_TOKEN
Engine binary resolution
rivet dev and rivet engine resolve the rivet-engine binary from, in order: --engine-binary, RIVET_ENGINE_BINARY_PATH, a binary bundled next to the CLI, a local target/{debug,release} build, then an auto-downloaded release. Set RIVETKIT_ENGINE_AUTO_DOWNLOAD=0 to require a local binary.