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 sidecar
A dedicated index process beside the editor, with a bundled embedding model that runs on your own GPU — in its default configuration no code leaves the machine. One query runs the lanes together; embeddings for intent, BM25 and exact tags for names, path trigrams for files, and a tree-sitter symbol graph that knows who calls what. The fused candidates are re-ranked by graph weight and proximity, and changed files are reindexed in the background on every save.
- cold build
- 285 files → 6.5k chunks + 946 symbols in 63 s, empty cache
- rebuild
- 4.5 s on a warm embedding cache · queries 5–90 ms end-to-end
- on disk
- 23 MB for this repository, stored next to the code
- lanes
- dense chunk & symbol · BM25 · exact tags · path trigram · graph
- embeddings
- bundled granite-97m, GPU-accelerated, local by default
- graph
- callers, implementors, dependents, impact, cycles, hotspots
- orientation
- repo map and code context: repo → package → module → file → symbol
- reads
- symbol-scoped bodies with drift reporting instead of whole files
- freshness
- incremental refresh on save; searches report staleness, never block
- linked folders
- sibling repos keep their own index, reused across sessions
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