A human-friendly UI for an agent-native tracker

BeadMeUp,Scotty

A rich viewer and editor for Beads, Steve Yegge's issue tracker for AI agents. Create and edit beads, drag work through Kanban, and explore epics and a live dependency graph — all through the bd CLI.

$ 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 ↗

A note from the builder

Why I built
Bead Me Up, Scotty

I wanted to see what my agents were doing — and reach in and shape the work myself. That simple need became Bead Me Up, Scotty.

Read the storyMinimize the story

Steve Yegge’s Beads has become an incredibly useful part of the way I develop software with AI agents. But as my agents started creating and managing more beads, I needed a better way to understand their work — and immediately step in and work with that same data myself.

I found some excellent visualization tools. What I wanted was a rich interface where I could create beads, edit them, change priorities, move work through a Kanban board, and manage epics and dependencies. An early, simple Kanban board gave me a glimpse of how useful that could be. I wanted to take it further.

See the whole picture. Then do something with it.

That’s why I built Bead Me Up, Scotty. It connects to the bd CLI, so the UI and your agents work with the same underlying Beads system. Move between boards, searchable lists, epics, dependency graphs, and multiple projects, and make changes directly from the interface.

Keeping pace with Beads is part of that work, including its modern Dolt-backed releases. Check the Scotty release notes for compatibility updates as Beads evolves.

Everybody’s agent workflow is different. This was something I needed, and seeing it help other people in this small community has been a wonderful surprise. Give it a try. If something would make it more useful for you, please let me know.

And if you like the app, a GitHub star means more than you might think. It helps others find the project — and it’s a real encouragement to keep building.

— Brendan

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

From an agent’s plan to your next move

beads (bd) is a distributed, graph-based issue tracker designed for AI agents, storing every bead in a version-controlled Dolt database. Scotty adds a visual workspace where you can explore that work and edit beads directly.

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, keeping Beads responsible for issue data, dependencies, and the audit trail. 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