Skip to main content

The two-faced AI routing gateway

Project description

Janus

The two-faced gateway for AI coding tools. Janus sits at the threshold of every AI call — facing the developer on one side and every provider on the other.

Janus is a local-first, single-user AI routing gateway. It exposes OpenAI/Anthropic-compatible HTTP endpoints that your coding tools (Claude Code, Codex, Cursor, Cline, ...) talk to, then translates and routes each request to 40+ AI providers — without either side needing to know the other exists.

Quickstart

# Install
pip install -e .

# Generate default config
janus config-init

# Start the server
janus serve --port 20128

Point your coding tool at http://localhost:20128/v1 and start routing.

📚 Documentation · Contributing · Changelog

Docker

# Create config in the persistent volume
mkdir -p janus-data
cp ~/.janus/config.yaml janus-data/config.yaml  # or create one with janus config-init

# Build and run
docker compose up -d

The SQLite database and config persist in ./janus-data/. Environment variables from .env are passed through for ${ENV_VAR} resolution in config.

Configuration

Janus reads YAML config from ~/.janus/config.yaml with ${ENV_VAR} token resolution. Generate a template with janus config-init.

server:
  port: 20128
  host: 127.0.0.1
  require_api_key: false

providers:
  - id: openai
    prefix: openai
    api_type: openai_compat
    base_url: https://api.openai.com/v1
    api_key: ${OPENAI_API_KEY}
    models: [gpt-4o, gpt-4o-mini, o3, o4-mini]

  - id: anthropic
    prefix: anthropic
    api_type: anthropic
    base_url: https://api.anthropic.com
    api_key: ${ANTHROPIC_API_KEY}
    models: [claude-sonnet-4-20250514, claude-opus-4-20250514]

combos:
  - name: best-effort
    models: [anthropic/claude-sonnet-4-20250514, openai/gpt-4o]

Supported Provider Types

api_type Use For
openai_compat Any OpenAI-compatible API (OpenAI, Groq, Together, DeepSeek, OpenRouter, Mistral, Fireworks, Perplexity, xAI, ...)
anthropic Direct Anthropic API
gemini Direct Google Gemini API
opencode_free OpenCode Zen free tier

Known Provider Base URLs

Provider base_url
OpenAI https://api.openai.com/v1
Groq https://api.groq.com/openai/v1
Together AI https://api.together.xyz/v1
DeepSeek https://api.deepseek.com/v1
OpenRouter https://openrouter.ai/api/v1
Mistral https://api.mistral.ai/v1
Fireworks https://api.fireworks.ai/inference/v1
Perplexity https://api.perplexity.ai
xAI (Grok) https://api.x.ai/v1
Qwen/DashScope https://dashscope.aliyuncs.com/compatible-mode/v1

Client Setup

Point your coding tools at Janus:

Claude Code / Anthropic tools:

export ANTHROPIC_BASE_URL=http://localhost:20128/v1

OpenAI tools (Codex, Cursor, etc.):

export OPENAI_BASE_URL=http://localhost:20128/v1
export OPENAI_API_KEY=sk-janus-yourkey  # if require_api_key is on

Features

  • Fallback routing — multi-account rotation with cooldowns (429->60s, 5xx->30s, auth->300s, network->15s)
  • Combos — named ordered model sequences (e.g., "model": "best-effort")
  • Token savers — RTK compression (default ON), Caveman terse prompt, Ponytail lazy-dev prompt
  • Budgets — daily spending limits per API key or global, with warn/block thresholds
  • Analytics — cost tracking, spend trends, success rates, per-model/provider/key breakdowns
  • Pricing — 28 builtin model prices, YAML-overridable, cache token rates
  • Dashboard — HTMX UI at /dashboard with charts, budget management, usage stats

CLI Reference

Command Description
janus serve Start the gateway server
janus config-init Generate default config YAML
janus config-path Print config file path
janus keys create/list/revoke Manage API keys
janus usage stats/cost/by-key Usage and cost reports
janus budgets list/set/delete Manage spending budgets
janus pricing list/show View model pricing

Development

git clone https://github.com/amanverasia/Janus.git
cd Janus
python -m venv .venv
pip install -e ".[dev]"

# Run tests
.venv/bin/python -m pytest

# Lint + typecheck
.venv/bin/ruff check src/janus/ tests/
.venv/bin/mypy src/janus/

# Start dev server
.venv/bin/janus serve --port 20128 --reload

Tech Stack

Python 3.11+ / FastAPI / httpx / Pydantic v2 / aiosqlite / Jinja2 / HTMX / Chart.js

License

GPL-3.0 © 2026 Aman Verasia

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

janus_ai-0.2.3.tar.gz (222.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

janus_ai-0.2.3-py3-none-any.whl (89.1 kB view details)

Uploaded Python 3

File details

Details for the file janus_ai-0.2.3.tar.gz.

File metadata

  • Download URL: janus_ai-0.2.3.tar.gz
  • Upload date:
  • Size: 222.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for janus_ai-0.2.3.tar.gz
Algorithm Hash digest
SHA256 a6717271857a165918f00bbe63eee7070906aa46089c29922ab9ef05dab2a5b7
MD5 878ff371b3a096f8a35f4bba2d9af44a
BLAKE2b-256 1c67b15f315319d820577e86cec3b9f6fa102f9db7404f41d0d7786bcde6a8bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for janus_ai-0.2.3.tar.gz:

Publisher: publish.yml on amanverasia/Janus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file janus_ai-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: janus_ai-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 89.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for janus_ai-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 108b03c8f50ddd66f0eb0df39db8b1ff9191f66e6d06316e6129577433f85942
MD5 a573a2e2ddde5dc43dc256a27b33a0d6
BLAKE2b-256 2f282374a27f28eb8f245068e7f549da7058bc28d8de42a52c78f8089e38492a

See more details on using hashes here.

Provenance

The following attestation bundles were made for janus_ai-0.2.3-py3-none-any.whl:

Publisher: publish.yml on amanverasia/Janus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page