1
Install pinbox
Pinbox ships as one self-contained binary with Bun compiled into it, so there is
no runtime to install first.Check that the command resolves:
Building from source is the route that works today — there is no published
release or npm package yet. See Installation for the full
picture and what each route needs.
2
Set up your project
Run The block after the checklist is an integration brief: a set of instructions for
your agent describing how to mount the toolbar in this specific project. You can
paste it into your agent, or ignore it — the CLI works without the toolbar.
pinbox init in the root of the project you want feedback on. It creates
the state directory, adds it to .gitignore, installs the pinbox skill for
each coding agent it finds on your machine, and installs a post-commit git
hook.On a terminal it asks which agents to install for. --yes accepts what it
detected, and --agent <list> picks them explicitly.3
Create a pin
pinbox pin creates a pin from the terminal. Anchor it to a web surface with
--url and --selector, or to a source location with --file.--file takes a path that exists, optionally with :line, and records it
relative to the repo — swap in a real file from your own project.The id goes to stdout; the confirmation line goes to stderr. Facts on stdout,
messaging on stderr, in every command — so pinbox list | grep open never
matches a footer.You did not start a server. The first command that needs the hub starts it in
the background and it exits when idle.4
See what is open
pinbox show prints one pin with everything captured with it, plus its thread:5
Reply on the thread
A pin is a conversation. Replying adds a message and never changes the status,
so an agent can report progress or ask you a question without closing anything.
--as records who spoke: human (the default) or agent.6
Resolve it
Resolving takes a note saying what changed — or why it will not.The other way to resolve is not to run a command at all. Name the pin in a
commit message and the
post-commit hook pinbox init installed resolves it,
with the commit attached:Fixes, Resolves, and Closes all work, case-insensitively, with or without
a colon and with or without the word pin in front of the id. Amending or
rebasing is safe — an already-resolved pin is skipped silently, and a broken hub
never blocks a commit.7
Check the result
What just happened
Pins are rows in.pinbox/pinbox.db, a SQLite file in your project that
pinbox init added to .gitignore. They are served by a local hub daemon bound
to 127.0.0.1 on an ephemeral port; the port sits in .pinbox/server.json and
the bearer token lives outside the repo in your state directory with 0600
permissions. You never start or stop that daemon — any command starts it, and it
shuts down when idle.
Next
Concepts
Pins, threads, sessions, the hub, and where your data lives.
CLI reference
Every command, flag, exit code, and JSON shape.