fix(agent-interface): default the router to a model it can bill - #200
Conversation
`zai/glm-4.7` is not in the Tangle router catalog, so a managed run that named no model asked for a model the router does not carry. The router answers a Tangle-funded call only when it both routes the model and holds a spend-authorizing price for it. A model that fails either test answers 503, and a CLI reads 503 as transient and retries until its own timeout, so the run emits neither output nor error for many minutes. `zai/glm-5.2` is the same provider family, the router routes it, and the router holds an operator-reviewed price for it.
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — bdb489ed
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.
tangletools · auto-approval · reason: drewstone_author · 2026-08-17T00:45:54Z
|
@tangletools review now |
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — bdb489ed
This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.
This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.
tangletools · auto-approval · reason: drewstone_author · 2026-08-17T00:57:31Z
Post-merge verification against the live routerReleased as The doc comment on the constant asks for both properties to be confirmed against the live router before the id changes. I ran that check with a funded key. Result: the pricing bug is fixed, and a separate live condition still blocks the default.
Two readings:
Not a reason to hold the release — this strictly improves on a default that could never be billed. But if the GLM upstream stays down, the default is still effectively unservable, and Catalog note for whoever changes this id next: |
Problem
TANGLE_ROUTER_DEFAULT_MODELwaszai/glm-4.7. That model is not in the Tangle router catalog —GET https://router.tangle.tools/v1/modelscarries 556 models, and the zai family it serves isglm-4.5,glm-4.5-air,glm-5,glm-5-turbo,glm-5.1,glm-5.2. There is noglm-4.7(onlycerebras/zai-glm-4.7, a different provider and id).So a managed run that named no model asked the router for a model it does not carry.
Why this hangs instead of failing
The router answers a Tangle-funded call only when it both routes the model and holds a spend-authorizing price for it. A model that fails either test answers 503. A CLI reads 503 as transient and retries until its own timeout, so the run emits neither output nor an error for many minutes.
Change
zai/glm-5.2— same provider family, the router routes it, and the router holds an operator-reviewed price for it. The constant now documents both properties a replacement must hold.Verification
The id was checked against the live router catalog:
glm-5.2reportsrouteability.routeable = true, and it is one of the hand-curated provider price definitions intangle-router.Local
tscandvitestcould not run in this checkout:TS2688: Cannot find type definition file for 'node'reproduces on a clean tree without this change, so it is a pre-existing environment issue here rather than a result of this edit. CI is the verification path.