Free Gateway
The Axemere Free Gateway is a self-hosted HTTP proxy that sits between your applications and AI providers. Run it anywhere (your laptop, a server, a container) with no account and no expiry.
No cloud dependency. No request limits. No registration required.
Quick Start — Docker
No account required. Get the gateway running and route your first AI request in under 5 minutes.
Prerequisites
- Docker Desktop (or Docker Engine + Compose on Linux)
- An API key for at least one AI provider (OpenAI, Anthropic, Gemini, etc.)
Step 1: Download and configure
curl -fsSL https://github.com/Axemere-LLC/mvgc-releases/releases/latest/download/docker-compose.free.yaml \ -o docker-compose.free.yaml curl -fsSL https://github.com/Axemere-LLC/mvgc-releases/releases/latest/download/default.env.example \ -o .env
Edit .env and set the following values before starting:
MVGC_ADMIN_TOKEN (required): the gateway's admin API and the local console both use this to authenticate. Generate one:
openssl rand -hex 32
Provider API key(s): set the key for each provider you'll proxy:
OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-ant-... # if using Anthropic
POSTGRES_PASSWORD: defaults to mvgcpassword. Change it for anything beyond a quick local trial.
CONSOLE_PASSWORD: the local console reverse-proxies the gateway's admin API. With no password set, anyone who can reach the console URL has full admin access to the gateway. The compose file binds the console to 127.0.0.1:7091 by default so only this machine can reach it.
- Local-only use (default): leave
CONSOLE_PASSWORDunset; the127.0.0.1binding limits access to this machine's browser only. - To reach the console from another machine: set a strong
CONSOLE_PASSWORD(e.g.openssl rand -hex 24) and change the console port mapping indocker-compose.free.yamlfrom"127.0.0.1:7091:7091"to"7091:7091". Put it behind TLS if exposing beyond a trusted private network.
The gateway stores all provider credentials internally. Your application code never needs to hold an API key.
Step 2: Start the gateway
docker compose -f docker-compose.free.yaml up -d
This starts three services: gateway (port 7080), postgres (internal), and console (port 7091).
Verify the gateway is healthy:
curl -s http://localhost:7080/healthz | jq .status # → "ok"
Step 3: Send your first request
Point your SDK at the gateway by overriding its base URL. The gateway injects your stored API key, not a real key in your app code:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:7080/proxy/openai",
api_key="unused", # gateway uses its stored key
)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)Step 4: Open the local console
Open the Local Console in your browser:
http://127.0.0.1:7091
The console connects to the gateway's admin API and shows live traffic, policy decisions, request records, and gateway configuration, all in a local web UI. Every request from Step 3 should appear within a few seconds.
If you set CONSOLE_PASSWORD in .env, you'll be prompted to log in before the dashboard loads.
Compose file variants
Need a different setup? All three Compose files are available in the release assets:
| File | Contains | Use when |
|---|---|---|
docker-compose.free.yaml | gateway + Postgres + local console | All-in-one Free Gateway, the option above |
docker-compose.postgres.yaml | gateway + Postgres | Self-Hosted (managed from console.axemere.ai), or headless Free without the console |
docker-compose.yaml | gateway only | You run your own PostgreSQL instance |
Install on your platform
Prefer a native binary, or deploying to a server or cloud VM? Choose your platform:
What it does
- Proxies AI requests to OpenAI, Anthropic, Gemini, Azure, and other providers through a single local endpoint.
- Keeps credentials in the gateway: your applications send requests without ever touching a raw API key.
- Enforces local policy: a YAML policy file controls which models, providers, and patterns are allowed before requests leave your network.
- Logs every request: every execution is recorded locally for debugging, auditing, and usage review.
- Runs a local dashboard: the Local Console (mvgc-console) starts alongside the gateway and shows live traffic, policy decisions, and request records at
http://127.0.0.1:7091.
Troubleshooting
healthz returns unhealthy or the gateway won't start
The database container may still be initializing. Wait a few seconds after starting, then retry. If it persists:
docker compose -f docker-compose.free.yaml logs gateway --tail=50
Port 7080 already in use
Another process is listening on port 7080. Stop it, or edit the port mapping in docker-compose.free.yaml (e.g. change "7080:7080" to "7081:7080") and update your request URLs accordingly.
Request returns 401 or a provider error
The API key for that provider is not set or is incorrect in .env. Edit .env, then restart:
docker compose -f docker-compose.free.yaml restart
For Anthropic requests, make sure ANTHROPIC_API_KEY=sk-ant-... is present in .env.
Local console not loading (http://127.0.0.1:7091)
The console service takes a moment to start. Wait a few seconds and refresh. If it doesn't come up:
docker compose -f docker-compose.free.yaml logs console --tail=30
If you set CONSOLE_PASSWORD and are getting login errors, the password in .env must match what you set before starting the stack. Update .env and restart the console service:
docker compose -f docker-compose.free.yaml restart console
Next steps
| Route VS Code Copilot or Claude CLI through the gateway | AI Tools |
| Write a policy to allow or deny specific models | Policy DSL |
| Add more providers or workloads | Configuration |
| Connect to Axemere's control plane for fleet management | Self-Hosted Gateway |
| CLI reference | CLI Reference |
| Admin API reference | Admin API Reference |
Ready to stop managing infrastructure?
The Managed Gateway gives you all of this without running anything. Axemere hosts and operates the gateway on your behalf, starting at $25/month per Growth Pack with a 30-day free trial.