GitHub
Clone and push private repos from any machine.
Linear
Linear’s GraphQL API and an optional MCP server for your agents.
Slack
The Slack Web API as the bot or as you, plus an optional MCP server.
Connect an integration
There are two ways to connect, and both end at the same place: From the console — openboxd.sh/app → Integrations and click Connect on the service you want. This is the simplest path.
From the CLI — boxd integrations connect <id> (for example github, linear, or slack) prints an authorize URL, then polls until you approve it:
boxd integrations connect works for all three — github, linear, and slack. GitHub can also be connected with the Connect GitHub repos button in the console; both routes land the same grant.Where integrations are available
A connected integration reaches your personal machines and your private org-billed machines — anywhere only you have a shell. It is deliberately never exposed on shared or public org machines. A teammate with a shell on a shared box must never be able to read your personal Linear or Slack token, so boxd withholds it there. Fork a shared machine to get a private copy, and your integrations come back.How a machine uses an integration
Once connected, each integration shows up two ways inside your machine. As environment variables, exported into every login shell (and into the coding agents’ environment):| Integration | Variables |
|---|---|
| Linear | LINEAR_ACCESS_TOKEN |
| Slack | SLACK_BOT_TOKEN, SLACK_USER_TOKEN, SLACK_TEAM_ID |
| GitHub | (none needed — a git credential helper and gh are wired up directly) |
Discover what’s wired in
Inside any machine, runboxd integrations (no subcommand) to see which accounts are connected and how to use each, plus what else you can still connect — the live source of truth:
connect command — so an agent can discover and wire one up without guessing.
Add --json for a structured version: connected integrations come back under integrations (each with access methods tagged by a machine-readable kind — git, cli, graphql, api, mcp), and the not-yet-connected ones under connectable. The coding agents pre-installed on every machine are told to run boxd integrations rather than guessing — new integrations appear here automatically.
MCP servers
Linear and Slack each also offer a Model Context Protocol server that a coding agent can call directly. It’s opt-in per agent:claude (Claude Code), codex, and opencode. With no agents listed, the MCP installs into all three; --disable removes it everywhere. You can also toggle this from the console with Enable MCP on the integration’s card. The MCP is only active while the integration is connected — disconnecting clears the opt-in too.
The boxd integrations command
The same command behaves the same everywhere you drive boxd:
integ is an alias for integrations, and ls an alias for list. All four subcommands work on every surface — the laptop CLI, inside a machine, the SSH CLI (one-shot ssh boxd.sh … or the interactive boxd> prompt), and the console. Service names are case-insensitive (Slack = slack).