dawn

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

    Verify locally

    dawn check
    dawn routes
    dawn typegen
    dawn test
    

    All four must pass. dawn check validates the app contract, dawn routes confirms discovery, dawn typegen regenerates ambient types, dawn test runs every scenario against the in-process runtime.

  2. 2

    Confirm protocol parity

    Run your tests against a live dev server:

    dawn dev --port 3001 &
    dawn test --url http://127.0.0.1:3001
    

    If in-process and live-server tests both pass, the same inputs will pass on LangGraph Platform.

  3. 3

    Declare assistants

    Create a langgraph.json at 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. 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.json entry doesn't match what Dawn discovered. Run dawn routes to see the exact pathnames, then update the graphs mapping.
  • Type inference drifted — run dawn typegen locally and commit dawn.generated.d.ts. The Platform build uses the committed file.