Dev Server
dawn dev starts a local runtime that speaks the LangGraph Platform protocol natively. It hot-reloads routes and tools on every file save, and accepts the same /runs/wait and /runs/stream endpoints your production deployment will.
Starting the server
dawn dev
By default the server listens on port 3000. Override with --port:
dawn dev --port 3001
Invoking a route
With the server running in one terminal, you can hit it from another:
echo '{"tenant":"acme"}' | dawn run '/hello/[tenant]' --url http://127.0.0.1:3001
dawn run resolves the pathname to an assistant_id, POSTs to /runs/wait, and prints the result. This is the exact request path a production LangGraph Platform deployment would take.
Protocol endpoints
Synchronous run — blocks until the route completes, returns the final state.
POST /runs/wait
Body: { assistant_id, input }
Hot reload
When you save a route file, a tool, or a state file, the dev server:
- 1
Re-runs typegen
Any tool signature changes are picked up and
dawn.generated.d.tsis updated. Your IDE's TypeScript server sees the new types within seconds. - 2
Restarts the child runtime
Dawn uses a parent-child process architecture. The parent owns the HTTP server and file watcher; the child owns the route graph. On save, only the child restarts — in-flight requests complete before the swap.
- 3
Preserves assistant ids
Assistants keep their stable ids across restarts, so any agent or harness holding an
assistant_idcontinues to work without reconnection.
Logging
Every request is logged to stdout with the pathname, assistant id, duration, and result status. Set DEBUG=dawn:* for verbose tracing of the parent/child handshake.
Next steps
- Testing — run scenarios against a live dev server
- Deployment — ship the same runtime to LangGraph Platform