Skip to main content
pinbox init prepares a repo. Run it once per project, before anything else. It is idempotent — run it as often as you like; the second run reports unchanged. It creates .pinbox/, adds it to .gitignore, installs the pinbox skill for whichever coding agents it finds, installs a post-commit git hook, and then hands your agent a brief for adding the browser toolbar.

Usage

Options

list
Agents to install for (comma-separated), or none. Valid targets: claude, codex, hermes, openclaw, cursor, copilot, none. Passing this skips detection.
boolean
Install agent plugins user-wide instead of into this project. Falls back to project scope, out loud, if HOME is unset.
boolean
Print what would happen without installing. The whole sequence runs and predicts its outcome; nothing is written.
boolean
Accept the detected defaults without prompting.
boolean
Never prompt. Without --agent or --yes this only reports what it would install.
boolean
Force agent invocation mode: no prompts, and no spawning a second agent.
boolean
Machine output: the {"ok":true,"data":…} envelope.

Examples

One ok/no line per thing it touched:
Re-running the same command:
A dry run reports what each step would do, and says so on stderr:
A non-interactive run with no --agent and no --yes installs nothing, and each line names the flag that would change that:

The toolbar brief

After the setup lines, init produces an integration brief — plain-text instructions for adding the pinbox toolbar to your dev server. What happens to it depends on who is running:
  • You, at a terminal. init offers to hand the brief to a coding agent it found on your PATH. The agent works on a pinbox/integration branch and opens a pull request; init reports the PR URL. Decline, and it prints the brief for you to use later.
  • An agent, or --json, or --dry-run. The brief is printed rather than handed off. An agent never spawns a second agent, and nothing may prompt in front of an envelope.
The brief is the same text either way:
Step 3 varies with the repo. The text above is what a project with a vite.config.ts gets. A next.config.* names that plugin instead, and a project with neither is told to mount the toolbar itself behind a dev-only guard.

JSON

brief is the full text shown above, newline-escaped; it is truncated here for reading. agents[] carries one { agent, method, ok, detail } per install target. handoff is present instead of brief when an agent was handed the work.

Errors

An unknown target fails before anything is written:

Next: check the install with pinbox doctor, then create your first pin with pinbox pin.