mrkeyoor.com_
Fri 18 Sept 19:08 UTC
AI Toolsevaluationupdated 18 Sept 2026

router review

Weave Router is a source-available Go proxy that picks a model for each request from a coding agent or application. It accepts Anthropic, OpenAI, and Gemini request formats, scores the action locally, and forwards it to an enabled provider behind one endpoint.

Verdict

Our Router run installed 335 packages, built in 124 seconds, and passed all 134 Go tests in 107 seconds. That earns it a controlled trial for teams whose model mix changes enough to justify another decision layer. Keep production traffic behind explicit gates for credential encryption, cache behavior, invoice reconciliation, and Elastic License 2.0 review.

We ran it

Lab card: what happened when we ran routerScreenshot of router (weaveos.com/products/router)
Install✓ · 70s335 packages
Build✓ · 124s
Tests✓ · 107s134 passed · 0 failed of 134 (go test)
Repo2097 files~292,642 lines of source · 30.2 MB · 10 CI workflows · Dockerfile

Answers from our run

Does router build from source?

Dependencies installed in 70 seconds (335 packages), and the build succeeded in 124 seconds. We cloned commit 76a9bbb into a clean Debian container with 3 CPUs and no project-specific setup.

Do router's tests pass?

Yes: 134 of 134 passed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use router?

Vendors planning to resell the software as their own hosted router: Elastic License 2.0 forbids giving third parties hosted access to a substantial set of its features.

What are the alternatives to router?

LiteLLM, Portkey AI Gateway, RouteLLM. Our Router run installed 335 packages, built in 124 seconds, and passed all 134 Go tests in 107 seconds.

Setup4/5All 134 tests passed; self-hosting still needs Postgres and secrets
Docs5/5Specific client, endpoint, routing, secret, and deployment guidance
Community4/54,448 stars with a same-day push and 96 open pull requests
Maturity3/5Clean lab run, but no GitHub release and open billing and cache bugs

Who it’s for

Teams already using several model providers and willing to test an automatic choice on each request.
Claude Code, Codex, opencode, or pi users who want one installer to configure a routed endpoint.
Platform engineers who need provider credentials, routing records, cost data, and OTLP traces in one service.
Self-hosters prepared to run Postgres, encrypt stored provider keys, and compare router accounting with provider invoices.

Who it’s NOT for

Vendors planning to resell the software as their own hosted router: Elastic License 2.0 forbids giving third parties hosted access to a substantial set of its features.
Operators who cannot supply an encryption key for customer credentials: the configuration guide says BYOK secrets are stored unencrypted when EXTERNAL_KEY_ENCRYPTION_KEY is absent.
Billing systems that depend on accurate 1-hour Anthropic cache-write costs today: open issue 867 reports a 37.5% undercharge caused by using the 5-minute rate.
Teams using semantic caching with per-installation model preferences without regression tests: issue 789 reports a cached body from one model being returned under another model's headers.
Self-hosters expecting the Compose environment path to be settled: open issues 1359 and 1360 report provider variables not reaching the container.

Setup reality

Our sandbox install succeeded in 70 seconds and added 335 packages. The build succeeded in 124 seconds. Tests finished in 107 seconds with 134 passed and 0 failed out of 134. The 30.2 MB checkout contained 2,097 files and about 292,642 source lines.

The hosted installer needs Node 18 or newer and obtains a router key; several client paths also need jq. Self-hosting needs Postgres, an upstream provider key, the router service, and a dashboard password for administration. BYOK deployments should also configure the documented AES-256-GCM keyset.

The module declares Go 1.25 and toolchain 1.25.9. Multi-replica deployments need Pub/Sub for cache invalidation. The optional HMM policy adds a sidecar and Google API key. Our scan found 10 CI workflows, a Dockerfile and Compose file, but no tests directory.

Router chooses 1 model for each API action

Weave Router sits between an agent and its model providers, making 1 choice for each upstream API request. One agent turn can contain several of these actions. It accepts Anthropic Messages, OpenAI Chat Completions, and Gemini calls, then forwards the request to the selected provider. Clients keep one endpoint while the model can change underneath them.

The default policy uses an in-process ONNX embedder and cluster scorer. An optional HMM policy runs as a sidecar, and users can pin a model or exclude providers. That is more judgment than a normal retrying gateway makes. It takes a real evaluation set to determine whether the selected model is good enough for your own coding, support, or extraction work.

Self-hosting starts Postgres and the router on port 8080

The hosted npm installer supports Claude Code, Codex, opencode, and pi at user or project scope. Node 18 or newer is required, and some client paths need jq. Cursor support is labeled early beta.

Local hosting asks for an upstream provider credential and ROUTER_ADMIN_PASSWORD, then starts Postgres and the router through the provided setup target. The API and dashboard use port 8080. Clients receive a separate rk_ router key, while provider keys stay behind the service. The optional HMM path adds a sidecar on port 8093 and a Google API key. A multi-replica deployment also needs Pub/Sub so configuration caches are invalidated across processes.

What happened when we ran it

Our sandbox installed 335 packages in 70 seconds and built commit 76a9bbb in 124 seconds. We used an unprivileged Debian container with 3 CPUs, 8 GB of RAM, no secrets, and the golang:1.24-bookworm base image. The checkout was 30.2 MB and held 2,097 files with about 292,642 source lines. Nothing failed during installation or compilation.

The Go test command finished in 107 seconds with 134 passed and 0 failed out of 134. Our scan found 10 CI workflow files, a Dockerfile, a Compose file, and no tests directory. The module itself declares Go 1.25 with toolchain 1.25.9. These results establish that the measured commit builds and its available tests pass in our measurement setup. They do not establish model quality, routing latency, or savings.

Passing 134 tests does not validate a routing policy

A model router can return a valid HTTP response and still make a poor choice. We did not send live prompts to Anthropic, OpenAI, Gemini, or OpenRouter, and we did not compare routed answers with a fixed-model control. That work needs tasks drawn from the jobs your users perform, a quality rubric, provider errors, cost records, and enough repeated runs to catch unstable choices. The README's savings and speed claims were outside our sandbox run.

The protocol surface is useful regardless of the policy result. Router exposes Anthropic, OpenAI, and Gemini routes, health and readiness checks, route inspection, session costs, and analytics exports. OTLP spans can go to an operator's own collector. Still, every extra translation path can mishandle a tool call, streaming event, usage field, or cache rule. A pilot should replay the exact request types your agents use, including vision and forced-model paths.

BYOK secrets are plaintext when 1 encryption setting is absent

The configuration guide is direct: if EXTERNAL_KEY_ENCRYPTION_KEY is unset, customer-supplied provider keys are stored unencrypted in Postgres and the process emits a warning. A malformed keyset stops startup, while a missing one permits the plaintext path. The documented setting expects a Tink AES-256-GCM keyset. Any deployment holding real provider credentials should make that setting mandatory in configuration checks rather than relying on someone noticing a warning.

Two open reports add operational checks. Issue 867 says 1-hour Anthropic cache writes are priced internally with the 5-minute multiplier, producing a 37.5% undercharge in the reporter's reproduction. Issue 789 describes semantic cache reuse across changed preferred-model settings, where the returned body can come from a different model than the response headers name. Both reports were still open, so invoice reconciliation and cache-isolation tests belong in the rollout plan.

Elastic License 2.0 blocks a hosted-router resale

The code is visible and modifiable under Elastic License 2.0, but the license does not permit every use associated with open-source software. Its clearest restriction forbids giving third parties a hosted or managed service that exposes a substantial set of Router's features. It also requires recipients to receive the terms and modified copies to carry prominent modification notices. Internal use can fit the license, while a gateway vendor needs legal review before building a service on it.

This distinction changes the alternative set. Portkey's gateway uses the MIT license, while RouteLLM uses Apache 2.0 and focuses more narrowly on routing research and evaluation. LiteLLM offers a much broader gateway surface. Product fit still comes first, but a team that requires an OSI-approved permissive license can eliminate Weave Router before comparing scorers, dashboards, or its 124-second build.

September 18 activity includes 33 issues and 96 pull requests

GitHub recorded 4,448 stars, 33 open issues, 96 open pull requests, and a last push on September 18, 2026. The latest-release endpoint returned no GitHub Release. Recent issues cover the installer altering a Claude setting and provider environment variables not reaching the self-hosted container. That mix shows active development and a large review queue; it does not say that 129 bugs are open because the combined count includes pull requests.

The clean 134-of-134 result makes Router easier to trial than many young gateways. Production approval should depend on a second set of evidence: route quality on your tasks, exact cost agreement with provider invoices, cache isolation, encrypted credentials, and a permitted license use. If one provider and one model already handle the workload, the 2,097-file gateway is extra machinery. If model choice changes task by task, the trial has a concrete question to answer.

Alternatives

ProjectWhat it isPick it when
LiteLLM gh↗A multi-provider gateway with broad API coverage, budgets, logging, and load balancing.pick this instead when provider coverage and gateway administration matter more than Weave's bundled per-action scorer.
Portkey AI GatewayAn MIT-licensed gateway focused on providers, guardrails, fallbacks, and observability.pick this instead when policy controls and a permissive license matter more than a local automatic model selector.
RouteLLMA framework for training, evaluating, and serving language-model routers.pick this instead when you want to study or train routing policies rather than adopt a full agent gateway and dashboard.

What people are saying

  1. [github-trending] router-for-me/CLIProxyAPI
  2. [github-trending] weave-os/router
  3. [github-trending] theagentrouter/agent-router
  4. [theverge] TP-Link’s first Wi-Fi 8 router is almost here
  5. [github-trending] workweave/router
  6. [velocity-scout] remix-run/react-router

Sources

  1. Weave Router README
  2. Router configuration reference
  3. Elastic License 2.0 text in Router
  4. Measured Router commit 76a9bbb
  5. Issue 867: 1-hour cache-write accounting
  6. Issue 789: preferred-model semantic-cache isolation
  7. Issue 1360: self-hosted provider environment
  8. Router npm installer guide

More ai tools reviews

PaddleOCR · GLiNER2 · bazi-skill · transformers.js · OpenBitFun · rowboat · the whole board →