{"slug": "use-your-favorite-coding-agent-with-any-model", "title": "Use your favorite coding agent with any model", "summary": "Aivo released a command-line tool that lets developers launch coding agents such as Claude Code, Codex, and Pi with any model from providers including OpenRouter, Vercel AI Gateway, DeepSeek, Cloudflare, Google AI Studio, Amazon Bedrock, and local options like Ollama and LM Studio. The single binary for macOS, Linux, WSL, and Windows manages encrypted API keys locally, supports per-slot model pinning for multi-model sessions, and offers key export/import via a password-encrypted file.", "body_md": "### Add a key\n\nRun bare to open the interactive picker, or pass flags for a non-interactive add.\n\n```\n  # OpenRouter, Vercel AI Gateway,\n# OpenCode Go, DeepSeek, Cloudflare,\n# Google AI Studio, Kilo Gateway,\n# Amazon Bedrock,\n# OAuth: Codex, SuperGrok, GitHub Copilot, Cursor\n# Local: Ollama, LM Studio, llama.cpp\n# more...\naivo keys add             Copied!\n```\n\nManage API keys. Launch coding agents with the provider and model you want. Or work directly in the built-in Aivo Code.\n\nA single binary for macOS, Linux, WSL, and Windows. Choose the method that fits your system.\n\n```\n  curl -fsSL https://getaivo.dev/install.sh | bash             Copied!\nirm https://getaivo.dev/install.ps1 | iex             Copied!\nbrew install yuanchuan/tap/aivo             Copied!\n```\n\nAdd API keys from any provider you **trust**. Keys are encrypted and stored locally, so you can manage them and switch anytime.\n\nRun bare to open the interactive picker, or pass flags for a non-interactive add.\n\n␃WPNCODE7␃\n\nMove keys between machines through a single password-encrypted file.\n\n```\n  # prompts for a password\naivo keys export ~/keys.bak\n\n# same password on the other machine, or pass a URL\naivo keys import ~/keys.bak\naivo keys import https://example.com/keys.bak\n\n# non-interactive (CI / scripts)\naivo keys export ~/keys.bak --password-stdin <<< \"my secret\"\n             Copied!\n```\n\nList, activate, inspect, edit, ping, and re-auth saved keys.\n\n```\n  # list all saved keys\naivo keys\n\n# quickly add a key with options\naivo keys add --base-url https://openrouter.ai/api --key sk-xxx\n\n# activate a key to use\naivo keys use\naivo keys use mykey\n\n# print saved data of a key\naivo keys cat\n\n# edit a saved key\naivo keys edit\n\n# health-check\naivo keys ping\n\n# OAuth re-login / rotate a key\naivo keys reauth\n\n# for more options\naivo keys --help\n             Copied!\n```\n\nLaunch a coding agent with any provider or model you want. All extra arguments are passed through to the underlying tool.\n\n```\n  aivo claude             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the key picker. Pass `-k`\n\nalone with `-m`\n\nto pick both at once.\n\n```\n  aivo claude -k openrouter\naivo claude -k copilot\naivo claude -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker. Once a model is applied, `aivo claude`\n\nremembers it for the next run.\n\n```\n  aivo claude -m moonshotai/kimi-k2.5\naivo claude -m\n             Copied!\n```\n\n**Per-slot models** Claude Code runs multiple models in a single session, `haiku`\n\n/`sonnet`\n\n/`opus`\n\n/`fable`\n\nslots 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.\n\n```\n  aivo claude --sonnet-model deepseek-v4-pro --haiku-model deepseek-v4-flash\naivo claude --fable-model gpt-5.4 --subagent-model claude-haiku-4-5\n\n# open the picker for one slot\naivo claude --opus-model\n             Copied!\naivo codex             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the picker.\n\n```\n  aivo codex -k vercel\naivo codex -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker.\n\n```\n  aivo codex -m xiaomi/mimo-v2-pro\naivo codex -m\n             Copied!\n```\n\n**Per-slot models** Codex runs multiple models in a single session, the main model plus `review`\n\nand `subagent`\n\noverrides. Pin each slot to a different model, or pass a slot flag without a value to open the picker for that slot.\n\n```\n  aivo codex --review-model gpt-5.3-codex --subagent-model claude-haiku-4-5\n\n# open the picker for one slot\naivo codex --review-model\n             Copied!\n```\n\n**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-`\n\nor `claude-`\n\n; other models still work, but won't appear there.\n\n```\n  aivo codex-app\naivo codex-app -k             Copied!\naivo pi             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the picker.\n\n```\n  aivo pi -k cursor\naivo pi -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker.\n\n```\n  aivo pi -m composer-2.5\naivo pi -m\n             Copied!\n```\n\n**Transparent mode** Because Pi supports multiple upstream protocols, by default aivo puts its local router in the middle and normalizes the stream. Use `--transparent`\n\nto hand Pi the URL and the right API type so it talks to the provider directly.\n\n```\n  aivo pi --transparent -k openrouter\n             Copied!\naivo grok             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the picker.\n\n```\n  aivo grok -k openrouter\naivo grok -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker.\n\n```\n  aivo grok -m gpt-5.4\naivo grok -m\n             Copied!\naivo gemini             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the picker.\n\n```\n  aivo gemini -k google\naivo gemini -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker.\n\n```\n  aivo gemini -m gemini-2.5-pro\naivo gemini -m\n             Copied!\naivo opencode             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the picker.\n\n```\n  aivo opencode -k openrouter\naivo opencode -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker.\n\n```\n  aivo opencode -m z-ai/glm-4.7\naivo opencode -m\n             Copied!\n```\n\n**Install the plugin first** Amp support ships as a separate plugin. Install it once, then run it like any other agent.\n\n```\n  aivo plugins install github:yuanchuan/aivo-amp\naivo amp             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the picker.\n\n```\n  aivo amp -k openrouter\naivo amp -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker.\n\n```\n  aivo amp -m gpt-5.4\naivo amp -m\n             Copied!\n```\n\n**Per-mode models** Amp routes between `rush`\n\n, `smart`\n\n, `deep`\n\n, and `large`\n\nmodes. Pin each mode to a different model, or pass a mode flag without a value to open the picker for that mode.\n\n```\n  aivo amp --smart-model claude-sonnet-4.6 --rush-model claude-haiku-4-5\naivo amp --deep-model gpt-5.4-thinking --large-model deepseek-v4-pro\n\n# pin the starting mode, or omit the value to open the mode picker\naivo amp --mode deep\naivo amp --mode\n             Copied!\n```\n\n**Install the plugin first** omp support ships as a separate plugin. Install it once, then run it like any other agent.\n\n```\n  aivo plugins install github:yuanchuan/aivo-omp\naivo omp             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the picker.\n\n```\n  aivo omp -k openrouter\naivo omp -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker.\n\n```\n  aivo omp -m deepseek-v4-pro\naivo omp -m\n             Copied!\n```\n\n**Install the plugin first** GitHub Copilot CLI support ships as a separate plugin. Install it once, then run it like any other agent.\n\n```\n  aivo plugins install github:yuanchuan/aivo-copilot\naivo copilot             Copied!\n```\n\nUse a saved API key with `-k`\n\n, or omit the value to open the picker.\n\n```\n  aivo copilot -k openrouter\naivo copilot -k\n             Copied!\n```\n\nPin a model with `-m`\n\n, or omit the value to open the model picker.\n\n```\n  aivo copilot -m claude-sonnet-4.6\naivo copilot -m\n             Copied!\n```\n\nWithout a tool name, `aivo run`\n\nopens an interactive picker of agents and plugins, with your last choice selected by default.\n\n```\n  aivo run\n             Copied!\n```\n\nPin a coding agent and its usual flags under one name, then launch the whole thing with `aivo <name>`\n\n(or the long form, `aivo run <name>`\n\n). Inline flags at run time override the saved ones, handy for locking in the per-slot model setups you'd otherwise retype every session.\n\n```\n  # Claude Code with separate models per slot\naivo alias work claude -k openrouter \\\n--opus-model deepseek/deepseek-v4-pro \\\n--sonnet-model deepseek/deepseek-v4-flash \\\n--haiku-model deepseek/deepseek-v4-flash \\\n# Amp with separate models per mode, pinned to deep mode\naivo alias task amp -k openrouter \\\n--smart-model openai/gpt-5.5 \\\n--deep-model anthropic/claude-opus-4.7 \\\n--rush-model openai/gpt-5.4 \\\n--large-model deepseek/deepseek-v4-pro\n\n# run them\naivo work\naivo task\n             Copied!\n```\n\n`aivo code`\n\nis 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.\n\n`/plan`\n\n, `/goal`\n\n, `/review`\n\n, `/rewind`\n\n, `/config`\n\n, and more. `--share`\n\nor `/share`\n\n. Start the TUI, pick a key, resume a prior session, or live-share it.\n\n```\n  aivo code\n\n# open the key picker\naivo code -k\n# resume a saved session\naivo code --resume\naivo code --resume last\n\n# live-share the session to a viewer URL\naivo code --share\n             Copied!\n```\n\nQueue text files or images for the agent to read. Pass `--attach`\n\nas many times as you need, or paste an image straight from the clipboard with `Ctrl+V`\n\nin the session.\n\n```\n  aivo code --attach README.md\naivo code --attach README.md --attach screenshot.png\n             Copied!\n```\n\nSend one prompt and exit with a plain reply — no tools. The shortcut is a bare quoted string: `aivo \"...\"`\n\nrewrites to `aivo code -p \"...\"`\n\n. Use `-p`\n\n/`--prompt`\n\nwhen you also want flags.\n\n```\n  aivo \"pro tips for git\"\naivo -p \"pro tips for git\" -m gpt-5.4\n\n# type interactively, Ctrl-D to send\naivo -p\n             Copied!\n```\n\nPipe anything into aivo. It reads stdin, adds your prompt, and sends it to the model.\n\n```\n  git diff | aivo -p \"Write a commit message\"\ncat error.log | aivo -p \"Find the root cause\"\ncat error.log | aivo -p\n             Copied!\n```\n\nOnce you add a provider and set up the key, you can use the `models`\n\ncommand 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.\n\nFetches the active key's model list (cached). Filter with `-s`\n\n, or pick another key with `-k`\n\n.\n\n```\n  # active key's models, or pick one\naivo models\naivo models -k openrouter\n\n# filter by name\naivo models -s free\naivo models -k openrouter -s claude\n\n# force refresh the cached list\naivo models --refresh\n             Copied!\n```\n\n`--json`\n\nprints aivo's normalized catalog for scripts — not the raw upstream payload. Pipe to `jq`\n\nto explore and filter.\n\n```\n  aivo models --json\naivo models -k openrouter --json | jq\n             Copied!\n```\n\nIf a model name is too long, you can give it a short alias. Model aliases are accepted anywhere `-m`\n\n/`--model`\n\nworks.\n\n```\n  aivo alias fast=claude-haiku-4-5\naivo alias mimo xiaomi/mimo-v2-pro\n\n# use it\naivo claude -m fast\naivo code -k vercel -m mimo\n\n# list and remove\naivo alias\naivo alias rm fast\n             Copied!\n```\n\nRun any open-weight GGUF from a Hugging Face repo or a local `.gguf`\n\nfile. The `hf:`\n\nprefix, full HF URLs, and plain file paths work anywhere a model name does — in `aivo code`\n\n, an agent's `-m`\n\n, or the bare `aivo`\n\nshortcut.\n\nPoint `aivo`\n\n, `aivo code`\n\n, or an agent's `-m`\n\nat a repo or a local `.gguf`\n\nfile. The first reference caches the model and starts a local server.\n\n```\n  aivo hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF\naivo https://huggingface.co/allenai/Olmo-3-1025-7B\n\n# a local .gguf works too\naivo code -m ./Qwen2.5-0.5B-Instruct-Q4_K_M.gguf\n             Copied!\n```\n\nGGUF repos usually publish several quantizations. Append `:<quant>`\n\n(e.g. `Q5_K_M`\n\n, `Q4_K_M`\n\n) to pick a specific file; if you don't, aivo defaults to `Q4_K_M`\n\n(or the closest available).\n\n```\n  aivo code -m hf:bartowski/Llama-3.2-3B-Instruct-GGUF:Q5_K_M\naivo claude -m hf:bartowski/Llama-3.2-3B-Instruct-GGUF:Q4_K_M\n             Copied!\n```\n\naivo picks sane defaults for the bundled `llama-server`\n\n. Set these env vars to override them.\n\n```\n  AIVO_LLAMA_CTX=16384 # smaller context on a low-RAM machine\nAIVO_LLAMA_NGL=20 # GPU layers (AIVO_GPU=cpu to stay on CPU)\nAIVO_LLAMA_ARGS='--temp 0.1' # extra llama-server flags\nAIVO_LLAMA_MMPROJ=off # skip the vision projector\nAIVO_LLAMA_DRAFT=off # skip the draft model\n             Copied!\n```\n\nPass `hf:`\n\nwherever `-m`\n\n/`--model`\n\nis accepted. Combine with per-slot flags for Claude Code and Amp to mix local and remote models in the same session.\n\n```\n  aivo claude -m hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF\naivo pi -m hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF\n\n# mix: remote opus, local sonnet\naivo claude \\\n--opus-model claude-opus-4.7 \\\n--sonnet-model hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF\n             Copied!\n```\n\nA bare `hf:`\n\nopens a picker over the local cache — useful once you've pulled a few models and don't want to retype the repo path.\n\n```\n  aivo code hf:\naivo claude hf:\n             Copied!\n```\n\n`aivo hf`\n\nlists the cached repos; `--verbose`\n\nexpands each repo to show every downloaded quant. The rest are housekeeping commands.\n\n```\n  # list cached repos\naivo hf\n\n# pre-pull a model (handy before going offline)\naivo hf pull hf:Qwen/Qwen2.5-0.5B-Instruct-GGUF\n\n# delete one quant or a whole repo\naivo hf rm <repo> --quant Q5_K_M\naivo hf rm <repo> --all -y\n# wipe the whole cache\naivo hf clean -y\n             Copied!\n```\n\nExpose 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.\n\nListen on localhost by default. Change port/host when you need LAN or a different bind.\n\n```\n  aivo serve\naivo serve --port 8080\naivo serve --host 0.0.0.0\n             Copied!\n```\n\nIf a request hits a rate limit (429) or server error (5xx), aivo retries with the next saved key automatically.\n\n```\n  aivo serve --failover\n             Copied!\n```\n\nLog every request and response. Pipe to `jq`\n\nfor readable output, or write to a file.\n\n```\n  aivo serve --log | jq .\naivo serve --log /tmp/requests.jsonl\n             Copied!\n```\n\nRequire a token for clients, enable CORS for browser tools, or tighten the upstream timeout.\n\n```\n  aivo serve --auth-token\naivo serve --auth-token my-secret\naivo serve --cors\naivo serve --timeout 60\n             Copied!\n```\n\nPoint any OpenAI-compatible client at the local endpoint — curl works as a quick sanity check.\n\n```\n  curl http://127.0.0.1:24860/v1/chat/completions \\\n-H \"Content-Type: application/json\" \\\n-d '{\"model\": \"gpt-4o\", \"messages\": [{\"role\": \"user\", \"content\": \"hello\"}]}'             Copied!\n```\n\nOne 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.\n\nNewest first in the current project. Pass `--all`\n\nto include every project on this machine.\n\n```\n  # recent activity in the current project\naivo logs\n\n# every project on this machine\naivo logs --all\n             Copied!\n```\n\nNarrow by source, model, key, time, or text. `--errors`\n\nshows only failures.\n\n```\n  aivo logs --by code -n 5\naivo logs --by claude --errors\naivo logs --by native\naivo logs --model glm-4.7\naivo logs -s \"rate limit\"\naivo logs --since 24h\naivo logs --json\n             Copied!\n```\n\nPublish a session via a tunneled viewer URL, useful for showing a teammate a bug repro, an agent transcript, or an interesting model run.\n\nThe server is just a bridge, it forwards viewer requests to your machine over the tunnel and keeps no copy of the session.\n\n```\n  # pick a session in the current project\naivo logs share\n\n# share a specific row by id prefix\naivo logs share 1335c631\n\n# pick from every project on this machine\naivo logs share --all\n# follow updates and open in the browser\naivo logs share --open\n# skip redaction (be sure)\naivo logs share --no-redact\n             Copied!\n```\n\nAggregates token counts from aivo code, Claude Code, Codex, Gemini, OpenCode, Amp, and Pi by reading each tool's native data files.\n\n```\n  aivo stats\naivo stats claude\naivo stats code\n             Copied!\n```\n\nRaw numbers, provider filters, time windows, and cache bypass for scripting.\n\n```\n  # raw numbers for scripts\naivo stats -n\n# filter by provider\naivo stats -s openrouter\n\n# last N units (m, h, d, w)\naivo stats --since 7d\naivo stats claude --since 24h\n\n# show all models\naivo stats -a\n# bypass cache\naivo stats -r\n             Copied!\n```\n\nWhat a typical `aivo stats`\n\nsummary looks like.\n\n``` bash\n  $ aivo stats\n────────────────────────────────────────────────────\n408M tokens · 14B cached · 5.0K sessions · 77 models\n\nBy tool  sessions tokens\nclaude       4.2K   295M ████████████████████\ncodex         256    87M █████▉\nopencode      166    10M ▊\ncode           91   8.0M ▌\ngemini        204   4.2M ▎\npi             85   3.8M ▎\n\nBy model                  tokens\ngpt-5.4                      75M ████████████████████\nminimax-m2.5                 63M ████████████████▊\nclaude-sonnet-4.6            53M ██████████████▏\nclaude-opus-4.6              40M ██████████▋\nminimax-m2.7                 38M ██████████▏\nclaude-opus-4.7              31M ████████▏\nlaguna-xs-2.1                22M █████▉\nclaude-haiku-4-5-20251001    14M ███▉\nkimi-k2.5:cloud              11M ██▉\nclaude-sonnet-4.5           6.6M █▊\ngpt-5.3-codex               6.1M █▋\nglm-4.7-free                6.0M █▋\nglm-4.7                     5.0M █▍\nmercury-2                   4.3M █▏\ndeepseek-v4-flash           3.7M █\ngpt-5.5                     3.6M █\nkimi-k2.5                   2.0M ▌\nstarter                     1.8M ▌\ngpt-5.1-codex               1.5M ▍\nkat-coder-pro-v1            1.4M ▍\nothers (57 models)          9.8M ██▋             Copied!\n```\n\nTry aivo without setting up a provider first. `aivo-starter`\n\nbundles a couple of models **for learning and testing**, enough to feel how aivo works before you bring your own key.\n\n`aivo/starter`\n\nDeepSeek V4 Flash · official API A general-purpose default for everyday tasks. `poolside/laguna-s-2.1`\n\nLaguna S 2.1 · Once aivo is installed, you can use it straight away.\n\n```\n  aivo \"tell me a short story\"\naivo code             Copied!\n```\n\nLink your device to an account for higher daily limits on the starter pool.\n\n```\n  aivo account login\naivo account usage             Copied!\n```\n\nThe starter pool has a finite daily budget, intended for interactive coding-agent sessions. For regular or automated use, please add your own API key.\n\n`aivo update`\n\ndetects 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.\n\n```\n  aivo update\n\n# force update even if installed via a package manager\naivo update --force\n# restore the previous version from the last backup\naivo update --rollback\n             Copied!\n```\n\nModel limits come from [models.dev](https://models.dev) and ship baked into each release. `--sync-model-data`\n\nrefreshes that snapshot between releases without touching the binary.\n\n```\n  aivo update --sync-model-data             Copied!\n```\n\n", "url": "https://wpnews.pro/news/use-your-favorite-coding-agent-with-any-model", "canonical_source": "https://getaivo.dev/", "published_at": "2026-08-20 11:14:55+00:00", "updated_at": "2026-08-20 11:45:43.854322+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-agents", "artificial-intelligence"], "entities": ["Aivo", "OpenRouter", "Vercel AI Gateway", "DeepSeek", "Cloudflare", "Google AI Studio", "Amazon Bedrock", "Ollama"], "alternates": {"html": "https://wpnews.pro/news/use-your-favorite-coding-agent-with-any-model", "markdown": "https://wpnews.pro/news/use-your-favorite-coding-agent-with-any-model.md", "text": "https://wpnews.pro/news/use-your-favorite-coding-agent-with-any-model.txt", "jsonld": "https://wpnews.pro/news/use-your-favorite-coding-agent-with-any-model.jsonld"}}