/ documentation

Connections

Let the agents on your machines use your Linear and GitHub. You connect a service once, from your phone; no key or token ever exists inside a machine.

How it works

A connection is your account's link to one service. You create it in the ironwire app by approving the service's own consent page; the platform stores the resulting credential encrypted and never hands it to a machine. When an agent uses the service, the platform adds the credential on the way out.

Connecting grants nothing by itself. Each machine gets a connection only when you attach it, or approve a request the machine sends you. A machine with no attachment can reach nothing, and what one machine was given is unreachable from another.

An attached machine gets everything the service offers your account: ironwire passes the service's own tools through unchanged and does not filter what an agent may do with them. Whether to trust an agent with a service is your call, made when you attach or approve. For GitHub you also choose which repositories each machine gets.

Connect a service

In the ironwire app: Settings → Connections → +, pick the service, and approve on its page. You can connect the same service twice under different names (a work and a personal workspace).

Connecting happens only in the app. Everything after that also works over SSH.

Attach it to machines

ssh

$ ssh dashboard@ironwire.sh conn attach linear scout
attached linear to scout — live now
$ ssh dashboard@ironwire.sh conn attach github scout --repo acme/api --repo acme/web
attached github to scout — live now

app

Open the machine, then Connections, and switch a connection on. For GitHub, pick the repositories, or choose All repositories.

Attaching and detaching take effect immediately, with no restart. conn list shows every connection and where it is attached; conn rm removes a connection everywhere and revokes it at the service in one step, so access can always be withdrawn from a terminal.

When an agent asks

An agent that needs a service its machine does not have can ask for it. Your phone gets a notification; you approve (connecting the service first, if you never have), and the agent carries on where it stopped. Nothing is ever granted without your tap, and a machine can only ask for itself.

inside the machine

$ ironwire conn request github --repo acme/api
github is attached as "github"

app

Tap the notification, or open the pending request on the machine list. Approve as asked, change the repositories, or decline.

The request waits up to four minutes for your answer. If it is still open after that, the agent asks again without ringing your phone a second time. Requests expire after fifteen minutes.

Using a connection from inside a machine

Agents that speak the Model Context Protocol (Claude Code, Codex, Gemini) find an ironwire tool server already registered on every machine, with no setup: connections_list, connections_request, connections_tools and connections_call. Any other agent, or a script, uses the same capability as commands:

$ ironwire conn list
$ ironwire conn tools linear
$ ironwire conn call linear list_issues '{"limit": 10}'

The tools are the service's own, listed and run exactly as the service defines them. Your own programs can also call a service's API with no key through CONN_<NAME>_URL, for example $CONN_LINEAR_URL/graphql. That variable is set on the machine's next restart; the address itself works as soon as the connection is attached.

GitHub: git just works

With GitHub attached, ordinary git against normal GitHub addresses needs no login, key or token:

$ git clone https://github.com/acme/api
$ git push

Only the repositories you chose for that machine are reachable; any other looks like it does not exist. Choosing all repositories (--all-repos) gives the machine everything the connection can reach, including repositories you add to it later; a machine cannot ask for that, only you can give it. Pull requests and issues are available to agents as tools. The gh command is not logged in.

The GitHub connection is an app installed on your account, so you choose at install time which repositories ironwire can ever see, and pushes and pull requests made through it appear as the app acting on your behalf.

What is never on the machine

The service credential. A scan of an attached machine's disk, environment and processes finds no token, because none is ever sent there: the tools run through the platform, and git and API traffic gets its credential added after it has left the machine. An agent that leaks everything it can see leaks no access to your services.