Local account routing / Codex + Claude Code

Keep your
agents in flow.

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

your terminal01
# 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 serve

Session affinity / illustrated

Session 01Account A

Every request stays here while this account can serve.

01 / Stay

Keep the warm path.

A healthy session keeps its account. A better score or another account’s reset does not move it.

02 / Place

Use the next window well.

New sessions weigh independent five-hour and weekly windows, expected usage, and work already assigned.

03 / Continue

Switch at a real limit.

Retry the pending request on another eligible account before output starts. Keep the same model and request.

The next account is a scheduling decision.

More headroom is only
part of the picture.

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.

An illustrative poolExample values · remaining quota
AccountFive-hour windowWeekly windowPlacement
72% leftresets in 3 hours5% leftresets in 18 minutesNew session candidate
84% leftresets in 4 hours61% leftresets in 4 daysExisting sessions stay
90% leftresets in 2 hoursExhaustedresets in 6 hoursWeekly 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

A
Start. Stay. Keep working.

Account A’s cache remains account-local.

Applicable limit reached
B
Retry. Warm. Stay.

The pending request continues on B when safe.

No automatic return to A when its allowance resets.

Cache belongs to the account.

Let a good
session settle in.

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 start

Your tools. A local route.

Same native clients.
A little more continuity.

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 →

In another terminal

noria run codex --
noria run claude --
Set up your client

Ready when you are.

Give your next session
room to keep going.

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 →