anz33 — one local endpoint for every AI engine
An AZMX AI project

One local endpoint for every AI engine.

Your laptop already runs Ollama, LM Studio, llama.cpp and MLX — and every app hardcodes exactly one of them. anz33 is a small router daemon: point everything at localhost:3300 and each request goes to whichever engine is genuinely fastest on your hardware, right now.

Start free — 14 days
no telemetry OpenAI-compatible cloud is opt-in macOS · Linux · Windows
requests routed locally
and none of them left the machine
~/anz33

      
Routes across Ollama LM Studio llama.cpp MLX Cloud (opt-in)
Why anz33

Five engines. Five APIs. Zero coordination.

Laptops now ship several incompatible AI stacks, and the NPU mostly idles while everything piles onto one process. Every chat app, IDE plugin and script hardcodes a single engine and a single model — even when a faster one is sitting a port away, even at 20% battery.

Measured, not guessed

anz33 records real tokens/sec for every engine × model on your machine, then ranks by what your hardware actually does — not by marketing TOPS. Re-run it whenever you pull a new model.

anz33 bench
anz33 bench
anz33 bench
benchmarking 3 engines · 5 models

ollama    qwen3:8b                  41.2 t/s
ollama    gemma3:4b                 58.7 t/s
ollama    llama3.1:8b               39.5 t/s
lmstudio  qwen2.5-coder-7b-instruct 36.4 t/s
mlx       Qwen3-14B-4bit            33.8 t/s

written to ~/.anz33/bench.json

Every response explains itself

Each reply carries anz33-engine and anz33-route headers naming exactly where it ran and why it was chosen — in plain English, on every single request. No black-box routing.

curl -i localhost:3300/v1/…
response headers
HTTP/1.1 200 OK
anz33-engine: ollama
anz33-route:  auto: fastest measured local model
anz33-model:  qwen3:8b

HTTP/1.1 200 OK
anz33-engine: ollama
anz33-route:  battery 42%: swapped qwen3:32b
              for smaller local model
anz33-model:  gemma3:4b

Local by default, cloud only if you say so

Remotes route only when you flip allow_cloud yourself. API keys are read from environment variables at request time — never written to config, never logged, never sent anywhere but the provider you named.

anz33 remote add anthropic
~/.anz33/config.json
{
  "allow_cloud": false,
  "battery_saver": true,
  "remotes": [{
    "name": "anthropic",
    "key_env": "ANTHROPIC_API_KEY"
  }]
}

key read from env at request time —
never stored in this file
How it works

Apps see one API. anz33 sees everything.

anz33 speaks the OpenAI wire format on /v1 — chat, streaming, embeddings. Anything that accepts a custom base URL works on day one. Ask for "model": "auto" and the router picks; name a model and anz33 finds whichever engine hosts it.

Engines it finds
ollama :11434
lm studio :1234
llama.cpp :8080
mlx :8081
cloud opt-in
anz33
127.0.0.1:3300/v1
measured tok/s battery & power state model availability your routing policy
Apps that point at it
chat apps base_url
IDE & coding agents base_url
scripts & RAG base_url
anything OpenAI-compatible base_url
The dashboard

See every token, every engine, every decision.

Built into the daemon at localhost:3300/anz33dashboard. Live tiles, hourly traffic, per-engine breakdowns, measured model speeds and routing controls that write straight to your config. All local — nothing leaves your machine.

http://127.0.0.1:3300/anz33dashboard
sample data ⚡ battery 78% v0.4.0 subscription active
requests · all time
0
4 distinct models
tokens generated
0
completion tokens, non-streamed
avg latency
1.84 s
end-to-end per request
engines online
0
ollama · mlx · lmstudio

requests · last 24h by hour

by engine · all time

recent requests

timeenginemodelroute reasonsectok

engines & models

routing configuration

battery saver
below 50% battery, swap >15B models for the smallest capable one
allow cloud
route to configured remotes; keys read from env at request time
changes save to ~/.anz33/config.json instantly.

endpoint & files

works with any OpenAI-compatible client: set base_url to the API endpoint above.

Sample data shown — on your machine these are your own requests. The toggles are live, try them.

Install

Running in about thirty seconds.

Zero config by default — engines are discovered on their well-known ports. One small daemon, no background telemetry, 14-day trial built in. Prefer a native package? There are signed builds for macOS, Windows and Linux — Homebrew, .deb, .rpm, Scoop and standalone binaries.

1

Install the router

A single Python package. pip install anz33 works too.

2

Start it, measure your hardware, run at login

bench is what makes routing real — it records actual tokens/sec per engine and model.

3

Point any OpenAI-compatible client at it

That is the whole integration. Nothing else in your stack changes.

Pricing

One plan. Everything included.

No tiers, no feature matrix, no upsells inside the product. One subscription covers the router, measured routing, the live dashboard, battery policy, cloud remotes, the memory vault — and everything we ship next.

anz33
$20 / month

Everything, for one person, on every machine you own.

  • Measured routing across all local engines
  • Live dashboard and routing controls
  • Battery and power-state policy
  • Portable memory vault and skills
  • Opt-in cloud remotes, keys never stored
  • Up to 5 machines · priority support
Start your 14-day trial
Teams & compliance
Talk to us

For fleets, and for work that cannot leave the building.

  • Fleet dashboard across the team
  • Routing policy — "this repo never touches cloud"
  • Signed, hash-chained audit log
  • Air-gapped deployment for legal and health
  • Volume pricing on the same $20 base
hello@anz33.com
Questions

The things people ask first.

Does anything leave my machine?

No. The router, the dashboard and the stats log all live on localhost, and there is no telemetry of any kind. The only traffic that ever leaves is a request you explicitly routed to a cloud remote after turning allow_cloud on yourself.

What happens when an engine isn't running?

It is skipped. Engines are probed on their well-known ports and the routing table is built from whatever answered, so starting or stopping Ollama mid-session simply changes where the next request goes.

Do I have to change my apps?

Only the base URL. anz33 speaks the OpenAI wire format, so anything that lets you set base_url — chat clients, IDE plugins, LangChain, plain curl — works without a code change.

What does "auto" actually pick?

The fastest model your hardware measured that can serve the request, adjusted for power state and any policy you set. Whatever it chose comes back in the anz33-route header, in plain English.

Why a subscription for something that runs locally?

Because it keeps being worked on. There is no free tier and no paid add-ons — one price, every feature, including the ones that ship after you subscribe. Fourteen days to decide, no card up front.

Stop hardcoding engines.

One endpoint, every engine, decisions you can read. Fourteen days free, no card.