Skip to content
DDx Server

DDx Server

ddx server is a lightweight Go web server that exposes your document library, bead tracker, document graph, agent session logs, and personas over HTTP and MCP endpoints — with an embedded web UI for visual management.

Quick Start

# Start the server (reads from current project)
ddx server

# Custom port
ddx server --port 3000

# Open in browser
open http://127.0.0.1:8080

Demo

Web UI

The embedded web UI provides a browser-based interface for managing your DDx project. Six pages cover the full surface:

PageURLWhat it does
Dashboard/Project overview: document count, bead status, stale docs, server health
Documents/documentsBrowse, search, filter by type, view rendered markdown, edit in-place
Beads/beadsKanban board with drag-and-drop, full-text search, create/claim/close/reopen
Graph/graphInteractive document dependency graph visualization
Agent/agentAgent session history with prompt/response/token details
Personas/personasBrowse personas, view by role, inspect content

Beads Kanban Board

The beads page is a full project tracker with:

  • Three-column kanban: Open, In Progress, Closed
  • Drag-and-drop: Move beads between columns to update status
  • Full-text search: Powered by MiniSearch across all bead fields
  • Create beads: Modal form with title, type, priority, labels, description, acceptance criteria
  • Detail panel: Click any bead to see full details, dependencies, and execution evidence
  • Bead actions: Claim, unclaim, close, reopen with reason

Document Library

  • Browse by type: Filter documents by category (prompts, personas, patterns, etc.)
  • Search: Find documents by name
  • Rendered markdown: View documents with full GitHub-flavored markdown rendering
  • Edit in-place: Switch to raw editing mode, save changes directly

HTTP API

All data is available programmatically over REST:

Documents & Search

MethodPathDescription
GET/api/documentsList all library documents
GET/api/documents/:pathRead document content
PUT/api/documents/:pathWrite document (auto-commits)
GET/api/search?q=<query>Full-text search across documents
GET/api/personasList all personas
GET/api/personas/:roleResolve persona for a role

Bead Tracker

MethodPathDescription
GET/api/beadsList all beads
GET/api/beads/:idShow a specific bead
GET/api/beads/readyList ready beads (no open deps)
GET/api/beads/blockedList blocked beads
GET/api/beads/statusSummary counts by status
GET/api/beads/dep/tree/:idDependency tree
POST/api/beadsCreate a bead
PUT/api/beads/:idUpdate bead fields
POST/api/beads/:id/claimClaim a bead
POST/api/beads/:id/unclaimRelease a claim
POST/api/beads/:id/reopenReopen with reason
POST/api/beads/:id/depsAdd/remove dependencies

Document Graph

MethodPathDescription
GET/api/docs/graphFull dependency graph
GET/api/docs/staleStale documents
GET/api/docs/:idDocument metadata and staleness
GET/api/docs/:id/depsUpstream dependencies
GET/api/docs/:id/dependentsDownstream dependents
GET/api/docs/:id/historyDocument commit history

Execution & Agent Sessions

MethodPathDescription
GET/api/exec/runsList execution runs
GET/api/exec/runs/:idShow execution run detail
GET/api/exec/runs/:id/logExecution run logs
POST/api/exec/run/:idDispatch an execution
GET/api/agent/sessionsList agent sessions
GET/api/agent/sessions/:idSession detail

System

MethodPathDescription
GET/api/healthLiveness check
GET/api/readyReadiness check

MCP Endpoints

AI agents can connect to ddx server via MCP (Streamable HTTP at POST /mcp). Available tools:

Documents: ddx_list_documents, ddx_read_document, ddx_search, ddx_resolve_persona, ddx_doc_write, ddx_doc_history, ddx_doc_diff, ddx_doc_changed

Beads: ddx_list_beads, ddx_show_bead, ddx_bead_ready, ddx_bead_status, ddx_bead_create, ddx_bead_update, ddx_bead_claim

Graph: ddx_doc_graph, ddx_doc_stale, ddx_doc_show, ddx_doc_deps

Execution: ddx_exec_definitions, ddx_exec_show, ddx_exec_history, ddx_exec_dispatch

Agent: ddx_agent_sessions, ddx_agent_dispatch

Architecture

  • Single binary — server and web UI are embedded in the ddx CLI
  • Stateless — reads from filesystem on each request, no database
  • Localhost by default — binds to 127.0.0.1 for security
  • File-backed — all data comes from git-tracked files (.ddx/beads.jsonl, library docs, agent logs)