Skip ahead — hand this to your coding agent
Ship a Dawn app to LangGraph Platform.
Deployment
Dawn itself is not a deployment runtime. It owns local development: dawn dev, dawn run, dawn test. Production runs on the LangGraph Platform, which Dawn's dev server already speaks natively. What runs locally runs in production without translation.
The deployment path
- 1
Verify locally
dawn check dawn routes dawn typegen dawn testAll four must pass.
dawn checkvalidates the app contract,dawn routesconfirms discovery,dawn typegenregenerates ambient types,dawn testruns every scenario against the in-process runtime. - 2
Confirm protocol parity
Run your tests against a live dev server:
dawn dev --port 3001 & dawn test --url http://127.0.0.1:3001If in-process and live-server tests both pass, the same inputs will pass on LangGraph Platform.
- 3
Declare assistants
Create a
langgraph.jsonat the app root mapping Dawn's discovered routes to LangGraph assistants:{ "graphs": { "hello": "./src/app/(public)/hello/[tenant]/index.ts:workflow" }, "env": ".env" }Each entry binds an
assistant_id(left side) to a route entry export (right side). - 4
Push to your Platform-connected remote
The LangGraph Platform builds the image and provisions assistants keyed by
assistant_id. From there, your agents and harnesses can hit the deployed endpoints using the same protocol they already speak locally.
What Dawn does not do
Self-hosting
If you can't or won't use the LangGraph Platform, you can self-host by wrapping Dawn's runtime in a Docker container that exposes the same protocol endpoints (/runs/wait, /runs/stream, /assistants). Dawn's dev server implementation (in @dawn/cli) is the reference — it's the same process you'd run in production, just without the file watcher.
Troubleshooting
- Tests pass in-process but fail live-server — a tool or route isn't serializing cleanly. Check that inputs, outputs, and state are JSON-serializable (no Dates, Maps, classes).
- Assistant id not found — the
langgraph.jsonentry doesn't match what Dawn discovered. Rundawn routesto see the exact pathnames, then update thegraphsmapping. - Type inference drifted — run
dawn typegenlocally and commitdawn.generated.d.ts. The Platform build uses the committed file.