Skip to main content
Integrations connect a third-party account to boxd once, at the account level. After that, every personal machine you own can use it — no per-VM setup, no tokens to copy around. The token lives server-side; boxd injects it into your machines on demand. Three integrations ship today:
https://mintcdn.com/azin/Ax1V0serIwQf0x_2/images/icons/github.svg?fit=max&auto=format&n=Ax1V0serIwQf0x_2&q=85&s=356db9ba697339bc42f46e2999e57725

GitHub

Clone and push private repos from any machine.
https://mintcdn.com/azin/gycLgw-regpBRyIk/images/icons/linear.svg?fit=max&auto=format&n=gycLgw-regpBRyIk&q=85&s=858db4db0a559fe11797c24b96fd5c1f

Linear

Linear’s GraphQL API and an optional MCP server for your agents.
https://mintcdn.com/azin/gycLgw-regpBRyIk/images/icons/slack.svg?fit=max&auto=format&n=gycLgw-regpBRyIk&q=85&s=ab29cf0026c3c082da6a02c2797316a4

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 — open boxd.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 linear
Open this URL in a browser to connect linear:

  https://linear.app/oauth/authorize?client_id=…

Waiting for authorization (up to 5 minutes)...
✓ linear connected — available on your personal and private VMs.
You open the URL in any browser and approve; the CLI finishes on its own. The browser step is why a human has to do the connect — an agent can kick it off but can’t click through the consent screen.
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):
IntegrationVariables
LinearLINEAR_ACCESS_TOKEN
SlackSLACK_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, run boxd 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:
$ boxd integrations
Connected integrations (usable from this VM):

  GitHub
    git          pre-configured credential helper — clone & push private repos directly
    gh CLI       the `gh` command works out of the box (GH_TOKEN injected per call)

  Linear
    GraphQL API  POST https://api.linear.app/graphql with header `Authorization: Bearer $LINEAR_ACCESS_TOKEN`
    MCP server   the `linear-server` MCP is configured in Claude Code (https://mcp.linear.app/mcp)

Available to connect:
  Slack       boxd integrations connect slack
The Available to connect section lists every catalog integration that’s available on the deployment but not yet connected, with the exact 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:
boxd integrations mcp linear                 # install into all agents (Claude Code, Codex, OpenCode)
boxd integrations mcp linear claude codex    # only these agents
boxd integrations mcp linear --disable       # remove from every agent
The agent ids are 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:
SubcommandCLI (laptop)In-VM CLISSH CLIConsole
list (default)✓✓✓✓
connect <id>✓✓✓✓
disconnect <id>✓✓✓✓
mcp <id> [agents…]✓✓✓✓
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).

Disconnect

boxd integrations disconnect linear
Disconnecting revokes the token at the provider, clears it from boxd, and removes any MCP opt-in. From the console, Disconnect on a card offers the same — with the choice to remove just the MCP server or disconnect the service entirely.