Repository navigation
v0.9.0: Proxy contract consolidation
[0.9.0] — 2026-08-09
Forge's Proxy has become its most-used integration surface while backend
support has expanded organically. Forge 0.9 consolidates that growth around a
clear sidecar contract, replacing accumulated configuration and metadata seams
before they become a long-term maintenance burden. Guardrail behavior and
native workflows remain intentionally stable; the breaking changes are
concentrated in the Proxy contract. See
Migrating to Forge 0.9 for the complete
old/new/action table.
Breaking — ordinary Proxy deployments
- External Anthropic selection moves from removed
backend_protocol/
--backend-protocoltobackend="anthropic"/--backend anthropic.
Generic external omission remains OpenAI-compatible, with explicit
backend="openai"also supported. /healthnow forwards backend readiness; Forge liveness is
/forge/health./v1/modelsis the backend's honest catalog rather than a
synthesized Forge one-model list, and public catalog reads never mutate
private vLLM routing identity.- Response
modelreports the actual pinned, discovered, configured, or
request-routed wire identity. - Proxy is unconditionally no-compaction and never budget-compacts or deletes
caller history. Missing context-window metadata no longer blocks unmanaged
inference or managedbudget_mode=backend. - Unmanaged startup performs no metadata query. Static-credential unpinned
vLLM identity discovery moves to first inference and remains retryable.
Added
- Closed read-only forwarding for
/health,/v1/health,/v1/models,
/models, and/props, applying the same one-backend-credential rule as
inference while preserving exact path/query, backend status/body/content
type, recalculated length, and Forge CORS; transport failures map to 502. - Local
/forge/healthliveness and/forge/usage, which exposes one
last-completed eligible process-local context snapshot or 204. Session
attribution prefers a non-empty Claude Code session header over a non-empty
string LiteLLM body ID; subagent requests do not replace the snapshot. - Canonical unmanaged
openaiandanthropicbackend profile selectors.
Breaking — specialized valid configurations
- Unmanaged
budget_tokensis a reporting denominator only. Managed
backend,manual,forge-full, andforge-fastremain allocation modes,
distinct from preserved native compaction. - Explicit unmanaged/Ollama ports replace the URL authority port while keeping
normalized prefixes. CLI--extra-flagsis now the terminal argv remainder. - vLLM served identity and reporting window are independent. A model ID without
max_model_lenpermits inference; a pin settles identity only, while an
explicit budget settles reporting only. Clean vLLM passthrough/raw tools and
tool choice now reach the backend instead of being accepted and dropped. litellm_session_idis preserved through applicable conversion/adapters.- Constructor default introspection may observe omission as
Nonerather than
old concrete values.
Breaking — direct Python and low-value invalid inputs
- Removed the exported combined
discover_backend_metadata()method. Direct
consumers useget_served_model_name()for vLLM identity and
get_context_length()for an honest window. vLLM exact-matches the selected
model; Anthropic no longer fabricates 200K/8192 context defaults. - Native context accounting prefers backend usage. After compaction invalidates
that observation,CompactEvent.tokens_afterreports a fresh character/4
heuristic until another backend result supplies usage. - Profile-invalid identity fields, unmanaged
budget_mode, ineffective
Ollama/unmanagedextra_flags, conflicting managed flags, contradictory
serialization switches, invalid manual budgets, and negative limits now fail
before side effects. Python raisesValueError; CLI validation exits 2.
Preserved boundaries
- Proxy keeps flat CLI and
ProxyServerconfiguration surfaces, inference
aliases, global CORS, closed unknown routes, retry/exhaustion behavior,
credential isolation, streaming shape, managed ownership/shutdown, and
managed/unmanaged serialization defaults. - Native
setup_backend(),ContextManager,WorkflowRunner, and built-in or
custom compaction remain supported and distinct from Proxy no-compaction. - The optional Anthropic integration now has an
anthropic>=0.86.0floor.