Install Arbos
The Mac app is the quick path. Everything else here is optional: build from source, put Arbos on your iPhone, run your own voice server, or lend a machine to the mesh.
macOS app
- Download
Arbos-<version>.dmgfrom the latest release. Apple silicon and Intel share one build. macOS 11 or newer. - Open the DMG and drag Arbos into Applications.
- Open Arbos. The build is not notarized yet, so macOS may say it cannot verify the developer. Right-click the app and choose Open, or go to System Settings › Privacy & Security and click Open Anyway. You do this once.
- Microphone. The first time you dictate or start a call, macOS asks for microphone access. Click Allow. If you declined, turn it on under System Settings › Privacy & Security › Microphone › Arbos. Arbos shows the current state in Settings › Permissions, with a Test the microphone row.
- Model key. Open Settings › Model, paste an OpenRouter key, and pick a model. OpenAI keys and any OpenAI-compatible endpoint work too.
- Press ⌘T, choose a folder. That folder is now a project with its own agent. Type or hold fn to speak.
The same settings live in a file, if you prefer to edit it:
# ~/.config/arbos/config.toml
provider = "openrouter" # or "openai", or "custom" with api_base
api_key_env = "OPENROUTER_API_KEY" # or api_key = "sk-or-..."
model = "anthropic/claude-opus-5"
From source
You need a Rust nightly toolchain (the repo's rust-toolchain.toml selects it) and, on macOS, Xcode command line tools.
git clone https://github.com/unarbos/arbos.git
cd arbos
# the kernel: runs the agents
cargo install --path crates/arbos-kernel
# the desktop app: finds arbos-kernel in ~/.cargo/bin
cd desktop && cargo install --path .
arbos-desktop
To point the app at a kernel binary somewhere else, set ARBOS_KERNEL_BIN=/path/to/arbos-kernel. The kernel also runs on its own: arbos-kernel serve in a project folder, or arbos-kernel run "task" for a headless turn in CI or a container.
iPhone
The iPhone app is one long full-duplex call with your project, plus the main chat one swipe up. It is not on the App Store yet; you build it with Xcode and install it on your own phone.
- Xcode 16 or newer, an iPhone on iOS 17 or newer, and a free Apple developer team for signing.
- Open
ios/Arbos.xcodeproj. Under Signing & Capabilities, pick your team. - Run
ios/scripts/gen-secrets.shonce. It writes the voice, kernel, and hub URLs and tokens the app will use. - Select your phone as the destination and press Run. Or from a shell:
cd ios && ./scripts/gen-secrets.sh
xcodebuild -scheme Arbos -destination 'platform=iOS,id=<device-id>' \
-allowProvisioningUpdates build
On first launch iOS asks for the microphone; allow it. The kernel picker lists any machine on your mesh hub; pick one and the call starts.
Voice server
Speech runs on a server you control. The voice server is one WebSocket per call: raw audio both ways, plus a text channel and the tools that let the voice model dispatch agents. It has two engines behind the same protocol:
- duplex — one full-duplex speech-to-speech model (NVIDIA Nemotron VoiceChat). Needs a GPU with about 24 GB. This is the GPT Live shape: no turn-taking, natural interruption.
- pipeline — Silero VAD → faster-whisper → the model → Kokoro TTS. Runs on any GPU or a CPU.
cd voice-server
VOICE_HOME=$PWD VOICE_TOKEN=<a long random string> deploy/run.sh
run.sh installs uv, makes a virtual environment, fetches the models, and starts the server on port 8765. Nothing is written outside VOICE_HOME. Then tell the desktop app where it is, in the same config.toml as the model key, and put the same values into ios/scripts/gen-secrets.sh for the phone:
# ~/.config/arbos/config.toml
voice_url = "wss://voice.example.com/ws"
voice_token_env = "VOICE_TOKEN" # or voice_token = "..."
To reach it from anywhere, deploy/cloudflare-tunnel.sh fronts it with a Cloudflare Tunnel.
Add a machine to the mesh
Any machine running the Arbos worker can be used by any of your other Arbos instances: a cloud agent can build iOS on your Mac, your laptop can run a long job on a server. The worker connects outbound to the hub, so no ports need opening.
On the machine you want to offer, with arbos-kernel built and a model key in ~/arbos-hub/config/arbos/config.toml:
ARBOS_HUB=wss://hub-api.arbos.life ARBOS_HUB_TOKEN=<token> \
~/arbos-hub/bin/arbos-kernel worker --dir ~/arbos-hub/projects --machine <name>
Add --cap xcode --cap ios on a Mac with Xcode so agents can find it. Clone the repositories the mesh may work on into ~/arbos-hub/projects/<name>. deploy/hub/worker.sh wraps the same command in a restart loop, and deploy/hub/hub-run.sh runs your own hub if you would rather not use ours.
Stuck? Open an issue with the step you were on. The README on GitHub always has the newest version of these steps.