Keep the warm path.
A healthy session keeps its account. A better score or another account’s reset does not move it.
Local account routing / Codex + Claude Code
One session. One account.
Until it is time to switch.
Noria pools your authorized Codex and Claude accounts on your machine. Sessions stay put until a limit requires a switch. New work goes where remaining allowance and reset clocks make sense.
v0.1.0 · Open source · No paid fallback or model swaps
# Install the local router
$ npm install -g @amxv/noria
$ noria init
# Sign in to an isolated account
$ noria account add work --provider codex
$ noria account login work
$ noria quota refresh
# Start the gateway in this terminal
$ noria serveSession affinity / illustrated
Every request stays here while this account can serve.
A healthy session keeps its account. A better score or another account’s reset does not move it.
New sessions weigh independent five-hour and weekly windows, expected usage, and work already assigned.
Retry the pending request on another eligible account before output starts. Keep the same model and request.
The next account is a scheduling decision.
Five-hour and weekly allowances expire independently. A little weekly quota that resets soon can be more useful now than a larger allowance with days left. Noria also accounts for reservations and load.
| Account | Five-hour window | Weekly window | Placement |
|---|---|---|---|
| A | 72% leftresets in 3 hours | 5% leftresets in 18 minutes | New session candidate |
| B | 84% leftresets in 4 hours | 61% leftresets in 4 days | Existing sessions stay |
| C | 90% leftresets in 2 hours | Exhaustedresets in 6 hours | Weekly limit blocks use |
A may suit a new session if its expected usage and current reservations allow. B keeps its healthy sessions. C must clear its weekly limit first. This is an explanation, not live telemetry or a promised selection.
A session’s route
Account A’s cache remains account-local.
The pending request continues on B when safe.
No automatic return to A when its allowance resets.
Cache belongs to the account.
Hard affinity keeps requests on the same account while it is usable. After a necessary switch, the new account’s cache warms through normal work. Noria does not migrate caches or transcripts.
The tradeoff is deliberate: a single healthy session will not use every account’s spare quota. Run independent sessions to make use of a wider pool.
Read the limits before you startYour tools. A local route.
Go gateway. Native Responses and Messages protocols. Account profiles isolated under ~/.noria. Your normal client history and settings stay in place.
Native clients are required. Claude quota reads also need Node and the pinned SDK bridge. Set up the Claude bridge →
Ready when you are.
Sign in yourself. Start the local gateway. Keep working.
When every matching account is exhausted, Noria reports unavailability. It cannot create extra quota or splice a partially delivered stream. Live multi-account use has not yet been validated. Read the release limits →