Boof Runner v0.2.0

Connect AI agents to Boof Runner

Let an AI agent or harness drive Boof Runner over REST or MCP; the full machine-readable guide is at https://nodets.com/boof/harness.txt.

Connect AI agents

Give your agent one URL and an API key. The agent reads the guide, asks you for the details it needs and operates boof by itself.

  • Hosted guide: https://nodets.com/boof/harness.txt
  • Your own server serves the same guide without authentication at <boof-host>/harness.txt (also /harness.md and /llms.txt).

Tell the agent: "Read https://nodets.com/boof/harness.txt and use it to operate my boof server." The guide covers connecting (REST or MCP), the concepts, every REST operation and step-by-step workflows. Its source is docs/harness.md; the reference part is generated from the code (npm run docs:gen).

MCP

Boof speaks the Model Context Protocol with the same scopes, trust and audit as REST. The tool list is in docs/api.md.

Local agent (stdio). The agent host starts boof-runner mcp; no server and no key are needed.

bash
# one repository: the projectId argument is filled in and hidden
claude mcp add boof -- boof-runner mcp -d ~/.local/share/boof-runner/data --project pim
# everything the data root serves, limited to an API client's scopes and projects
claude mcp add boof -- boof-runner mcp -d ~/.local/share/boof-runner/data --client agent-1

Without --client the agent is the local admin principal, which only works while security.auth.mode is local-trust. The server writes logs to stderr only.

Remote harness (HTTP). Start boof-runner serve (with TLS and a key when it is not loopback) and point the client at /mcp:

bash
claude mcp add --transport http boof https://boof.example.com/mcp \
  --header "Authorization: Bearer boof_<client>_<secret>"

or in a JSON config (.mcp.json):

json
{
  "mcpServers": {
    "boof": {
      "type": "http",
      "url": "https://boof.example.com/mcp",
      "headers": { "Authorization": "Bearer boof_<client>_<secret>" }
    }
  }
}

The endpoint is stateless (no sessions); use boof_wait_task to follow a task.

Edit this page on GitHub Last updated