# Use your favorite coding agent with any model

> Source: <https://getaivo.dev/>
> Published: 2026-08-20 11:14:55+00:00

### Add a key

Run bare to open the interactive picker, or pass flags for a non-interactive add.

```
  # OpenRouter, Vercel AI Gateway,
# OpenCode Go, DeepSeek, Cloudflare,
# Google AI Studio, Kilo Gateway,
# Amazon Bedrock,
# OAuth: Codex, SuperGrok, GitHub Copilot, Cursor
# Local: Ollama, LM Studio, llama.cpp
# more...
aivo keys add             Copied!
```

Manage API keys. Launch coding agents with the provider and model you want. Or work directly in the built-in Aivo Code.

A single binary for macOS, Linux, WSL, and Windows. Choose the method that fits your system.

```
  curl -fsSL https://getaivo.dev/install.sh | bash             Copied!
irm https://getaivo.dev/install.ps1 | iex             Copied!
brew install yuanchuan/tap/aivo             Copied!
```

Add API keys from any provider you **trust**. Keys are encrypted and stored locally, so you can manage them and switch anytime.

Run bare to open the interactive picker, or pass flags for a non-interactive add.

␃WPNCODE7␃

Move keys between machines through a single password-encrypted file.

```
  # prompts for a password
aivo keys export ~/keys.bak

# same password on the other machine, or pass a URL
aivo keys import ~/keys.bak
aivo keys import https://example.com/keys.bak

# non-interactive (CI / scripts)
aivo keys export ~/keys.bak --password-stdin <<< "my secret"
             Copied!
```

List, activate, inspect, edit, ping, and re-auth saved keys.

```
  # list all saved keys
aivo keys

# quickly add a key with options
aivo keys add --base-url https://openrouter.ai/api --key sk-xxx

# activate a key to use
aivo keys use
aivo keys use mykey

# print saved data of a key
aivo keys cat

# edit a saved key
aivo keys edit

# health-check
aivo keys ping

# OAuth re-login / rotate a key
aivo keys reauth

# for more options
aivo keys --help
             Copied!
```

Launch a coding agent with any provider or model you want. All extra arguments are passed through to the underlying tool.

```
  aivo claude             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the key picker. Pass `-k`

alone with `-m`

to pick both at once.

```
  aivo claude -k openrouter
aivo claude -k copilot
aivo claude -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker. Once a model is applied, `aivo claude`

remembers it for the next run.

```
  aivo claude -m moonshotai/kimi-k2.5
aivo claude -m
             Copied!
```

**Per-slot models** Claude Code runs multiple models in a single session, `haiku`

/`sonnet`

/`opus`

/`fable`

slots plus a subagent override. Pin each slot to a different model, or pass a slot flag without a value to open the picker for that slot.

```
  aivo claude --sonnet-model deepseek-v4-pro --haiku-model deepseek-v4-flash
aivo claude --fable-model gpt-5.4 --subagent-model claude-haiku-4-5

# open the picker for one slot
aivo claude --opus-model
             Copied!
aivo codex             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the picker.

```
  aivo codex -k vercel
aivo codex -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker.

```
  aivo codex -m xiaomi/mimo-v2-pro
aivo codex -m
             Copied!
```

**Per-slot models** Codex runs multiple models in a single session, the main model plus `review`

and `subagent`

overrides. Pin each slot to a different model, or pass a slot flag without a value to open the picker for that slot.

```
  aivo codex --review-model gpt-5.3-codex --subagent-model claude-haiku-4-5

# open the picker for one slot
aivo codex --review-model
             Copied!
```

**Codex desktop app (experimental)** Launch the native Codex with the same backend. The app's in-app model picker only shows names starting with `gpt-`

or `claude-`

; other models still work, but won't appear there.

```
  aivo codex-app
aivo codex-app -k             Copied!
aivo pi             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the picker.

```
  aivo pi -k cursor
aivo pi -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker.

```
  aivo pi -m composer-2.5
aivo pi -m
             Copied!
```

**Transparent mode** Because Pi supports multiple upstream protocols, by default aivo puts its local router in the middle and normalizes the stream. Use `--transparent`

to hand Pi the URL and the right API type so it talks to the provider directly.

```
  aivo pi --transparent -k openrouter
             Copied!
aivo grok             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the picker.

```
  aivo grok -k openrouter
aivo grok -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker.

```
  aivo grok -m gpt-5.4
aivo grok -m
             Copied!
aivo gemini             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the picker.

```
  aivo gemini -k google
aivo gemini -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker.

```
  aivo gemini -m gemini-2.5-pro
aivo gemini -m
             Copied!
aivo opencode             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the picker.

```
  aivo opencode -k openrouter
aivo opencode -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker.

```
  aivo opencode -m z-ai/glm-4.7
aivo opencode -m
             Copied!
```

**Install the plugin first** Amp support ships as a separate plugin. Install it once, then run it like any other agent.

```
  aivo plugins install github:yuanchuan/aivo-amp
aivo amp             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the picker.

```
  aivo amp -k openrouter
aivo amp -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker.

```
  aivo amp -m gpt-5.4
aivo amp -m
             Copied!
```

**Per-mode models** Amp routes between `rush`

, `smart`

, `deep`

, and `large`

modes. Pin each mode to a different model, or pass a mode flag without a value to open the picker for that mode.

```
  aivo amp --smart-model claude-sonnet-4.6 --rush-model claude-haiku-4-5
aivo amp --deep-model gpt-5.4-thinking --large-model deepseek-v4-pro

# pin the starting mode, or omit the value to open the mode picker
aivo amp --mode deep
aivo amp --mode
             Copied!
```

**Install the plugin first** omp support ships as a separate plugin. Install it once, then run it like any other agent.

```
  aivo plugins install github:yuanchuan/aivo-omp
aivo omp             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the picker.

```
  aivo omp -k openrouter
aivo omp -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker.

```
  aivo omp -m deepseek-v4-pro
aivo omp -m
             Copied!
```

**Install the plugin first** GitHub Copilot CLI support ships as a separate plugin. Install it once, then run it like any other agent.

```
  aivo plugins install github:yuanchuan/aivo-copilot
aivo copilot             Copied!
```

Use a saved API key with `-k`

, or omit the value to open the picker.

```
  aivo copilot -k openrouter
aivo copilot -k
             Copied!
```

Pin a model with `-m`

, or omit the value to open the model picker.

```
  aivo copilot -m claude-sonnet-4.6
aivo copilot -m
             Copied!
```

Without a tool name, `aivo run`

opens an interactive picker of agents and plugins, with your last choice selected by default.

```
  aivo run
             Copied!
```

Pin a coding agent and its usual flags under one name, then launch the whole thing with `aivo <name>`

(or the long form, `aivo run <name>`

). Inline flags at run time override the saved ones, handy for locking in the per-slot model setups you'd otherwise retype every session.

```
  # Claude Code with separate models per slot
aivo alias work claude -k openrouter \
--opus-model deepseek/deepseek-v4-pro \
--sonnet-model deepseek/deepseek-v4-flash \
--haiku-model deepseek/deepseek-v4-flash \
# Amp with separate models per mode, pinned to deep mode
aivo alias task amp -k openrouter \
--smart-model openai/gpt-5.5 \
--deep-model anthropic/claude-opus-4.7 \
--rush-model openai/gpt-5.4 \
--large-model deepseek/deepseek-v4-pro

# run them
aivo work
aivo task
             Copied!
```

`aivo code`

is the built-in coding agent in your terminal. It works with any model you've added, from a frontier API to a local GGUF, and extends with skills, MCP servers, and subagents.

`/plan`

, `/goal`

, `/review`

, `/rewind`

, `/config`

, and more. `--share`

or `/share`

. Start the TUI, pick a key, resume a prior session, or live-share it.

```
  aivo code

# open the key picker
aivo code -k
# resume a saved session
aivo code --resume
aivo code --resume last

# live-share the session to a viewer URL
aivo code --share
             Copied!
```

Queue text files or images for the agent to read. Pass `--attach`

as many times as you need, or paste an image straight from the clipboard with `Ctrl+V`

in the session.

```
  aivo code --attach README.md
aivo code --attach README.md --attach screenshot.png
             Copied!
```

Send one prompt and exit with a plain reply — no tools. The shortcut is a bare quoted string: `aivo "..."`

rewrites to `aivo code -p "..."`

. Use `-p`

/`--prompt`

when you also want flags.

```
  aivo "pro tips for git"
aivo -p "pro tips for git" -m gpt-5.4

# type interactively, Ctrl-D to send
aivo -p
             Copied!
```

Pipe anything into aivo. It reads stdin, adds your prompt, and sends it to the model.

```
  git diff | aivo -p "Write a commit message"
cat error.log | aivo -p "Find the root cause"
cat error.log | aivo -p
             Copied!
```

Once you add a provider and set up the key, you can use the `models`

command to see the available models the provider offers. Most providers provide the model list through API, so aivo fetches it on demand and caches it for later use.

Fetches the active key's model list (cached). Filter with `-s`

, or pick another key with `-k`

.

```
  # active key's models, or pick one
aivo models
aivo models -k openrouter

# filter by name
aivo models -s free
aivo models -k openrouter -s claude

# force refresh the cached list
aivo models --refresh
             Copied!
```

`--json`

prints aivo's normalized catalog for scripts — not the raw upstream payload. Pipe to `jq`

to explore and filter.

```
  aivo models --json
aivo models -k openrouter --json | jq
             Copied!
```

If a model name is too long, you can give it a short alias. Model aliases are accepted anywhere `-m`

/`--model`

works.

```
  aivo alias fast=claude-haiku-4-5
aivo alias mimo xiaomi/mimo-v2-pro

# use it
aivo claude -m fast
aivo code -k vercel -m mimo

# list and remove
aivo alias
aivo alias rm fast
             Copied!
```

Run any open-weight GGUF from a Hugging Face repo or a local `.gguf`

file. The `hf:`

prefix, full HF URLs, and plain file paths work anywhere a model name does — in `aivo code`

, an agent's `-m`

, or the bare `aivo`

shortcut.

Point `aivo`

, `aivo code`

, or an agent's `-m`

at a repo or a local `.gguf`

file. The first reference caches the model and starts a local server.

```
  aivo hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF
aivo https://huggingface.co/allenai/Olmo-3-1025-7B

# a local .gguf works too
aivo code -m ./Qwen2.5-0.5B-Instruct-Q4_K_M.gguf
             Copied!
```

GGUF repos usually publish several quantizations. Append `:<quant>`

(e.g. `Q5_K_M`

, `Q4_K_M`

) to pick a specific file; if you don't, aivo defaults to `Q4_K_M`

(or the closest available).

```
  aivo code -m hf:bartowski/Llama-3.2-3B-Instruct-GGUF:Q5_K_M
aivo claude -m hf:bartowski/Llama-3.2-3B-Instruct-GGUF:Q4_K_M
             Copied!
```

aivo picks sane defaults for the bundled `llama-server`

. Set these env vars to override them.

```
  AIVO_LLAMA_CTX=16384 # smaller context on a low-RAM machine
AIVO_LLAMA_NGL=20 # GPU layers (AIVO_GPU=cpu to stay on CPU)
AIVO_LLAMA_ARGS='--temp 0.1' # extra llama-server flags
AIVO_LLAMA_MMPROJ=off # skip the vision projector
AIVO_LLAMA_DRAFT=off # skip the draft model
             Copied!
```

Pass `hf:`

wherever `-m`

/`--model`

is accepted. Combine with per-slot flags for Claude Code and Amp to mix local and remote models in the same session.

```
  aivo claude -m hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF
aivo pi -m hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF

# mix: remote opus, local sonnet
aivo claude \
--opus-model claude-opus-4.7 \
--sonnet-model hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF
             Copied!
```

A bare `hf:`

opens a picker over the local cache — useful once you've pulled a few models and don't want to retype the repo path.

```
  aivo code hf:
aivo claude hf:
             Copied!
```

`aivo hf`

lists the cached repos; `--verbose`

expands each repo to show every downloaded quant. The rest are housekeeping commands.

```
  # list cached repos
aivo hf

# pre-pull a model (handy before going offline)
aivo hf pull hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF

# delete one quant or a whole repo
aivo hf rm <repo> --quant Q5_K_M
aivo hf rm <repo> --all -y
# wipe the whole cache
aivo hf clean -y
             Copied!
```

Expose your active provider as a local OpenAI-compatible endpoint. Any tool that speaks the OpenAI API can use it, VS Code extensions, Python scripts, anything.

Listen on localhost by default. Change port/host when you need LAN or a different bind.

```
  aivo serve
aivo serve --port 8080
aivo serve --host 0.0.0.0
             Copied!
```

If a request hits a rate limit (429) or server error (5xx), aivo retries with the next saved key automatically.

```
  aivo serve --failover
             Copied!
```

Log every request and response. Pipe to `jq`

for readable output, or write to a file.

```
  aivo serve --log | jq .
aivo serve --log /tmp/requests.jsonl
             Copied!
```

Require a token for clients, enable CORS for browser tools, or tighten the upstream timeout.

```
  aivo serve --auth-token
aivo serve --auth-token my-secret
aivo serve --cors
aivo serve --timeout 60
             Copied!
```

Point any OpenAI-compatible client at the local endpoint — curl works as a quick sanity check.

```
  curl http://127.0.0.1:24860/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "hello"}]}'             Copied!
```

One feed across aivo's own events (code, run, serve), native CLI sessions (claude, codex, gemini, pi, opencode), and amp threads, read from each tool's on-disk session files and aivo's local SQLite. Scoped to the current project by default.

Newest first in the current project. Pass `--all`

to include every project on this machine.

```
  # recent activity in the current project
aivo logs

# every project on this machine
aivo logs --all
             Copied!
```

Narrow by source, model, key, time, or text. `--errors`

shows only failures.

```
  aivo logs --by code -n 5
aivo logs --by claude --errors
aivo logs --by native
aivo logs --model glm-4.7
aivo logs -s "rate limit"
aivo logs --since 24h
aivo logs --json
             Copied!
```

Publish a session via a tunneled viewer URL, useful for showing a teammate a bug repro, an agent transcript, or an interesting model run.

The server is just a bridge, it forwards viewer requests to your machine over the tunnel and keeps no copy of the session.

```
  # pick a session in the current project
aivo logs share

# share a specific row by id prefix
aivo logs share 1335c631

# pick from every project on this machine
aivo logs share --all
# follow updates and open in the browser
aivo logs share --open
# skip redaction (be sure)
aivo logs share --no-redact
             Copied!
```

Aggregates token counts from aivo code, Claude Code, Codex, Gemini, OpenCode, Amp, and Pi by reading each tool's native data files.

```
  aivo stats
aivo stats claude
aivo stats code
             Copied!
```

Raw numbers, provider filters, time windows, and cache bypass for scripting.

```
  # raw numbers for scripts
aivo stats -n
# filter by provider
aivo stats -s openrouter

# last N units (m, h, d, w)
aivo stats --since 7d
aivo stats claude --since 24h

# show all models
aivo stats -a
# bypass cache
aivo stats -r
             Copied!
```

What a typical `aivo stats`

summary looks like.

``` bash
  $ aivo stats
────────────────────────────────────────────────────
408M tokens · 14B cached · 5.0K sessions · 77 models

By tool  sessions tokens
claude       4.2K   295M ████████████████████
codex         256    87M █████▉
opencode      166    10M ▊
code           91   8.0M ▌
gemini        204   4.2M ▎
pi             85   3.8M ▎

By model                  tokens
gpt-5.4                      75M ████████████████████
minimax-m2.5                 63M ████████████████▊
claude-sonnet-4.6            53M ██████████████▏
claude-opus-4.6              40M ██████████▋
minimax-m2.7                 38M ██████████▏
claude-opus-4.7              31M ████████▏
laguna-xs-2.1                22M █████▉
claude-haiku-4-5-20251001    14M ███▉
kimi-k2.5:cloud              11M ██▉
claude-sonnet-4.5           6.6M █▊
gpt-5.3-codex               6.1M █▋
glm-4.7-free                6.0M █▋
glm-4.7                     5.0M █▍
mercury-2                   4.3M █▏
deepseek-v4-flash           3.7M █
gpt-5.5                     3.6M █
kimi-k2.5                   2.0M ▌
starter                     1.8M ▌
gpt-5.1-codex               1.5M ▍
kat-coder-pro-v1            1.4M ▍
others (57 models)          9.8M ██▋             Copied!
```

Try aivo without setting up a provider first. `aivo-starter`

bundles a couple of models **for learning and testing**, enough to feel how aivo works before you bring your own key.

`aivo/starter`

DeepSeek V4 Flash · official API A general-purpose default for everyday tasks. `poolside/laguna-s-2.1`

Laguna S 2.1 · Once aivo is installed, you can use it straight away.

```
  aivo "tell me a short story"
aivo code             Copied!
```

Link your device to an account for higher daily limits on the starter pool.

```
  aivo account login
aivo account usage             Copied!
```

The starter pool has a finite daily budget, intended for interactive coding-agent sessions. For regular or automated use, please add your own API key.

`aivo update`

detects whether you installed via Homebrew or the install script and updates accordingly. Failed updates are rolled back automatically; a manual rollback is available if a new version misbehaves.

```
  aivo update

# force update even if installed via a package manager
aivo update --force
# restore the previous version from the last backup
aivo update --rollback
             Copied!
```

Model limits come from [models.dev](https://models.dev) and ship baked into each release. `--sync-model-data`

refreshes that snapshot between releases without touching the binary.

```
  aivo update --sync-model-data             Copied!
```


