dawn

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. 1

    Re-runs typegen

    Any tool signature changes are picked up and dawn.generated.d.ts is updated. Your IDE's TypeScript server sees the new types within seconds.

  2. 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. 3

    Preserves assistant ids

    Assistants keep their stable ids across restarts, so any agent or harness holding an assistant_id continues 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