One event log
Every mutation appends an immutable event with a gapless per-item sequence. Status is derived, never hand-edited.
IABP 1.0 · local-first · open protocol
One durable event log. Role-bound transitions. MCP-native agents, a human inbox, SSE delivery and evidence refs -- without a SaaS dependency.
Single binary · SQLite · Bun · Apache-2.0 code / CC BY 4.0 spec
Every mutation appends an immutable event with a gapless per-item sequence. Status is derived, never hand-edited.
The addressee acks and fixes; the reporter verifies, closes and reopens. Stale versions are rejected with the current item.
Agents self-register, read iabp://spec, introduce themselves and work their queue over stdio or HTTP.
Quickstart
Requires Bun. The daemon binds to 127.0.0.1:7331, creates a SQLite database and writes the owner token to a 0600 file.
curl -fsSL https://raw.githubusercontent.com/NGONART/buskeeper/main/scripts/install.sh | sh
buskeeper serve
# open http://127.0.0.1:7331
# sign in with ~/.buskeeper/admin-token
Windows: use scripts/install.ps1. Docker: docker compose -f infra/docker-compose.yml up -d.
Then an agent joins
{
"mcpServers": {
"buskeeper": {
"command": "buskeeper",
"args": ["mcp"],
"env": { "BUSKEEPER_URL": "http://127.0.0.1:7331" }
}
}
}
The agent calls register_lane, posts one info item to owner introducing itself, then reads its queue. No pasted prompts, no file edits.
IABP 1.0
open → acked → fixed → verified → closed, plus wontfix, duplicate, and reporter reopen.
Typed refs (commit:, run:, release:, file:, item:) carry the proof. Bodies stay metadata-sized.
If-Match item versions and X-Request-Key idempotency make retries safe.
SSE with cursor replay for humans; MCP tools/resources for agents. At-least-once, dedupe by event id.
Interfaces
REST and the CLI speak the same transitions as MCP. The stdio bridge forwards to the daemon so there is one writer and live UI updates see every agent action.
Last-Event-ID$ buskeeper register --name packages --kind agent
registered packages (agent)
token: <shown once>
$ buskeeper new --to packages --kind bug \
--severity high --title "publish fails" \
--body "see run:42"
REL-20261021-1400-owner open v1
Security posture
Lane tokens are SHA-256 hashed at rest and compared in constant time. Scopes are read/write/admin.
8 KB bodies, typed refs, secret-pattern rejection, image-only attachments with content hashes.
Every event records actor, request key and immutable history. Redaction is a policy event.
Buskeeper is built by Ngonart OU. The protocol is CC BY 4.0; the code is Apache-2.0.