Managed subscription pools are a deployment setting, not an organization
setting. They are always enabled for the hosted router at
router.workweave.ai, so there is no pool-enable switch in organization or
router settings. The organization settings link redirects to the hosted
router settings surface by design; that page manages keys and routing, not
the deployment feature flag. On a self-hosted router, set
ROUTER_SUBSCRIPTION_POOLS_ENABLED=true on the deployment if the commands
below report that pools are disabled.What you need
- Your own personal Weave Router key (
rk_…). Get one through Router onboarding, which also establishes your verified Router user identity. Organization keys issued from router settings belong to no user, so enrollment with them fails withsubscription_owner_unavailable. - A Claude Pro, Max, or Team seat for Claude enrollment, or a ChatGPT Plus, Pro, or Business seat for Codex enrollment.
- Node.js 18 or later, OpenSSL, and
bash(Git Bash or WSL on Windows). Ifjqis missing, the command downloads it on supported platforms.
Enroll an account
Set the router key in your shell without pasting it into chat or committing it to a repository:Team plans
Each member enrolls their own seat with their own personal key. On the Claude consent screen, pick the Team organization. Seats are identified by the provider user and organization, so every member of one Team plan is a separate account owned by that member. The router always tries your own seat first. While subscription sharing is on, it can also serve your request from a teammate’s seat when yours is busy or out of quota, and theirs from yours. To keep each person’s usage on their own seat, an admin turns off Share Claude and Codex subscriptions in the engineers card of router settings. Members who don’t enroll still use their own seat through subscription pass-through: the router forwards their Claude Code or Codex login upstream.Check account health
List the subscriptions you own. Keys authenticate requests; rotating or deleting an enrollment key does not remove registered capacity:status checks connectivity, client configuration, and account health in one
command:
/status must show the router base URL. The routed model in
the status line or ✦ Weave Router → … marker confirms that the request went
through Weave.
Verify both providers
Run a short request in Claude Code or Codex, then force one model from each native subscription family. In Claude Code, run:npx @weave-os/router models --claude or
npx @weave-os/router models --codex to see the model IDs currently available
to each installation. The router report will show the served model and
subscription-covered cost after ingestion.
How routing and billing work
- Claude subscription accounts are used for Anthropic Claude models.
- Codex subscription accounts are used for the native Codex model family.
- A model outside the matching subscription family uses Weave credits, your configured provider key, or an eligible fallback.
- Subscription-covered actions debit
$0from Weave credits. Their token usage can still appear in usage and routing reports. - Router tries your personal subscriptions, then subscriptions owned by other active members of your organization. Organization sharing is on by default and an admin can turn it off without disabling your personal subscriptions.
- For automatic routing, a suitable subscription-covered alternative may be chosen within the existing quality, tool and context requirements. Explicit models stay fixed.
- Authorized API capacity serves a request only when no enrolled subscription can serve its model, or after every eligible one is out of included quota. Busy seats, credential errors, and the 10-second rotation budget running out return an error instead of buying API. Accounts known to be in paid extra usage are skipped. Turn off extra usage at the provider if you need a strict guarantee, because the router cannot see an account cross into it until the response comes back.
- Boost follows the same selection policy as default stable routing; Max continues to ignore linked subscriptions.
Disable or remove an account
Use the account identifier shown byaccounts list:
Troubleshooting
The router says subscription pools are disabled
The router says subscription pools are disabled
The deployment has not enabled managed pools. This only happens on
self-hosted routers: set
ROUTER_SUBSCRIPTION_POOLS_ENABLED=true on the
deployment, or use the normal subscription pass-through described in
router authentication.The CLI lists accounts but my engineer row shows none
The CLI lists accounts but my engineer row shows none
Every registered subscription belongs to a verified user. Older accounts
without an owner are visible to organization admins under registered
subscriptions. An admin can assign an active member with a verified Router
identity while preserving the account and its existing credentials. No
replacement key or OAuth reconnect is needed.
The account is enabled but not ready
The account is enabled but not ready
A cooldown means the provider recently returned a quota response. Leave the
account enrolled; the router will make it available after the reported
reset time. A disabled account needs re-enrollment after a credential
rejection.
My request used credits instead of a subscription
My request used credits instead of a subscription
Confirm that the account is listed as
enabled and ready, that the
selected model belongs to the matching provider family, and that the
client is using your organization’s router base URL. Enrollment keys do not
partition capacity.
Start a fresh client session after changing its router configuration.Where are refresh tokens stored?
Where are refresh tokens stored?
Refresh tokens are encrypted at rest and owned by a verified user. Organization
registrations let other active members borrow serving capacity when sharing
is enabled, without granting account-management rights or spending the
owner’s Weave balance. Unassigned legacy accounts remain unavailable until
an admin assigns an owner. Never put a refresh token or router key in source
control or support messages.
