deployplan
by jsuncar
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.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues