llm-calling

Five providers called without their SDKs; every provider fact pinned in a catalog with a source and a date.

llm-calling, packaged as provider_runtime, is an async Python runtime for LLM calls: five providers (OpenAI, Anthropic, Gemini, Moonshot, OpenRouter) over raw httpx, plus a second lane that runs local Codex and Claude agent sessions. It was extracted from Nexus, which pins it at an exact git revision.

The problem it answers: provider facts drift and get remembered wrong — token limits, reasoning wire values, cache mechanisms, pricing. Here they are a checked-in catalog: every row carries a source URL and a verification date, pricing is integer USD micros per million tokens, and any row change bumps a revision stamped into every plan. Terminal costing reads the plan's frozen accounting, never the live catalog. The alternatives were floats and runtime fetching, which is how the drift gets in.

No provider SDKs. The transport owns auth headers, HTTP, timeouts, and raw SSE framing; by its own comment it "parses nothing, classifies nothing." Per-provider codecs encode, decode, and classify errors, and httpx is the only runtime dependency. The README declines the standard wrapper features in writing: no fallback, no routing, no sampling knobs, no response cache, no JSON repair. There was a router once; a hard cutover deleted it, along with DeepSeek support.

Certification is a paid live test that leaves evidence. The OpenRouter Kimi row ships as OperatorUncertified, representable but unplannable, until a live probe observes the pinned upstream and a non-zero billed cache read, writing an evidence artifact whose revision gets pinned into the row. The alternative is trusting provider docs.

The agent lane is deliberately narrow: two routes, Codex and Claude SDKs, local pre-enrolled accounts only. Agent children get a fixed hardcoded PATH; PATH, HOME, and the config-dir variables are runtime-owned and caller-unsettable; both routes reject API-key credentials, and the live matrix certifies the refusal.

Numbers: 50 commits, 2026-04-27 to 2026-08-05, containing three hard cutovers — a rename, a full rewrite against a written spec, and the agent lane. 560 test functions in 38 files; test lines outweigh source, 21,055 to 19,439 by wc -l. CI builds the wheel and installs it into four clean venvs to prove the SDK extras are optional.

What is wrong with it. It has never been released: version 0.1.0, zero tags, a publish workflow that has never fired. Consumers pin git SHAs instead. The OpenRouter row remains uncertified, and an unmerged branch already repairs endpoint drift in its pin. One catalog row's introductory pricing expires 2026-08-31 by its own comment. Two total rewrites mean git blame reaches one to three commits deep on most files.

A catalog of facts with dates on them. When the dates go stale, so does the package — that is the contract.