Skip to content

One call.
Fully live.

Rivtor deploys your frontend, backend, Postgres, Redis and storage from one call by your AI agent, or one CLI command. Live in about 2 minutes, all on one private network.

npx rivtor deploy

No card. Works with Claude Code, Cursor, Codex and any MCP client.

claude — ~/code/my-applive

you › Ship this to production.

● rivtor.deploy(path: "./my-app")

  1. upload142 files, 3.1 MB packed2.8 s
  2. detectweb: Next.js 15 · api: FastAPI0.4 s
  3. planpostgres, redis · api URL → web0.2 s
  4. provisionp_my_app · redis · rv-my-app1.4 s
  5. buildweb 58 s ∥ api 41 s58 s
  6. migratealembic upgrade head7 s
  7. releasehealth checks passed6 s
{
  "status": "live",
  "urls": {
    "web": "https://my-app.rivtor.com",
    "api": "https://my-app-api.rivtor.com"
  },
  "DATABASE_URL": "postgresql://p_my_app:•••@pg:6432/p_my_app",
  "durationMs": 118400
}

claude › Live in 1 min 58 s. Frontend, API and Postgres are wired together.

Three accounts for one app.

A full-stack app today means a frontend host, a backend host and a database provider. Your agent can write the code in minutes, then waits on you to wire three dashboards together.

Accounts
Vercel + Render + Supabase: 3: Vercel, Render, Supabase
Rivtor: 1
Dashboards to watch
Vercel + Render + Supabase: 3
Rivtor: 1, and your agent
Environment variables
Vercel + Render + Supabase: Copied by hand between dashboards
Rivtor: Wired at deploy: DATABASE_URL, REDIS_URL, API URLs
App to database
Vercel + Render + Supabase: 50–150 ms over the public internet
Rivtor: < 1 ms on the same private network
Getting it live
Vercel + Render + Supabase: Sign up three times, connect repos, create a database, paste URLs
Rivtor: deploy(./my-app)
When a build fails
Vercel + Render + Supabase: A wall of logs for you to read
Rivtor: Cause, file and fix your agent acts on

Eight steps. About two minutes.

What happens after your agent calls deploy, for a typical Next.js + FastAPI + Postgres app. No human input at any step.

Pack it. Skip the secrets.

The CLI or local MCP server packs the project as one tarball, respecting .gitignore. .env files are never uploaded; secrets go through env_set.

2–5 s

deployment dpl_7h2k · my-appbuilding
  1. upload142 files packed · 3.1 MB · .env skipped
  2. detectwaiting
  3. planwaiting
  4. provisionwaiting
  5. buildwaiting
  6. migratewaiting
  7. releasewaiting
  8. returnwaiting

It reads the repo. No config file.

Flip what is in your repo and watch the plan change. Detection works from your files alone; a deploy.toml only overrides what it found.

  • There is a Next.js app in /web.

    Container on port 3000 at my-app.rivtor.com. A static export goes to Cloudflare's edge instead. PORT

  • The API in /api is FastAPI.

  • The API imports SQLAlchemy.

    Postgres 17 database p_my_app with its own role, in under 2 s. alembic upgrade head runs before release. DATABASE_URL

  • A Celery worker reads REDIS_URL.

  • Uploads go through boto3.

plan1 servicePostgres2 env vars wiredready to deploy

Also recognised: Vite, Astro, plain HTML and CRA as static sites on the edge; Express, Fastify, NestJS and Hono; Flask and Django; Go, Rust, Ruby, Java and PHP through Railpack; any Dockerfile; BullMQ and RQ workers. Full detection tables

deploy → failed
{
  "status": "failed",
  "stage": "release",
  "service": "api",
  "code": "missing_python_module",
  "cause": "Python module 'stripe' not found (imported in payments.py:3)",
  "file": "payments.py:3",
  "fix": "Add 'stripe' to requirements.txt (or pyproject.toml dependencies) of the 'api' service, then call deploy again",
  "retryable": true,
  "docs": "https://rivtor.com/docs/errors#missing_python_module"
}
deploy → needs_input
{
  "status": "needs_input",
  "stage": "plan",
  "code": "missing_secrets",
  "cause": "The app reads a secret that is not set: STRIPE_SECRET_KEY",
  "fix": "Ask the user for STRIPE_SECRET_KEY, call env_set with them, then call deploy again.",
  "retryable": true,
  "missing": [
    { "name": "STRIPE_SECRET_KEY", "service": "api",
      "usedIn": ["api/payments.py:3"] }
  ]
}

Errors your agent can fix.

Every failure comes back as a structured object: cause first, then the fix. A library of 71 known errors maps raw build output to plain instructions: missing dependency, wrong port, missing secret, failed migration, out of memory. Anything unknown returns the last relevant log lines.

  1. Agentcalls deploy.
  2. Rivtorreturns the stage, the cause, the file and the fix. Never a log dump.
  3. Agentadds stripe to api/requirements.txt.
  4. Agentcalls deploy again. Only api rebuilds; web reuses its image.
  5. Rivtorreturns live URLs. The whole loop took under a minute.

Secrets are asked for once, by name and by the line that reads them, and never echoed back. Error reference

Works with your agent.

The MCP server is the product. Connect once with a token from your dashboard, then say “deploy this”.

terminal
claude mcp add --transport http rivtor \
  https://api.rivtor.com/mcp \
  --header "Authorization: Bearer rvt_..."

Remote MCP over HTTP. One command, then ask Claude to deploy.

Fast because it is close.

< 1 ms

From your app to its database. Postgres runs on the same private network as your containers, not across the internet.

< 3 s

To wake a sleeping free app. Other free tiers take 30–60 s.

< 30 s

For a static or Vite site, served from Cloudflare's edge.

  • Postgres 17: every app gets its own database and its own role, created in under a second.
  • PgBouncer in transaction mode, so serverless-style Next.js apps never run out of connections.
  • Redis on the project's private network, and an R2 bucket with no egress fees.
  • Point-in-time backups: 7 days on Free, up to 30 days on paid plans. Export a dump any time.
  • Redeploys in under a minute: only the services that changed rebuild.

Free is for building.

Sign in with GitHub, no card, and get a real full-stack app with a real database. Every new account starts with 14 days of Pro, then settles on Free. Nothing you built has to move when you upgrade.

Free is for personal and non-commercial projects. Once an app earns money, Hobby is $19 a month.

What the Free plan includes
Projects3, each with up to 3 services
Static sitesUnlimited, always on, on Cloudflare's edge
Container apps0.5 vCPU and 512 MB RAM each; sleep after 1 hour idle, wake in under 3 s
Postgres1 GB per project, never sleeps, 7-day point-in-time backups
Redis50 MB per project
File storage (R2)1 GB
Bandwidth10 GB per month
Custom domains1
Deploys and MCP toolsUnlimited. Every tool, every framework

One plan instead of three.

Replaces Vercel Pro + Supabase Pro ($45) and three dashboards. Hobby is $19 for solo builders; Team is $199 with 3 seats. Rupee pricing with UPI in India.

Pro costs $49per month, Pro

  • 3 GB RAM, always on, across unlimited projects
  • 20 GB Postgres with 30-day point-in-time backups
  • Preview deploys, database branches and priority builds
  • 20 custom domains, 100 GB bandwidth, teammates

Questions, answered.

What does one call actually do?

deploy uploads the changed files, detects every service in the repo, creates the Postgres database, Redis and storage it needs, builds everything in parallel, runs migrations, waits for health checks and returns the live URLs and the DATABASE_URL. A second step is only needed when a secret such as an API key is missing.

Do I need a Dockerfile or a config file?

No. Detection reads package.json, requirements.txt, pyproject.toml, go.mod and friends. If a Dockerfile is present it wins. An optional deploy.toml overrides anything detection found, such as a port or a start command.

Which agents can use it?

Any agent that speaks MCP: Claude Code, Cursor, Codex, Windsurf, Zed, Cline or your own. Connect over HTTP at api.rivtor.com/mcp, or run npx -y rivtor mcp locally to upload a folder from disk. Humans use the same API through the CLI.

Where do my apps and data run?

Containers, Postgres and Redis run in one region in India, on a private network with no public database endpoint. Static sites are served from Cloudflare's edge worldwide, and every request passes through Cloudflare's WAF and DDoS protection.

What happens when I hit a limit?

On Free and Hobby, deploys over a limit stop with a clear message and an upgrade link; nothing running is deleted. Pro and Team bill overage instead, with a $50 default spend cap on Pro that you can change.

Is there a trial of the paid plans?

Every new account starts on Pro for 14 days, then drops to Free unless you upgrade. You get an email 3 days before, with a list of exactly what changes.

Can I get my data out?

Yes, any time. The db tool and rivtor db export stream a standard pg_dump of your database. Your code stays in your repo; Rivtor never needs write access to it.

Deploy your first app

Sign in with GitHub, connect your agent, ship your app. No card, live in about 2 minutes.

Deploy