Sessions: auctions for agent loops
Cache locality becomes a priced, bid-able term. Sticky by default, contestable every turn, no hold-up rent.
An agent's loop resends a growing shared prefix every turn. Prefix caching makes those re-reads nearly free, but only at the provider that served the previous turn. That one fact breaks a naive per-turn auction in both directions. Auction blind, and the loop migrates to whoever quotes lowest while you pay full re-prefill every turn. Pin the loop to the cache holder, and that provider can reprice you at will: the classic hold-up problem.
Omnious makes cache locality a priced, bid-able term, and keeps the auction running every turn.
The mechanism in four rules
- Providers opt in on the quote. Two extra signed fields: a cheaper rate for cached input tokens, and a session TTL, a commitment to hold the cache and those rates for that long.
- Turn 1 locks the tariff. A normal symmetric auction runs, scored on forecast whole-session cost. The winner's second-score cleared rates freeze for the session.
- Every later turn is a contest on effective cost. The incumbent is scored at its locked tariff with the prefix at the cached rate. Every challenger is scored at spot, paying full re-prefill in both price and latency.
- Winning as the incumbent is not a repricing event. It bills exactly its locked rates. If a challenger wins despite the re-prefill penalty, the session migrates and the challenger's cleared rates become the new lock.
Why the lock matters
Re-clearing the incumbent against rivals who all carry re-prefill costs would hand the entire cache saving to the incumbent as premium, every turn. The lock closes that: the incumbent's rates were set while the market was still symmetric, and nothing it bids mid-session changes what it is paid. Sticky by default, contestable every turn, and no hold-up rent.
- router/src/sessions.ts locks, budgets, effective-cost contests
- designs/omnious.md the section 13 mechanism analysis