Quick Start
DuraGraph ships as a single binary with embedded PostgreSQL and NATS — no infrastructure to provision, no docker compose up.
1. Install
Section titled “1. Install”Pick whichever fits your environment:
# Homebrew (macOS, Linux)brew install Duragraph/tap/duragraph
# One-line install scriptcurl -fsSL https://duragraph.ai/install.sh | sh
# From Gogo install github.com/Duragraph/duragraph/cmd/duragraph@latestOr download a prebuilt binary from the releases page.
2. Run
Section titled “2. Run”duragraph devThat’s it. The binary boots an embedded PostgreSQL + NATS, starts the engine, and serves the dashboard from the same port:
- API —
http://localhost:8081 - Dashboard —
http://localhost:8081(same origin; SPA routing) - Bootstrap admin — the binary ships with no default credentials. With
AUTH_PASSWORD_ENABLED=true, visit/register(or POST to/api/auth/register) and create the first user — they’re auto-promoted to admin. Subsequent users register as pending until an admin approves them.
3. Run your first workflow
Section titled “3. Run your first workflow”Open http://localhost:8081, sign in, and head to Playground. Pick a registered assistant, send a message, and watch the workflow execute live: each node lighting up as it runs, the full graph topology, and a replayable event log under Traces.
For richer examples — RAG, tool-using agents, document processing, evals — browse the examples/ directory. Each example runs against duragraph dev out of the box.
4. Hit the API directly
Section titled “4. Hit the API directly”If you’d rather drive DuraGraph from your own code, the headline REST endpoints are:
# Create an assistantcurl -X POST http://localhost:8081/api/v1/assistants \ -H "Content-Type: application/json" \ -d '{"name": "hello-assistant", "graph_id": "hello_world"}'
# Create a threadcurl -X POST http://localhost:8081/api/v1/threads \ -H "Content-Type: application/json" \ -d '{}'
# Kick off a run on the threadcurl -X POST http://localhost:8081/api/v1/threads/<thread_id>/runs \ -H "Content-Type: application/json" \ -d '{ "assistant_id": "<assistant_id>", "input": {"message": "Hello!"} }'
# Stream execution events live (SSE)curl -N http://localhost:8081/api/v1/threads/<thread_id>/runs/<run_id>/streamFull API reference: API docs.
Next steps
Section titled “Next steps”- Python SDK — Register graphs from Python with the
@Graph/@nodedecorators. - Go SDK — Same model with typed structs and interfaces.
- Architecture Overview — Why event sourcing + CQRS for agent workflows.
- Self-Hosted Installation — Production deployment with external Postgres + NATS.
Troubleshooting
Section titled “Troubleshooting”Port already in use? duragraph dev defaults to :8081. Override with --port 9000 (or whatever).
duragraph dev --port 9000Need to wipe the embedded data plane? It lives under a data directory (defaults to a per-user XDG path). Pass --data-dir /tmp/duragraph for a throwaway run, then rm -rf /tmp/duragraph to reset.
Running on a remote host? Bind to 0.0.0.0 and add SSH port forwarding from your laptop:
duragraph dev --host 0.0.0.0# On your laptop:ssh -L 8081:localhost:8081 vps-hostNeed help? Join the discussions or open an issue.