Kanban board for the beads (bd) issue tracker inside Paseo, with a workspace panel, sidebar surface, and composer attachment source.
bd CLI on the daemon host; set PASEO_BEADS_BD_BIN if it is not on PATH.bd as the daemon user and can modify any beads database that user can reach.From the plugin's README
0.x). A minor version bump may contain breaking changes, so pin a
version if you are depending on today's behaviour.bd CLI must be installed on each daemon host you install this plugin on; a missing binary
surfaces as an error on the board and in paseo plugin logs beads-board.bd list --brief; long text is fetched on demand with bd show, so
very large boards briefly load in two passes.bd statuses --json), so a database that has renamed
in_progress will move beads to whatever status currently maps to that column.npmjs · Paseo 0.9+
paseo plugin add npm:paseo-beads-board@0.1.1GitHub · Paseo 0.8 fallback
paseo plugin add jmkelly/paseo-beads-board --ref 2a501e7caa780ae85ed02aa49d8d3a01add0e6d8Git security status and fallback installation are pinned to commit 2a501e7caa78.
From the plugin's README
Paseo 0.9 and newer install from npm:
paseo plugin install npm:paseo-beads-board
Pin a specific release when you do not want to track the latest one:
paseo plugin install npm:paseo-beads-board@0.1.0
Paseo 0.8 installs from the repository:
paseo plugin add jmkelly/paseo-beads-board
The daemon must have plugins enabled. Check with paseo daemon status --json; the file is
<home>/config.json and needs a root "pluginsEnabled": true, followed by paseo reload.
From a clone of this repository:
npm install
npm run typecheck
npm test
paseo plugin install /absolute/path/to/paseo-beads-board
paseo plugin ls
paseo plugin logs beads-board
Source changes need paseo plugin reload beads-board. After installing, open Beads board in
the sidebar, pick a project, and the board appears.
README
A Paseo plugin that turns the beads bd CLI into a
kanban board inside Paseo, inspired by beads-web.
Pre-1.0. Releases are
0.x, following semver's pre-1.0 convention: features and fixes bump the patch version, but a minor bump may still contain breaking changes until the plugin API and the board settle at1.0.0. Pin an exact version if you do not want to track the latest release.
The board is rendered by the Paseo app (React Native, so desktop, browser, iOS, and Android all
work) and every data operation runs the bd CLI in a subprocess on the daemon host. Install the
plugin on each host you want a board for; Paseo shows one sidebar item with a host picker and the
selected host serves its own projects.
blocked, deferred, pinned show as badges on Open; hooked shows on In
Progress; tombstone is hidden).blocked.bd.bd show), relations, and comments (bd comments).bd CLI on the daemon host's PATH, so the
plugin can shell out to it. Set PASEO_BEADS_BD_BIN in the daemon environment if the binary
lives somewhere unusual.Plugins are trusted, unsandboxed code. This plugin's server code runs bd in the daemon user's
account, so it can read and change the beads databases that user can reach. Review the source
before installing it on a machine you care about.
Paseo 0.9 and newer install from npm:
paseo plugin install npm:paseo-beads-board
Pin a specific release when you do not want to track the latest one:
paseo plugin install npm:paseo-beads-board@0.1.0
Paseo 0.8 installs from the repository:
paseo plugin add jmkelly/paseo-beads-board
The daemon must have plugins enabled. Check with paseo daemon status --json; the file is
<home>/config.json and needs a root "pluginsEnabled": true, followed by paseo reload.
From a clone of this repository:
npm install
npm run typecheck
npm test
paseo plugin install /absolute/path/to/paseo-beads-board
paseo plugin ls
paseo plugin logs beads-board
Source changes need paseo plugin reload beads-board. After installing, open Beads board in
the sidebar, pick a project, and the board appears.
paseo-plugin.json plugin id, description, supported Paseo versions
index.client.tsx surface, sidebar item, workspace panel, settings screen, commands, attachment source
index.server.ts RPC handlers + host settings registration
shared/beads.ts Zod contracts, RPC definitions, status -> column mapping
shared/settings.ts host-scoped preferences document
shared/attachments.ts composer attachment source
server/bd.ts `bd` process execution helpers
server/beads.ts raw bd JSON -> board normalization (parents, blockers, epic progress)
server/handlers.ts project discovery and every RPC handler
client/hooks.ts TanStack Query hooks and mutations
client/board/ board screen, columns, cards, detail/create/picker modals
tests/ unit tests for the status mapping and board normalization
| RPC | Runs |
|---|---|
beads.projects |
bd status --json, bd count --json --status inreview, bd where --json |
beads.board |
bd list, bd statuses --json, bd where --json |
beads.show |
bd show <id> --json, bd comments <id> --json |
beads.create |
bd create --json |
beads.update |
bd update / bd close / bd reopen |
beads.comment |
bd comment |
beads.search |
bd list --json --brief --all |
Discovery uses the daemon's Paseo API (projects.list(), workspaces.list()) to find candidate
directories, and a directory appears on the board when .beads holds an initialized database
(config.yaml, metadata.json, or issues.db) — directly, or within four parent levels. Each
database is listed once however many Paseo worktrees point at it, and the counts come from bd's
own status summary rather than a full issue list.
npm install
npm run typecheck
npm test
paseo plugin install /absolute/path/to/paseo-beads-board
paseo plugin reload beads-board
Keep the plugin ID (beads-board) and the npm version in package.json in step: Paseo 0.9
installs the npm package, and the paseo.cafe catalog uses the published version as the plugin's
update identity, so every release needs a version bump and an npm publish. While the plugin is
pre-1.0, bump with npm version patch for fixes and npm version minor for anything that may
change existing behaviour.
0.x). A minor version bump may contain breaking changes, so pin a
version if you are depending on today's behaviour.bd CLI must be installed on each daemon host you install this plugin on; a missing binary
surfaces as an error on the board and in paseo plugin logs beads-board.bd list --brief; long text is fetched on demand with bd show, so
very large boards briefly load in two passes.bd statuses --json), so a database that has renamed
in_progress will move beads to whatever status currently maps to that column.Issues and pull requests are welcome at
https://github.com/jmkelly/paseo-beads-board/issues. Please run npm run typecheck and
npm test before opening a pull request.
Scanned 28 Sep 2026, 13:25 UTC from jmkelly/paseo-beads-board.