feat(gateway): add BEAMR as an LLM gateway#418
Conversation
BEAMR is an OpenAI-compatible inference router: it classifies each request, routes it to the cheapest capable provider, and settles that single call in USDC on Base over x402. That makes it a SIDECAR-tier gateway with the same shape as Surplus/Venice — bridged through the existing claude-code-router. Unlike key-based gateways, BEAMR is self-hostable, so the routing trigger is the deployment URL (BEAMR_BASE_URL) rather than a key prefix; BEAMR_API_KEY is optional (only if the deployment is auth-gated) and BEAMR_MODEL defaults to `auto` so BEAMR's own router picks the model. - scripts/llm-gateway.sh: `beamr)` case (sidecar via start_ccr_sidecar) - dashboard: GatewayProvider enum, auth detection, secret descriptor + mapping - workflows: pass BEAMR_BASE_URL/BEAMR_API_KEY/BEAMR_MODEL into the run steps; exclude the BEAMR gateway secret from per-skill secret extraction - README: gateway table row + model-override notes Setting BEAMR_BASE_URL in the dashboard flips aeon.yml's gateway.provider to `beamr`; removing it reverts to `direct`. No behavior change for existing gateways. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Hey @SahilParikh03 — thanks a lot for this (and the companion beamr-route skill in #419). I'm going to put both on hold for a little while: before I land a gateway integration for BEAMR I'd like to get more context on where the project is heading. Nothing's wrong with the PRs — I'll circle back once I have more info. Appreciate the work, and sorry for the wait in the meantime. 🙏 |
|
No worries! @aaronjmars |
|
Thanks @SahilParikh03 — reviewed this alongside #419. The runtime wiring is clean and faithfully mirrors the existing sidecar providers (Surplus/Venice), and it's correctly opt-in (default One thing blocks merge: the README advertises BEAMR as selectable in the Authenticate modal "via the dropdown" (
The Secrets-tab path (set
Minor, while you're in there: Happy to merge once the docs match the actual onboarding path. Thanks again! |
|
Thanks for this @SahilParikh03 — the approach is right: BEAMR is OpenAI-compatible, so riding the existing Please rebase onto current Blocker 1 — BEAMR is unreachable via
Blocker 2 — the advertised dropdown/paste flow isn't wired. Naming clash to resolve. Everything else looks good — quoting is correct ( |
|
Thanks for this @SahilParikh03, and apologies for the lag. The shape is right — BEAMR is OpenAI-compatible, so riding the The blocker is that the gateway layer got refactored out from under this branch in #469 (merged 2026-06-15), so the dashboard-side edits now conflict against deleted code and the auto-resolver wiring is missing. Here's the full path to land it: 1. Rebase onto 2. Register BEAMR in one place. Add an entry to beamr: { label: 'BEAMR', secretName: 'BEAMR_API_KEY', prefixes: [], domain: 'askbeamr.com' },Per the header comment in that file, this one entry flows automatically to the 3. Mirror Venice for the base URL. Because BEAMR's base URL is per-operator, model it on 4. Wire the auto-resolver in
5. Resolve the secret-name collision with #419. The 6. Fix the dropdown claim. The README says BEAMR is selectable in the Authenticate modal, but Once it's rebased with the registry entry + auto-resolver + the #419 naming sorted, ping me and I'll re-review. Thanks again for the contribution — the hard part (correct tier + working endpoint path) is already done. 🙏 |
|
Thanks for the contribution, @SahilParikh03 — the shell-level gateway case is a faithful clone of the Surplus/Venice pattern and the 1. The branch is stale (~106 commits behind 2. The dropdown entry is missing, so the feature is unreachable. The README and secret descriptor say to select BEAMR "via the dropdown," but 3. This overlaps BEAMR work that's already merged. If you'd still like to land a gateway version, could you:
Given the overlap with the already-merged |
|
Thanks @SahilParikh03 — the BEAMR integration itself reviews clean: the API key/base-URL are read from env (GitHub secrets, never hardcoded), the endpoint is https with no TLS-disable, shell vars are properly quoted (no injection), and GitGuardian passes. No security objections. The blocker is staleness: this branch is ~123 commits behind
Once it's rebased against the new gateway model, ping me and I'll re-review. Appreciate the contribution! |
What
Adds BEAMR to Aeon's LLM gateway roster (
direct | bankr | openrouter | usepod | surplus | venice | **beamr**).BEAMR is an OpenAI-compatible inference router: for each request it classifies difficulty, routes to the cheapest capable provider, and settles that single call in USDC on Base over x402. It's the same SIDECAR shape as Surplus/Venice, so it rides the existing
claude-code-routerbridge — no new payment code in Aeon.How it works
scripts/llm-gateway.shgains abeamrcase (SIDECAR tier): pointsclaude-code-routerat${BEAMR_BASE_URL}/api/v1/chat/completions, auth optional (BEAMR_API_KEY, defaults tox402), model${BEAMR_MODEL:-auto}.beamradded to the gateway enum + secrets descriptors; settingBEAMR_BASE_URLflips the gateway like the other providers.aeon.yml,messages.yml):BEAMR_BASE_URL/BEAMR_API_KEY/BEAMR_MODELwired through; secrets excluded from the extraction grep.Design note
BEAMR is self-hostable, so the trigger is
BEAMR_BASE_URL(your deployment) rather than a key prefix;BEAMR_API_KEYis optional. Happy to model it as a key instead if you'd prefer consistency with the other gateways.🤖 Generated with Claude Code