Runtime middleware between your agent and its tools. Model-agnostic via LiteLLM. Enforced outside the context window. The rule is structurally interposed, not advisory.
Every compiled rule reduces to one of three enforcement patterns.
hook git_safety: on tool_call(name="bash") { if cmd.matches("--force") veto() } # syscall blocked at 42ms
hook schema_contract: on response_ready() { if out.violates("api.v2.schema") retry(max=3) }
# rule lives in tether runtime # not in system prompt # not in memory # not in context enforced · structural
You are already building this. Agent identity, memory, tool permissions, observability, routing, cost controls, handoffs, audit logs. That stack is yours.
The piece nobody has built yet is the correction lifecycle. Capture at the source, recurrence detection, rule promotion, runtime enforcement, evidence. Calx gives you that layer without forcing you to rebuild the rest.
# your harness from your_agent import Agent from calx import Tether agent = Agent(config="your_config") agent.wrap(Tether( org="your-org", operator="user-identity", rules=compiled, )) # agent keeps its shape # corrections compile into tether # enforcement is structural
Tether runs on top of LiteLLM. Every major model works the same way. Your model choice is yours.
Whether Tether runs inside Bench or inside your own harness, the compiled rule behaves the same way.
We find the recurring corrections in your workflow and tell you which compile into Tether hooks. Then we ship them.