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_PASSWORD unset; the 127.0.0.1 binding 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 in docker-compose.free.yaml from "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:

FileContainsUse when
docker-compose.free.yamlgateway + Postgres + local consoleAll-in-one Free Gateway, the option above
docker-compose.postgres.yamlgateway + PostgresSelf-Hosted (managed from console.axemere.ai), or headless Free without the console
docker-compose.yamlgateway onlyYou 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 gatewayAI Tools
Write a policy to allow or deny specific modelsPolicy DSL
Add more providers or workloadsConfiguration
Connect to Axemere's control plane for fleet managementSelf-Hosted Gateway
CLI referenceCLI Reference
Admin API referenceAdmin 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.