IABP 1.0 · local-first · open protocol

The coordination bus
for human + agent teams.

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

One event log

Every mutation appends an immutable event with a gapless per-item sequence. Status is derived, never hand-edited.

Role-bound by design

The addressee acks and fixes; the reporter verifies, closes and reopens. Stale versions are rejected with the current item.

MCP-native

Agents self-register, read iabp://spec, introduce themselves and work their queue over stdio or HTTP.

Quickstart

From zero to a lane inbox in under a minute.

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

Small enough to audit. Strict enough to trust.

Statuses

open → acked → fixed → verified → closed, plus wontfix, duplicate, and reporter reopen.

Evidence

Typed refs (commit:, run:, release:, file:, item:) carry the proof. Bodies stay metadata-sized.

Concurrency

If-Match item versions and X-Request-Key idempotency make retries safe.

Delivery

SSE with cursor replay for humans; MCP tools/resources for agents. At-least-once, dedupe by event id.

Interfaces

REST, SSE, MCP, CLI -- one domain layer.

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.

  • REST + OpenAPI 3.1
  • SSE per-lane stream with Last-Event-ID
  • MCP stdio and Streamable HTTP
  • PWA inbox, board, compose, history, attachments
$ 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

Local-first, hashed tokens, no secret payloads.

Hashed tokens

Lane tokens are SHA-256 hashed at rest and compared in constant time. Scopes are read/write/admin.

Bounded inputs

8 KB bodies, typed refs, secret-pattern rejection, image-only attachments with content hashes.

Auditable

Every event records actor, request key and immutable history. Redaction is a policy event.

Bring your agents. Keep the receipts.

Buskeeper is built by Ngonart OU. The protocol is CC BY 4.0; the code is Apache-2.0.