Skip to main content
Glama
README.md
# deployplan

Coding agents can write the app. They still dump **Vercel + Supabase** on a human who has never used either. That person creates two logins, hands the agent tokens, then pastes failure emails back into the chat.

deployplan is the other loop: the agent inspects the repo, asks scale and preference questions, shows how the deploy will look, and applies on **one account**. Open source. Not a paid product. The human does not pick vendors. When something breaks, the agent reads logs here.

## What the human does

- Answer who will use it, whether it can sleep, login/files/jobs, domain
- Open the URL

## What the human does not do

- Pay or pick a plan
- Choose Vercel, Supabase, Railway, or Neon
- Create those accounts
- Forward provider email to the agent

## Agent install

Cursor MCP (`.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "deployplan": {
      "command": "npx",
      "args": ["tsx", "packages/mcp/src/index.ts"],
      "cwd": "/absolute/path/to/deployplan"
    }
  }
}
```

Claude Code and Codex should read `AGENTS.md` and `skills/deploy-plan/SKILL.md`. Point their MCP at the same command.

## CLI

```bash
npm install
npx tsx packages/cli/src/index.ts inspect --root ./fixtures/next-postgres
npx tsx packages/cli/src/index.ts interview
npx tsx packages/cli/src/index.ts required --root ./fixtures/next-postgres --answers '{"audience":"just_me","availability":"hobby_sleep","features":["login"],"domain":"later"}'
npx tsx packages/cli/src/index.ts propose --root ./fixtures/next-postgres --answers '{"audience":"just_me","availability":"hobby_sleep","features":["login"],"domain":"later"}'
npx tsx packages/cli/src/index.ts apply --account local --root ./fixtures/next-postgres --answers '{"audience":"just_me","availability":"hobby_sleep","features":["login"],"domain":"later"}'
```

`apply` writes compose and starts Docker when it is installed: Postgres, Redis, MinIO, NATS, Mailpit, nginx for a static `index.html`, or an app with a `Dockerfile`. Connection strings stay on this account. The agent reads logs here.

HTTP API for agents that do not speak MCP: `npm run api` then `POST http://127.0.0.1:8786/v1/apply`.

## Repo

| Path | Role |
| --- | --- |
| `catalog/` | services, interview, what is required vs optional |
| `docs/SERVICES.md` | required vs optional vs Docker-live |
| `packages/core` | inspect → interview → topology → quote |
| `packages/platform` | control plane + Docker runtime |
| `packages/mcp` | MCP tools agents call |
| `packages/api` | HTTP tools agents call |
| `packages/cli` | same engine for humans and tests |
| `skills/deploy-plan` | Cursor / Claude / Codex skill |

The control plane runs the bundle with Docker on the machine. There is no checkout and no second vendor signup.