1. Requirements
- git, on PATH.
- A launcher —
claude(Claude Code) by default;opencodeorcodexoptionally. ghand/orglab, already authenticated for the repositories you want worked.- A Ironway account with access to the projects this host will serve.
- Optional: TeamClaude (several Claude accounts pooled), Tower (swarms), tmux.
Would rather not run agents on your own computer? One command gives a project a cloud machine of its own: conductor host new, in step 5 and the cloud guide.
2. Download
The install script detects your platform, verifies the published SHA-256 and installs without sudo.
curl -fsSL https://switchyard.work/install/conductor.sh | shLatest published build: 963b561, built 2026-11-05 02:28 UTC — the build Ironway's version pointer serves.
| Platform | SHA-256 | Download |
|---|---|---|
| macOS (Apple silicon) darwin/arm64 | cc9aab83b3a0b228730e9f29fac48a8320210d8645b0b281051d22a11ae39186 |
Download.sha256 |
| macOS (Intel) darwin/amd64 | 64964bc65dbad813e2dc1577a62ad1b150000f975bad7d681625724fe77ed883 |
Download.sha256 |
| Linux (x86-64) linux/amd64 | c381c760d49dec4d721723ba5a48536c15e6a99c6bfaa4af0b6465539946d08d |
Download.sha256 |
| Linux (arm64) linux/arm64 | 43b9c23f0c1d117af30a553ec78c58272e3bd09a857d0924273957da8a520daa |
Download.sha256 |
macOS may quarantine a downloaded binary. Clear it with xattr -d com.apple.quarantine ./conductor. Or build from source: install Go and run make build.
3. First run
conductor init writes ~/.switchyard-conductor/config.json, signs you in through the browser if it finds no credential, offers the projects you can reach, and finishes by running doctor.
conductor init && conductor doctorA passing doctor names every resolved fact about the host — the launcher it found, the forge CLIs, the projects, the spend caps — and prints no secret. Then start it:
conductor serve4. Add a project
Four forms, depending on what you have:
conductor project add— pick from the projects you can reach on Ironway.conductor project add acme/widget— name the workspace and project (the Ironway slugs, not the GitHub owner and repository).conductor project add ~/code/widget— use a checkout you already have.conductor project add <clone-url> --into ~/code/widget— clone it first.
A repository can commit its own defaults in .conductor/project.json — roles, caps — so a new host serves it the same way without being told. The commands a host runs, like verify_command, stay the host's to set: a repository that could set them could make every host that serves it run anything.
5. Run as a service
macOS: a launchd plist in ~/Library/LaunchAgents. Linux: a systemd user unit. Both run conductor serve behind a doctor preflight and restart it on failure; the conductor's repository ships both files.
Or on a machine of its own, in one command
With OpenTofu installed and a Hetzner Cloud account, this makes the machine, waits while it installs itself, and ends in its setup questions in the same terminal:
conductor host new widget-1It asks which of your Ironway projects the machine works, unless --project my-workspace/my-project names one. It finds your ssh key itself, including one in 1Password, and prints which it used.
- Nothing is cloned and nothing is compiled. The machine installs this same published binary, checks its SHA-256, and runs
conductor host bootstrap, which it carries inside it. The service it sets up updates on thereleasechannel. - The setup questions come from
conductor host setupon the machine: the Claude token fromclaude setup-token, a GitHub sign-in, the Ironway sign-in, each project's verify command, then oneteamclaude loginper Claude Max account. It asks only for what it cannot find, so running it again resumes. - The Hetzner token is never saved. Use a Hetzner project that holds only these machines, because a token reaches every server in its project. The command reads an exported
HCLOUD_TOKEN, thenhetzner_token_commandfrom your config, then 1Password, and otherwise asks with the input hidden. - Fewer questions: with the 1Password CLI installed, it reads items named
Hetzner,Claude,GitHubandIronwayfrom a vault calledIronway;onepassword_vaultnames another. Or putCLAUDE_CODE_OAUTH_TOKEN,IRONWAY_API_TOKENandGH_TOKENin a file on your own machine and add--env that-file. Either way they travel only over ssh, never into the machine's definition or a log. A browser approval per Claude Max account is the one thing neither can answer. - Its own GitHub account: give each machine a GitHub account of its own with write access to its repositories, so its work is attributed to it and it has its own API budget. The cloud guide shows how.
- Afterwards:
conductor tunnel ops@<address>opens its dashboard here,conductor host listnames what you made, andconductor host destroy widget-1removes it.
Repeat --project to put several projects on one machine, or add --tower, --roundhouse <url> or --teamclaude=false. The cloud guide walks every step and every problem a real host has hit.
6. Keep it current
conductor update— on thereleasechannel it downloads a published build and verifies its checksum, with no Go toolchain; onsourceit rebuilds from a checkout.conductor update -check— says whether this binary is behind, and exits.conductor init --auto-update— update on its own when a new build is published.
7. Credentials
The conductor looks for a Ironway token in this order:
IRONWAY_API_TOKEN(or the olderSWITCHYARD_API_TOKEN) in the environment.- The conductor's own
tokens.json, written byconductor login. - switchyard-mcp's
tokens.json— one browser login serves both tools.
Two rules hold whatever you configure: the config is never printed — not by the binary, not by its diagnostics — and a credential never sits in it: every secret is a reference to a sealed store, and the loader refuses one written inline. Configuration has every setting.
What it does once it is running
The roles it can start, and the evidence it decides from.