Vanszs/VansRouter
Project Overview
VansRouter
A self-hosted LLM API gateway that routes coding-assistant traffic across 40+ AI providers with fallback and token-compression logic.
True Intent (AI Assessment)
A multi-provider LLM API proxy and dashboard that pools AI provider accounts (including free tiers) and auto-fails-over between them to avoid rate limits and reduce token costs for AI coding tools.
README Accuracy
Notes
The core functionality — proxying, format translation, and per-provider executors — matches the README's claims and is verifiable under open-sse/. However, the README's 'FREE AI' framing implies routing traffic through provider accounts and quotas in ways that may violate provider terms of service, and the self-updating CLI behavior plus mixed plaintext/native SQLite credential storage paths deserve deeper verification before the project is trusted with real provider credentials in production.
VansRouter is a self-hosted proxy and dashboard — a Next.js web UI, a Node.js backend, and a CLI wrapper — that sits between AI coding tools (Claude Code, Cursor, Copilot, Codex, Cline, Antigravity, and others) and more than 40 upstream LLM providers. It normalizes requests across formats (OpenAI, Claude, Gemini, Kiro), manages multiple provider accounts, and forwards traffic to whichever backend is currently available.
The problem it targets is practical: hitting API rate limits or burning through paid subscription quota while using AI coding assistants. Users register multiple accounts and providers — including free-tier and subscription-based ones — and the router fails over between them automatically, tracks quota usage, and compresses tool-result payloads (a technique it calls 'RTK') to cut token consumption per request.
The intended user is an individual developer or small team looking to reduce AI API cost and downtime by pooling several provider accounts (including free tiers of Gemini, Claude, and GPT-style services) behind a single local OpenAI-compatible endpoint (http://localhost:20128/v1) that any CLI-based coding tool can point at.
Technically, it is a Next.js 16 app (custom-server.js / server.js) that serves the management dashboard alongside an 'open-sse' module implementing provider-specific request/response translators and 'executors' — one per provider (antigravity, azure, cursor, codex, kiro, qwen, github, grok, ollama, and more). Credentials and tokens are refreshed through OAuth flows (tokenRefresh.js, oauthCredentialManager.js) and persisted via sql.js (WASM, in-process) with an optional native better-sqlite3 fallback. Install time adds device fingerprinting (node-machine-id) and self-signed certificate generation (selfsigned, node-forge) for local HTTPS. A CLI package (vansrouter) installs and manages the server as a background/tray process.
Notable concerns: the repository is heavily padded with AI-agent tooling artifacts (.kilo, .kilocode, .kimchi, .kiro, .agent, .understand-anything, gitbook docs) rather than application code, which muddies auditability. The README explicitly compares the project to '9Router' and 'OmniRoute' and claims code lineage from them, while internal comments warn against renaming the package so as not to break an 'updater' mechanism. That self-updating CLI behavior, combined with credential storage and OAuth token refreshing across many providers, warrants a careful review of exactly what data is transmitted and where secrets are persisted — particularly given the dual sql.js / better-sqlite3 persistence paths.
| Languages | JavaScript, Python, CSS, PowerShell, Dockerfile, Shell |
| Runtime | Node.js 22.5+ |
| Framework | Next.js 16 (React 19) |
| Database | SQLite (sql.js WASM fallback + optional native better-sqlite3) |
| Package Manager | pnpm (workspace) |
| Key Dependencies | next, react, zustand, jose, bcryptjs, node-forge, undici, sql.js, better-sqlite3, playwright-core |
| Build Tool | Next.js build + custom scripts/build.js, esbuild (CLI) |
| Test Framework | Vitest |