freellmpool › guide
You can run the OpenCode coding agent on free LLM tiers — no API bill — by pointing it at a local proxy that speaks the OpenAI API. The open-source tool freellmpool is that proxy. It catalogs 22 provider groups spanning recurring free tiers, keyless endpoints, finite trials, pin-only routes, and disabled candidates (177 enabled chat routes), and automatically fails over only across enabled routes you can access. It can start without provider credentials when an enabled keyless route is available. It also ships an OpenCode plugin with a live dashboard, quality routing, and usage tools built in.
spread routing and the operations APIs described below. Repository-local OpenCode plugin sources are included in 0.12.0 with registry-readiness hardening and corrected defaults.python -m pip install freellmpool
freellmpool proxy # serves http://localhost:8080
The proxy routes OpenAI-style requests to enabled targets you can access and fails over when one is rate-limited.
In your opencode.json (or ~/.config/opencode/opencode.jsonc), add a
freellmpool provider and set it as your model. The routing aliases let you pick how each prompt is
routed:
{
"model": "freellmpool/agent",
"provider": {
"freellmpool": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://localhost:8080/v1",
"apiKey": "{env:FREELLMPOOL_PROXY_KEY}",
"headerTimeout": 600000,
"timeout": 600000,
"chunkTimeout": 120000
},
"models": {
"agent": {}, "spread": {}, "auto": {}, "fast": {}, "quality": {}, "fair": {}
}
}
}
}
Run freellmpool code opencode to print these steps any time.
Switch the model in OpenCode's picker to choose how freellmpool routes — no extra config:
freellmpool/agent — best starting point for long agent loops: stay in the
strongest healthy benchmark tier, then spread quota and prefer faster targets within it.freellmpool/spread — rotate across the whole pool when aggregate quota and
breadth matter more than keeping every turn in the strongest tier.freellmpool/auto — the proxy's default routing.freellmpool/quality — match each prompt's difficulty to the best and fastest
capable free model (benchmark-scored, latency-aware).freellmpool/fast — lowest-latency provider first.freellmpool/fair — spread load across providers to preserve daily quota.freellmpool ships a native OpenCode TUI plugin that renders a live panel inside the editor —
the active routing mode, estimated money saved, tokens served free, a provider "race," a latency
sparkline, and which provider/model just answered. It updates as you code. Setup is in the
integrations/opencode-tui
folder; a companion server plugin adds freellmpool_status and freellmpool_models
tools you can ask for in any session.
Registry publication status: pending.
The planned packages are opencode-freellmpool and
opencode-freellmpool-tui. Their tarballs are clean-install/load-tested,
but neither package was published on npm as of 2026-08-29. Use the linked
local-file setup until both registry versions are verified.
Before a long OpenCode run, automation can call public /livez for process
liveness and /readyz for advisory local capacity. With proxy authentication,
/v1/providers returns secret-free readiness details and
/v1/models?ready=true returns only locally ready targets. These endpoints are
released operations, and readiness does not probe upstream providers.
freellmpool/quality keeps effective quality high as
local counters fill.If a keyless route is available it can get you started; applicable credentials for recurring free tiers
such as Groq or Gemini can unlock more routes and capacity. Finite trials and priced or pin-only routes
remain distinct — see the
accounts guide. freellmpool
spreads load across enabled routes you can access and tracks local per-day usage. Track your
running total with freellmpool stats or embed a freellmpool badge in your README.
Yes. freellmpool's proxy implements the OpenAI Chat Completions API and routes it to free-tier models,
so OpenCode runs against them with no code changes. Quality is bounded by the free-tier models you have
access to; freellmpool/quality routing picks the strongest fast-enough one per prompt.
Yes — the proxy preserves tool/function calls across providers, and the bundled plugin adds extra tools (status, model list) plus the in-editor dashboard.
No — you're pointing OpenCode at a custom OpenAI-compatible provider, exactly the mechanism it supports for local and custom models. You're using the LLM providers' own free tiers; don't abuse them.
The embedded dashboard shows the last-served provider/model live; or ask the agent to run the
freellmpool_status tool, or curl the proxy's /status endpoint.