Map of Apus features that can call paid provider APIs, where each reads its credentials, and where the resulting cost shows up.

Where costs show up

/status (per-session snapshot)

/usage (per-message footer)

Control UI → Usage (cross-session analysis)

CLI usage windows (provider quotas, not per-message cost)

See Token use and costs for detailed examples.

As of 2026-07-05, Anthropic has confirmed that Claude CLI reuse (including claude -p) is a sanctioned integration pattern unless it publishes a new policy; recheck Anthropic's current terms before relying on it. Anthropic does not expose a per-message dollar estimate, so /usage full cannot show cost for Claude CLI usage.

How keys are discovered

Features that can spend keys

Core model responses (chat + tools)

Every reply or tool call runs on the current model provider. This is the primary source of usage and cost, including subscription-style hosted plans that bill outside Apus's local UI: OpenAI Codex, Alibaba Cloud Model Studio Coding Plan, MiniMax Coding Plan, Z.AI/GLM Coding Plan, and Anthropic's Claude-login path with Extra Usage enabled.

See Models for pricing config and Token use and costs for display.

Media understanding (audio/image/video)

Inbound media can be summarized or transcribed via a provider API before the reply pipeline runs. Provider support is registered per plugin and changes as plugins are added; see Media understanding for the current list and config.

Image and video generation

image_generate and video_generate route to whichever authenticated provider is available. Both can infer an auth-backed provider default when their agents.defaults.mediaModels entry is unset.

See Image generation and Video generation for the current provider list.

Memory embeddings and semantic search

Semantic memory search uses embedding APIs when memory.search.provider names a remote adapter (for example openai, gemini, voyage, mistral, deepinfra, github-copilot, amazon-bedrock). memory.search.provider = "lmstudio" or "ollama" runs against a local/self-hosted server and typically has no hosted billing. memory.search.provider = "local" keeps everything on-device with no API usage. An optional memory.search.fallback provider can cover local-embedding failures.

See Memory.

Web search tool

web_search can incur usage charges depending on the selected provider. Each provider reads its key from an env var first, then plugins.entries.<id>.config.webSearch.apiKey:

Provider Env var(s)
Brave Search BRAVE_API_KEY
DuckDuckGo key-free; unofficial, HTML-based, no billing
Exa EXA_API_KEY
Firecrawl FIRECRAWL_API_KEY
Gemini (Google Search) GEMINI_API_KEY
Grok (xAI) xAI OAuth profile or XAI_API_KEY
Kimi (Moonshot) KIMI_API_KEY or MOONSHOT_API_KEY
MiniMax Search MINIMAX_CODE_PLAN_KEY, MINIMAX_CODING_API_KEY, MINIMAX_OAUTH_TOKEN, or MINIMAX_API_KEY
Ollama Web Search key-free for a reachable signed-in local host; direct https://ollama.com search uses OLLAMA_API_KEY; auth-protected hosts reuse normal Ollama provider bearer auth
Parallel PARALLEL_API_KEY
Perplexity Search API PERPLEXITY_API_KEY or OPENROUTER_API_KEY
SearXNG SEARXNG_BASE_URL; key-free/self-hosted, no hosted billing
Tavily TAVILY_API_KEY

Legacy tools.web.search.* config paths still load through a compatibility shim but are no longer the recommended surface.

Brave Search free credit: each plan includes $5/month in renewing free credit. The Search plan costs $5 per 1,000 requests, so the credit covers 1,000 requests/month at no charge. Set a usage limit in the Brave dashboard to avoid unexpected charges.

See Web tools.

Web fetch tool (Firecrawl)

web_fetch can call Firecrawl with keyless starter access; add FIRECRAWL_API_KEY (or plugins.entries.firecrawl.config.webFetch.apiKey) for higher limits. If Firecrawl isn't configured, the tool falls back to direct fetch plus the bundled web-readability plugin (no paid API). Disable plugins.entries.web-readability.enabled to skip local Readability extraction.

See Web tools.

Provider usage snapshots (status/health)

apus status --usage and apus models status --json call provider usage endpoints to show quota windows or auth health. Calls are low-volume but still hit provider APIs.

See Models CLI.

Compaction safeguard summarization

The compaction safeguard can summarize session history using the current model, which invokes provider APIs when it runs.

See Session management and compaction.

Model scan / check

apus models scan can check OpenRouter models and uses OPENROUTER_API_KEY when checking is enabled.

See Models CLI.

Talk (speech)

Talk mode can invoke ElevenLabs when configured: ELEVENLABS_API_KEY or talk.providers.elevenlabs.apiKey.

See Talk mode.

Skills (third-party APIs)

Skills can store apiKey in skills.entries.<name>.apiKey. If a skill uses that key against an external API, cost follows the skill's provider.

See Skills.

Related