Free AI models for every coding tool. FlagshipRouter is a local AI gateway that connects Claude Code, Codex, Cursor, Cline, OpenCode and other coding tools to free AI models through one OpenAI-compatible endpoint.
- Free providers only. The dashboard, management APIs and routing only expose providers with a free offer (Kiro, OpenCode Free, OpenRouter free models, NVIDIA NIM, Groq, Cloudflare Workers AI, Ollama, self-hosted servers and more).
- A Models screen instead of a provider list. Every model from every free provider in one searchable table, with a ready/connect status and a one-click test.
- One place to rename. Product name, CLI command, data folder, the prefix your tools show on models, and the provider policy all live in
brand.json. - Starts with one command. Running
flagshiprouterstarts the server and opens the browser UI.
Requires Node.js 20.9 or newer (22 recommended).
git clone https://github.com/theRizwan/FlagshipRouter.git
cd FlagshipRouter
npm run launchnpm run launch installs the dependencies, builds the app (a few minutes, first run only), and starts the CLI. The server runs on port 20128 and the dashboard opens in your browser; the terminal keeps a small menu (open browser UI, terminal UI, hide to tray, exit). Later runs start in seconds and rebuild automatically when the sources or brand.json change.
Pass CLI options after --, for example npm run launch -- --host 127.0.0.1 (local only), -- -p 20130 (another port) or -- --no-browser.
To use the flagshiprouter command anywhere, link the CLI package once:
cd cli && npm linkFor development with hot reload:
npx next dev --port 20128The dashboard's default password is 123456; change it under Settings before exposing the router beyond localhost.
- Open Endpoint & Key and create an API key.
- Open Models, pick a model marked Ready (OpenCode Free models need no signup) or connect a provider to unlock more.
- Point your tool at
http://localhost:20128/v1with that key, or use CLI Tools to write the config for Claude Code, Codex, OpenCode, Cline, Copilot and others. Models appear in those tools asflagshiprouter/<model>.
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer $FLAGSHIPROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-6-astra", "messages": [{"role": "user", "content": "Hello"}]}'| Field | Controls |
|---|---|
name |
Product name in the dashboard, terminal UI, tray, page titles, translations |
slug |
npm package, CLI command, data folder (~/.<slug>), headers, MITM certificate names |
modelPrefix |
Provider key written into CLI tool configs, so models show as <modelPrefix>/<model> |
tagline, description |
Page title, web app manifest |
repository, branch |
Links, changelog and agent-skill URLs |
updateCheck |
npm update notices (keep false until the package is published under slug) |
providers |
Free-provider policy (see below) |
After editing brand.json, run npm run brand:sync to update the two package.json files (package name, CLI bin). Everything else reads brand.json at runtime or build time.
"providers": {
"freeOnly": true,
"categories": ["free", "freeTier"],
"includeHasFree": true,
"include": [],
"exclude": ["antigravity", "gemini", "gemini-cli"],
"customEndpoints": false
}A provider is available when its registry entry (open-sse/providers/registry/<id>.js) has a listed category, or is flagged hasFree and includeHasFree is on. include and exclude take provider ids. The policy is enforced in the dashboard, the management APIs, the connection store and at routing time. customEndpoints enables user-defined OpenAI/Anthropic-compatible endpoints; setting freeOnly to false restores the full upstream provider list.
Endpoint & Key · Models · Combos & Vision · Token Saver · CLI Tools · Media Models (embedding, image, video, speech, transcription, System One, web fetch & search) · Agent Skills · Proxy Pools · Console Log · Translator · Settings. Usage and Quota Tracker pages are still available at /dashboard/usage and /dashboard/quota.
| Path | What it is |
|---|---|
brand.json |
Single source for brand and provider policy |
open-sse/ |
Routing and translation engine (config/brand.js, providers/policy.js) |
src/app/ |
Next.js dashboard and API routes (/v1/* gateway, /api/models/catalog for the Models screen) |
cli/ |
The flagshiprouter launcher: starts the server, opens the browser UI, terminal UI, tray |
tests/ |
Vitest suite (tests/unit/brand-policy.test.js covers the brand layer) |
docs/ARCHITECTURE.md |
Request lifecycle and data model |
npm install --prefix /tmp/vitest-runner --legacy-peer-deps vitest@4
ln -sfn /tmp/vitest-runner/node_modules tests/node_modules
cd tests && npx vitest runThe suite carries known failures (live-provider tests, a missing cloud/ worker, timing-sensitive DB tests); compare against a run on the previous commit rather than expecting all green. Engine tests run with the free-only policy disabled by tests/setup/providerPolicy.js.
Released under the MIT License.