4.0 KiB
Deploying to Rivet Compute
Source:
src/content/docs/deploy/rivet-compute.mdxCanonical URL: https://rivet.dev/docs/deploy/rivet-compute Description: Run your backend on Rivet Compute.
Rivet Compute is currently in beta.
Using an AI coding agent? Open Connect on the Rivet dashboard, select Rivet Cloud, and paste the one-shot prompt into your agent and have it connect with Rivet Compute for you.
Steps
Prerequisites
- Your RivetKit app
- If you don't have one, see the Quickstart page or our Examples
- A Rivet Cloud account and project
- Docker running locally
Create a Dockerfile
Add a Dockerfile to your project root that builds and runs your RivetKit server:
FROM node:24-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
CMD ["node", "src/server.js"]
Get Your Cloud Token
- Open the Rivet dashboard and navigate to your project
- Click Connect and select Rivet Cloud
- Copy the
RIVET_CLOUD_TOKENvalue shown
Deploy
Run the deploy command from your project root. The token is saved to ~/.rivet/credentials, so later deploys can omit it.
npx @rivetkit/cli deploy --token cloud_api_xxxxx
The CLI resolves your project from the token, builds and pushes your Docker image to Rivet's built-in registry, upserts the managed pool, and prints the deployment URL on stdout when the pool is ready.
Optionally Add CI
After local deploys work, install the GitHub Actions workflow that deploys on every push and pull request:
npx @rivetkit/cli setup-ci
This writes .github/workflows/rivet-deploy.yml. Add your token as a repository secret to enable it:
gh secret set RIVET_CLOUD_TOKEN
The workflow creates production and pull-request namespaces, posts preview links, and cleans up PR namespaces when pull requests close. See the CLI reference for all commands.
Monitor Deployment
The dashboard shows live status as Rivet Compute provisions your backend:
| Status | Description |
|---|---|
| Provisioning | Allocating compute resources |
| Initializing | Starting the runtime environment |
| Allocating | Assigning the runner to your pool |
| Deploying | Pulling and launching your container |
| Binding | Connecting the runner to the network |
| Ready | Deployment complete |
Once the status reaches Ready, your backend is live and actors are available for connections.
If you are an agent monitoring the deployment via API rather than the dashboard, poll the managed-pool endpoint on the Cloud API.
The RIVET_CLOUD_TOKEN secret is a cloud_api_* management token scoped to the Cloud API at cloud-api.rivet.dev. Use it for Authorization: Bearer ... against the Cloud API. Do not confuse it with a pk_* publishable key, which is scoped to the Rivet Engine API at api.rivet.dev and will 401 against this endpoint.
Substitute $CLOUD_API_URL (typically https://cloud-api.rivet.dev), $PROJECT, $ORG, $CLOUD_NAMESPACE, and $CLOUD_TOKEN.
Poll every 5 seconds until status is ready. Stop and investigate if status is error.
curl -s "$CLOUD_API_URL/projects/$PROJECT/namespaces/$CLOUD_NAMESPACE/managed-pools/default?org=$ORG" -H "Authorization: Bearer $CLOUD_TOKEN"
Troubleshooting
If the status stays in Provisioning for more than a few minutes, verify that:
- The
RIVET_CLOUD_TOKENsecret is correctly set in your GitHub repository - The GitHub Actions workflow completed without errors — check the run logs
If the status shows Error, check that your container starts successfully and does not exit immediately. Common causes:
- The server file is not calling
registry.startRunner() - A runtime crash on startup — test the image locally with
docker run - The Dockerfile is not listening on the
PORTenvironmental variable
Source doc path: /docs/deploy/rivet-compute