01
Providers & keys
byok Bring your own key, pick your provider, keep the middleman out. Calls go straight from your machine to the provider you chose; no proxy, no resale, no markup on tokens. Or skip the network entirely and run a local model.
- providers
- 18; openai · anthropic · google · xai · mistral · ollama · …
- routing
- per-model routing across all connected providers
- local models
- ollama and compatible servers, fully offline
- key storage
- local config only; never synced, never uploaded
02
Multi-account rotation
new Long agent runs should not die because one account hit a rate limit. Connect several OAuth accounts; and plain API keys; per provider, each logged in exactly once. When one runs into a usage limit, Unary switches to the next one mid-run: no login window, no re-authentication, no babysitting.
vault.rs auto-switch on limit
fn accounts() -> Vault {
Vault::local()
.oauth("work") // provider account #1
.oauth("private") // provider account #2
.api_key("sk-…") // plain keys rotate exactly the same way
.auto_switch(OnLimit) // usage cap hit → next account, mid-run, no break
}
- accounts
- multiple OAuth logins per provider, side by side
- auth
- once per account; switching never asks for a login again
- switching
- automatic on usage / rate limits, mid-turn
- long runs
- overnight fleets finish instead of stalling at 429s
03
Local index
Built on your machine, kept on your machine, never uploaded. Semantic search for intent, lexical search for exact patterns, and a tree-sitter symbol graph that knows who calls what; rebuilt incrementally on every save.
- cold index
- 12k files in 1.4 s · warm re-index 84 ms
- semantic
- offline embeddings. “where is X handled?”
- lexical
- BM25 + regex, with the enclosing symbol attached
- graph
- callers, implementors, impact, cycles, hotspots
04
Agent fleet
One agent is a demo; a fleet is a workflow. Unary orchestrates up to eight workers in parallel, routes each to the provider you picked, and lets a second worker judge the result before it lands; with per-task budgets instead of surprise invoices.
- workers
- up to 8 in parallel, isolated, patch-based
- verification
- a verifier worker judges every handoff
- budgets
- per-task token ceilings, enforced by the harness
- levels
- routine → multi-file → architectural routing
05
Tool layer
Sixty tools, all Rust, all native: files, shell, git, LSP, a managed Chromium over CDP, real desktop control, persistent memory, and RAG over your own docs. Nothing bolted on through a scripting bridge.
- tools
- 60; read · edit · grep · git · shell · lsp · …
- browser
- managed Chromium, deterministic CDP, fail-closed
- desktop
- native windows, real input, accessibility-first
- knowledge
- memory, docs and research that persist across sessions
06
Remote control
Start a run on the desktop, walk away, steer it from the web app or your phone. Sessions hand off between machines; the relay is end-to-end encrypted and never sees your code.
- steer
- approve, redirect or stop a running session remotely
- handoff
- start on the laptop, finish at the desk
- transport
- end-to-end encrypted; the relay sees ciphertext only
- pairing
- QR pairing, no port forwarding, no config
07
Editor core
A real editor around the agent, not a chat window with a file picker. Tree-sitter highlighting for 24 languages, LSP diagnostics inline, every agent edit as a reviewable diff, and a real terminal and git beside it.
- languages
- 24; rust · ts · python · go · zig · svelte · c/c++ · …
- review
- diff-first: every agent edit lands only after you see it
- terminal
- a real shell with background jobs and watchers
- git
- stage, blame, history without leaving the pane
08
Privacy & control
Built in Switzerland, where privacy is not a marketing slide. The architecture is local-first by construction: your code, your keys and your prompts stay where you put them. Nothing phones home, and the captcha is our own.
- uploaded code
- 0 lines; indexing and inference stay local
- tracking
- none; no analytics, no newsletter, own captcha
- jurisdiction
- Swiss-hosted, European and global providers supported
- offline
- full IDE works unplugged with a local model