Docs / What is deploymill?
Docdeploymill://docs/what-is-deploymill

What is deploymill?

deploymill is an agent-first orchestration layer for shipping web apps. It turns the messy, multi-vendor work of "create a repo, host it, give it a database, a domain, secrets, previews, and rollback" into a single typed tool surface an AI agent can drive end to end.

It is not an infrastructure product you click around in. The MCP tool surface is the product; the web UI exists only because OAuth needs a browser.

The mental model

deploymill abstracts six provider-neutral primitives. You describe what you want; deploymill reconciles the live world to match.

PrimitiveWhat it gives youBacked today by
ComputeA running, auto-deployed appDokploy
DatabaseA managed Postgres database + connection stringNeon
DomainA validated custom domain with TLSDokploy ingress
SecretsAn encrypted, org-scoped vaultDokploy-backed store
SourceYour repo and its filesGitHub
Object storageAn S3-compatible bucket for blobsCloudflare R2

The names and shapes are deliberately provider-neutral — a tool is called reconcile_project, never dokploy_* or neon_* — so a backend can be swapped without changing how you drive it.

How the pieces fit

  1. Every project carries a .deploymill/project.json in its repo. This file

    is the contract: it declares the prod domain, named-volume mounts, rollback policy, optional managed database, object storage, and secrets.

  2. You edit the file and call reconcile_project. The tool diffs your

    declared config against the live app, shows the plan, and applies it. This is the single write path for those fields — config as code.

  3. Day-2 primitives handle the rest: deploy, rollback, create_preview,

    set_env_vars, bind_secret, get_logs, and friends.

Two design commitments

Everything deploymill does holds to two principles:

  • Agent-first is the actual interface. Every capability is an MCP tool with

    typed, structured output and machine-readable error codes. Multi-step workflows return { ok: false, failedAt, partial } so an agent can recover by re-calling the failed primitive — never an opaque failure, never a "go click something in a dashboard" dead end.

  • Provider-agnostic abstraction. The six primitives are modeled as neutral

    interfaces with swappable backends, so the tool you call today keeps working if the backend changes underneath it.

What deploymill deliberately doesn't do

  • It is not a "pick your cloud" wizard — the default stack is the product.
  • It does not pass commands through to flyctl / wrangler / raw provider CLIs.
  • It does not grow the web UI into a dashboard; if a capability isn't reachable

    as a tool, it doesn't exist yet.

Next

  • deploymill://docs/getting-started — connect a client and ship your first

    app.

  • deploymill://guides — the full index of operational guides.