A human-friendly UI for an agent-native tracker

BeadMeUp,Scotty

A fast, graph-aware task board for humans — sitting on top of beads (bd), Steve Yegge's distributed graph issue tracker built for AI agents. Kanban flow, a live dependency graph, epics with progress, and human-vs-agent attribution.

$ bd ready·Next.js + shadcn·zero new schema·local-first
The Bead Me Up board — Backlog, Ready, In Progress, Blocked, and Done columns

The board · 28 beads · live from bd list

Demo

Watch it in action

A two-minute tour — switch projects, flow work across the board, expand epics, and link dependencies on the live graph.

Prefer YouTube? Watch it there ↗

What it is

An interactive home for work built by agents and humans alike

beads was designed for AI agents to plan and track each other's work. Bead Me Up gives the humans in the loop a place to see it, steer it, and add to it.

The gap

beads has a powerful CLI — but no visualizer

beads (bd) is a distributed, graph-based issue tracker designed for AI agents, storing every bead in a version-controlled Dolt database. It ships a great command line, but nothing interactive to see your work — or to create it.

The fill

A board humans actually want to use

Bead Me Up, Scotty is that missing window: a dense, fast, keyboard-friendly board that reads and writes real beads. View statuses, drag work through a flow, expand epics, and link dependencies on a live graph.

The contract

bd stays the single source of truth

The app never touches the database directly. Every read and write shells out to the bd CLI with JSON envelopes, so ID hashing, the ready-queue, epic math, and the audit trail stay correct by construction. Zero new persisted schema.

Feature set

Everything you need to run a beads repo by hand

Manage tasks and epics, comment, archive, delete, see and edit dependencies, and flow work from backlog to done — all backed by the bd CLI.

Five-column board

Backlog · Ready · In Progress · Blocked · Done. Dense cards show id, type, priority, assignee, dep & comment counts, and an origin badge.

Multiple projects

Open any folder with a .beads repo, switch between them, or add one from the built-in folder browser. Each tab scopes to its own project.

Backlog ↔ Ready drag-and-drop

Drag cards between columns to change status — Backlog maps to deferred, Done runs bd close. Every move is optimistic with rollback.

Live dependency graph

An interactive React Flow canvas of beads as nodes and typed edges. Drag node→node to link, with cycle-checking on every edge.

Board or list

Prefer a flat view? The List tab shows every bead sorted by priority — id, type, priority, origin, and assignee in one scannable column.

Epics with progress

Epics with live closed ÷ children progress bars and expandable child lists. Add a child straight into an epic.

Human-vs-agent attribution

Every bead and comment shows 👤 human or 🤖 agent, derived from a configurable allowlist — so you always know who created what.

Typed dependencies

View, add, and remove blocks, parent-child, and related edges in the detail drawer — grouped by type, with blocking ones flagged.

Comments & activity

Author-stamped comment threads with a composer on every bead, plus a created / updated / closed activity trail.

Create, edit & attach

Add tasks and epics — type, priority, description, assignee, labels, parent epic, start-in-backlog — edit inline, reorder, and attach images.

Live updates & themes

Changes stream in instantly over SSE when agents edit data underneath you — no refresh — with a poll fallback. Actor, allowlist, and light/dark in Settings.

Screens

See it from every angle

Designed in Claude Design and rebuilt faithfully with Next.js, shadcn/ui, and Tailwind.

One window for every project

One window for every project

Switch between any folder with a .beads repo — or add a new one from the built-in folder browser. Each tab scopes to its own project.

How it works

One thin bridge to the bd CLI

beads has no HTTP API, so every action shells out to bd with --json. The app adds zero new persisted schema.

UI
Board / drawer / graph
You drag a card or add a dep
API
Next.js route handler
The only server entry point
lib/bd.ts
execFile("bd", args)
JSON envelope · write mutex
bd
beads CLI → Dolt
Single source of truth

reads flow back the same path · validated with Zod · pushed live over SSE as files change

Backlog = deferred

There's no first-class backlog in beads, so Backlog maps to the built-in deferred status and Ready = open & unblocked. Dragging runs bd update --status / bd close.

Attribution by actor

beads has no human-vs-agent flag. The UI stamps its own writes with BEADS_ACTOR; anyone in your allowlist renders 👤, everyone else 🤖.

Archive without losing history

There's no archive command, so Archive = bd close + an archived label — fully reversible, audit trail intact. Delete is bd delete behind a confirm.

Correct by construction

Args are passed as an array (never a shell string), output is validated with Zod, and writes serialize through an in-process queue for embedded single-writer mode.

Built with
Next.js 16React 19TypeScriptTailwind v4shadcn/uiTanStack Querydnd-kit@xyflow/reactZodsonnerPlaywrightDoltNext.js 16React 19TypeScriptTailwind v4shadcn/uiTanStack Querydnd-kit@xyflow/reactZodsonnerPlaywrightDolt

Run it against your own .beads repo

Point it at any directory with a beads repo and bd on your PATH — or explore every feature in demo mode with no install. Local-first, single-user, yours.

$npm install && npm run dev

http://localhost:3000 · or install once and run scotty from any beads repo · falls back to demo mode automatically