69 lines
3.0 KiB
Markdown
69 lines
3.0 KiB
Markdown
---
|
|
summary: "Wayfinder setup for local gateway health, per-route breakdown, and savings."
|
|
read_when:
|
|
- Configuring Wayfinder usage tracking
|
|
- Debugging Wayfinder gateway health or savings display
|
|
- Explaining the Wayfinder gateway URL setting
|
|
---
|
|
|
|
# Wayfinder
|
|
|
|
[Wayfinder](https://github.com/itsthelore/wayfinder-router) is a self-hosted, deterministic
|
|
local/cloud LLM router. Its gateway runs on the user's machine (default
|
|
`http://127.0.0.1:8088`) and scores each prompt offline — no model call — to decide whether
|
|
the cheap/local or the dearer/cloud tier serves it. CodexBar polls the gateway's read-only
|
|
JSON endpoints and shows whether the gateway is up, how traffic split across the configured
|
|
routes, what that saved versus routing everything to the dearest tier, and the average routing
|
|
decision time.
|
|
|
|
The integration is read-only. CodexBar never sends prompts through the gateway, never calls
|
|
its chat endpoints, and the endpoints it polls return accounting metadata only — Wayfinder's
|
|
API never exposes prompt text.
|
|
|
|
## Setup
|
|
|
|
Wayfinder's read-only endpoints are unauthenticated on loopback, so there is nothing to log
|
|
in to: enable the provider in CodexBar Settings → Providers → Wayfinder. The default gateway
|
|
URL is used unless you override it:
|
|
|
|
```text
|
|
http://127.0.0.1:8088
|
|
```
|
|
|
|
If your gateway listens elsewhere, set the Gateway URL in Settings or export
|
|
`WAYFINDER_GATEWAY_URL`. Overrides must be HTTPS, or plain HTTP for loopback addresses only
|
|
(`localhost`, `127.0.0.0/8`, `::1`) — the gateway is a local service and remote plain-HTTP
|
|
endpoints are rejected.
|
|
|
|
## Display
|
|
|
|
- Gateway health: `ok` or `degraded` (with the number of models missing API keys), plus
|
|
offline-mode and dry-run markers.
|
|
- Routing split over the last 30 days: requests per configured route (up to 5, by request
|
|
count), using each route's own name from the Wayfinder config — the gateway has no field
|
|
asserting which route is "local," so CodexBar never guesses.
|
|
- Savings over the last 30 days versus routing everything to the dearest tier, with the
|
|
percentage. Dollar amounts appear only when the gateway config prices its models
|
|
(`cost_per_1k`); unpriced gateways report a relative percentage only.
|
|
- Average routing decision time, parsed best-effort from the gateway's Prometheus
|
|
`/metrics` endpoint. Decisions are computed offline, so this is typically well under a
|
|
millisecond.
|
|
|
|
## Endpoints polled
|
|
|
|
| Endpoint | Purpose |
|
|
| --- | --- |
|
|
| `GET /healthz` | Gateway status, configured models, offline flag, missing keys. |
|
|
| `GET /router/models` | Configured model count and dry-run flag. |
|
|
| `GET /v1/savings?period=30d` | Requests, tokens, realized/baseline cost, savings, per-route split. |
|
|
| `GET /metrics` | Decision-latency histogram for the average routing time (best effort). |
|
|
|
|
## Environment variables
|
|
|
|
| Variable | Description |
|
|
| --- | --- |
|
|
| `WAYFINDER_GATEWAY_URL` | Optional gateway URL override (HTTPS, or loopback HTTP). |
|
|
|
|
If the gateway is not running, CodexBar reports that it could not be reached and suggests
|
|
starting it with `wayfinder-router serve`.
|