Docs / Getting started
Docdeploymill://docs/getting-started

Getting started

This is the shortest path from nothing to a live, deployed app. deploymill is driven entirely by MCP tools, so "getting started" means pointing an MCP client (Claude Code, Codex, opencode, or any MCP-capable agent) at the server and making a few tool calls.

1. Connect your agent

  1. Create an account at the web sign-in page (this exists only because OAuth

    requires a browser consent step — everything else is tool-driven).

  2. Add deploymill as an MCP server in your client, pointing at

    POST https://<your-host>/mcp.

  3. Authenticate. Your client performs the OAuth 2.0 + PKCE flow and is issued a

    bearer access token; every POST /mcp call carries Authorization: Bearer <token>. The token scopes you to your own org — you can only see and touch your own apps.

Once connected, your agent can discover everything else: fetch the deploymill://guides resource for the full index of guides, or call search_docs to find one by keyword.

2. Go from idea to live app

The single highest-level tool is start_project. One call creates a GitHub repo from a starter template, provisions an app wired to that repo, deploys main, and attaches an auto-generated domain:

start_project({ name: "my-app", stack: "node" })

If any step fails it returns { ok: false, failedAt, partial } so the agent can resume by re-running start_project with the same name (the create steps are idempotent) or, once the repo exists, calling reconcile_project.

3. Put your code in

After scaffolding, commit source with push_files — the platform auto-deploys on push, so this is how you go from "scaffolded repo" to "running site" without a manual git push:

push_files({ repo, branch: "main", files: [...], message: "Build the thing" })

Prefer a real local checkout to build and test against? Call get_clone_credentials for a short-lived authenticated clone URL.

4. Find the URL and confirm it's healthy

  • list_domains({ applicationId }) returns the live URL.
  • get_app_health({ applicationId }) checks the health gate right now.
  • If a deploy reports status: "error", call get_logs (build source) to see

    why.

Where to go next

  • deploymill://docs/what-is-deploymill — the mental model behind the tools.
  • deploymill://guides/project-config.deploymill/project.json, the

    config file every other tool reconciles to.

  • The per-stack guide for whatever you're building (stack-node,

    stack-python, stack-static).

  • Add a database / object storage / custom domain / secrets — each is a

    field in .deploymill/project.json plus a reconcile_project call; the relevant guide walks you through it.

  • deploymill://docs/troubleshooting — when something goes wrong.