A deployment is what the team uses. Ask before mda deploy, before connecting Slack, and before
anything that bills (publishing a snapshot, hosting). Never print a key; name missing settings.
Setup comes first: uv run design-agent doctor should pass and the brand pack should validate
(design-agent-onboarding, brand-onboarding).
| Managed Deep Agents (recommended) | Self-hosted | |
|---|---|---|
| Who runs it | LangSmith: runtime, sandboxes, Slack app, schedules | the person: API, Postgres, Docker host |
| Needs | a LangSmith Cloud account (MDA is in public beta) and a deployment-capable LANGSMITH_API_KEY |
Docker with Compose v2.24+ |
| Cost | hosting is paid, plus model and media spend | their machine, plus model and media spend |
Managed Deep Agents
- Publish the computer once.
uv run design-agent sandbox build && uv run design-agent sandbox testproves the recipe locally;uv run design-agent sandbox publish --fs-gib 16builds the snapshot in their workspace (sandbox time is billed). Publish again wheneversandbox/setup.shchanges. - Check the keys.
mda deployforwards every.envkey except LangSmith's as a deployment secret. List the key names in.envand confirm they are only what the deployed agent uses (model, media,DESIGN_AGENT_*,PAPER_*); self-hosting keys (SLACK_*,DATABASE_URL,DESIGN_AGENT_API_TOKENS) must not be there. Renders inworkspace/out/ship too and count toward MDA's 200 MB archive limit.uv run design-agent doctornames all of this (mda-deploy), anduv run mda buildcompiles what would ship into.mda/build/. - Try a copy first.
uv run mda deploy --name design-agent-testis a separate deployment; the team's agent is untouched. - Deploy with
uv run mda deployafter a yes. The first deploy provisions the Slack app; the person authorizes it in their Slack workspace. Without aLANGSMITH_API_KEY,mda deployoffers a browser sign-in. - Verify with real requests: a quick still, then a short storyboarded teaser. In Slack you
should see live progress, a check-in while it renders, and files attached at the end. Without
Slack, call the deployment's API (docs/deploy-mda.md has the
snippet); files attach to the run's LangSmith trace.
uv run mda logstails the deployment. - Updates: change, deploy the test copy, then
uv run mda deploy. A redeploy stops running helpers; each affected thread offers to resume from its saved transcript.
Self-hosted
uv run design-agent config set DESIGN_AGENT_MODEL=…(the person types the key or sets it in.env), thenuv run design-agent config generate DESIGN_AGENT_API_TOKENS POSTGRES_PASSWORD.docker compose -f deploy/self-host/compose.yaml up -d --build, thencurl -s http://127.0.0.1:8080/health.- Slack (optional): create an app from
config/slack-manifest.example.yaml, setSLACK_BOT_TOKENandSLACK_APP_TOKEN, then add--profile slackto the compose command. - Verify:
POST /threads/{id}/messageswithAuthorization: Bearer <token>, then pollGET /threads/{id}/updatesfor background work. - Security: the API starts sandboxes through the Docker socket, which is root-equivalent. Use a
dedicated host, or LangSmith sandboxes (
DESIGN_AGENT_SANDBOX=langsmith) without the socket.
A local preflight does not prove a deployment: only a real request does. Details: Deploy with MDA, Self-hosting.