Skip to main content

beacon-board

A kanban board backed by markdown files, with a CLI that people and coding agents can both drive. Tickets are files in a directory. The board is a single static HTML page. There is no server and no database.

The board

Install

uvx beacon-board --help        # run without installing
pipx install beacon-board      # or install it

Quickstart

beacon-board init
beacon-board new --app AB --title "First ticket" --type Task
beacon-board build --open

That writes beacon.toml, a tickets/ directory and board.html.

Why the CLI matters

Coding agents are good at writing markdown and bad at remembering which ID comes next. The CLI closes that gap: it allocates IDs atomically, refuses malformed tickets at creation, and reports problems instead of silently dropping files.

Give an agent access to the commands and it can read and update the same backlog you do:

beacon-board list --status Next --json
beacon-board set AB-07 --status Now
beacon-board comment AB-07 "Reproduced on a clean install."

beacon-board agent-docs prints an instruction block to paste into whatever your assistant reads. Nothing here is specific to one tool.

Tickets

One markdown file per ticket, in tickets/.

# AB-07: [Bug] Search drops the last result

**Epic:** [AB-03 Search overhaul](AB-03-epic-search-overhaul.md)
**Assignee:** rae
**Depends on:** None
**Related:** AB-04
**Estimate:** S
**Type:** Bug
**Status:** Next

## Objective

The final match is missing from every result page.

## Acceptance Criteria

- [ ] Searching a mailbox with exactly one match shows it.

## Acceptance Criteria renders as a checklist, so write items as - [ ] and tick them to - [x]. Plain bullets render as prose instead, which is why the section is worth writing consistently. ## Comments holds dated entries, oldest first: - **2026-08-14:** text.

Three levels: the ID prefix groups tickets into apps, **Epic:** groups them within an app, and everything else is a ticket. A ticket whose **Epic:** reads Self is an epic container. With only one prefix in play, the app level disappears from the board.

Configuration

beacon.toml, found by walking up from the working directory. Every key has a default, so the file is optional.

[meta]
name = "My Board"

[[apps]]
prefix = "AB"
label = "My Project"

[statuses]
columns   = ["Later", "Next", "Now", "Done"]
protected = ["Done"]

[assignees.rae]
label = "rae"
color = "#ffffff"

protected statuses are the ones the CLI refuses to set without --force. Useful when you want an agent to do the work but not to declare it finished.

Commands

Command What it does
init Scaffold a board here
new Create a ticket, allocating the ID
set Change fields on a ticket
comment Append a dated comment
list List tickets, with filters and --json
show Print one ticket
next-id The next free ID for a prefix
validate Report every problem
build Write the board HTML
doctor Print resolved config and paths
agent-docs Print instructions for a coding agent

Every command takes --help. beacon-board --version prints the version.

Exit codes: 0 ok, 1 usage or runtime error, 2 validation failed, 3 refused by rule. Branch on these rather than on the message text.

Requirements

Python 3.11 or newer. No runtime dependencies.

Contributing

Bug reports and pull requests are welcome on GitHub. To work on it:

python -m pip install -e ".[dev]"
python -m pytest
python -m ruff check .

See CONTRIBUTING.md for the house rules.

Author

Built by Bojan Gasparovic. More work and writing at zeroemdashes.com.

License

MIT.

Generated boards embed Poppins, DM Sans and Fira Code, all licensed under the SIL Open Font License 1.1. The licence text ships with the package at beacon_board/templates/fonts/OFL.txt.

Metadata

Release files for beacon-board 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for beacon-board 0.1.0
File Size Uploaded Provenance Actions
beacon_board-0.1.0.tar.gz 203.9 kB Without provenance Details for beacon_board-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for beacon-board 0.1.0
File Interpreter ABI Platform Actions
beacon_board-0.1.0-py3-none-any.whl Python 3 none any Details for beacon_board-0.1.0-py3-none-any.whl

Total release size: 334.5 kB

Release files / beacon_board-0.1.0.tar.gz

Download URL beacon_board-0.1.0.tar.gz
Size 203.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bb4cd5b9ca7076cbbf028eefa271e41a1c6d137731a9e57dc29077d72b905dd3
BLAKE2b-256 checksum
How to use checksums
38754b95fe6c7a07d16542c0d8140b04eaeb0314710c170da5201d0b55016b5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / beacon_board-0.1.0-py3-none-any.whl

Download URL beacon_board-0.1.0-py3-none-any.whl
Size 130.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c76f449834863eea2998e49fb197ce02f1d7633f7f7c7fdf9b97c101745122ac
BLAKE2b-256 checksum
How to use checksums
51f0993d0560ec645a8fdc3ee6cc46b79a31fa44fee8fd57b3e27ebaaa6f1e6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Security for beacon-board 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page