Claude Code, overclocked โ multi-account hot-swap, context-threshold handoff, instrumented statusline, and model routing for multi-agent workflows
Project description
overclaude
Claude Code, overclocked. Hot-swap between Claude accounts without leaving your session, hand off to a fresh session before context fills up, and watch every usage meter live:
Fable 5 (high) | myproject (master*) | 3 sessions | ๐ค work [1/2]
โ model+effort โ folder+branch* โ live count โ account [slot/total]
ctx [โโโโโโโโโโ] 42% | 5h [โโโโโโโโโโ] 71% | week [โโโโโโโโโโ] 18% | Fable [โโโโโโโโโโ] 73%
โ context window โ 5-hour limit โ weekly limit โ model-scoped bucket
bars turn yellow at 50% ยท red at 80%
Install
pipx install overclaude && overclaude install
Fresh machine? If you get
command not found: overclaude, pipx's bin folder isn't on your PATH yet โ runpipx ensurepath && source ~/.zshrc, thenoverclaude install. (Usesource, notexec zsh: replacing the shell swallows any commands you pasted after it.)
Then register your accounts (once):
cswap add # registers the account you're logged in as
cswap alias 1 work # name your slots
cswap alias 2 personal
exec zsh # reload shell
Start a new Claude Code session (hooks load at session start) and check the statusline shows ๐ค work [1/2]. Adding a second account is guided โ run /swap add inside Claude Code.
Other install methods, requirements, upgrading
# uv
uv tool install overclaude && overclaude install
# from source
git clone https://github.com/arthur-bump-pm/overclaude && cd overclaude && ./install.sh
# track unreleased main
pipx install git+https://github.com/arthur-bump-pm/overclaude.git
Or paste this into any Claude Code session and let it install itself:
Install overclaude (https://github.com/arthur-bump-pm/overclaude) on this machine, fix anything its preflight complains about, and tell me what post-install steps I need to do myself.
Requirements: macOS, zsh, jq, pipx or uv, Max-style Claude subscription accounts. The credential engine (cswap) ships inside the package and installs automatically.
Upgrade: pipx upgrade overclaude && overclaude install
Uninstall: overclaude uninstall โ removes exactly what install added (backed up, settings merged out); account state in ~/.claude-swap-backup/ survives.
The installer is idempotent and conservative: timestamped backups of everything it touches, jq-merge into your existing settings.json (other hooks survive), never overwrites an existing statusLine, re-running is a no-op.
What you get
/swap โ hot account switching
Every live Claude Code session on the machine adopts the new account's credential within ~30 s โ mid-conversation, no restart, context preserved. Hit a rate limit? /swap work and keep typing. A preflight blocks the swap while another session is mid-task (force overrides).
/handoff โ escape context bloat, keep the thread
flowchart LR
A[Context fills up] --> B[Hook offers handoff at 60/75/85%]
B --> C[You accept]
C --> D[Claude packages goals, state, next steps]
D --> E[Session exits, shell wrapper relaunches]
E --> F[SessionStart hook auto-injects the package]
F --> G[Fresh session, ctx near zero]
G --> A
You lose the token bloat, not the thread. Works same-account (/handoff) or combined with a switch (/swap work handoff).
Statusline
The two-line display above โ and the kit's data spine: it publishes each session's context % to a relay the threshold hooks read. Skip the kit's statusline and handoff offers never fire.
ULTRACODE.md โ model routing for multi-agent workflows
A policy loaded into every session: bulk work rides cheap models, verification rides opus, only final judgment spends the top tier. Routing table, hard floors, escalation rules included.
Cheat sheet
| Command | Effect |
|---|---|
/swap |
Dashboard: accounts, usage, token health, live sessions |
/swap <target> |
Hot-swap all sessions to <target> (alias, slot, or email) |
/swap <target> force |
Same, bypassing the busy-session guard |
/swap <target> handoff |
Switch account + package this session + resume fresh |
/swap <target> restart |
Switch + restart this session in place (auth edge cases) |
/swap add |
Guided registration of a new account |
/handoff |
Package this session and continue fresh, same account |
/handoff status |
Context %, thresholds fired, pending package state |
/handoff cancel |
Cancel a pending handoff |
swap <alias> (shell) |
Panic-switch from any terminal, even with sessions hung |
Or skip memorizing and paste a prompt:
| Paste into Claude Code | Runs |
|---|---|
| "Swap me to my work account" | /swap work |
| "Context is getting full โ hand off to a fresh session" | /handoff |
| "Swap to personal and hand off in one shot" | /swap personal handoff |
| "What's my context and account usage right now?" | /handoff status + /swap dashboard |
| "Install overclaude on this machine" | the whole install flow (works before the kit exists) |
| "Upgrade overclaude and refresh the hooks" | pipx upgrade overclaude && overclaude install |
How it fits together
flowchart TD
SL[Statusline publishes ctx relay] --> HK[ctx-watch and ctx-notify hooks]
HK --> SK[swap and handoff skills]
SK --> GD[swap-guard busy preflight]
GD --> CS[cswap vendored engine]
CS --> KC[macOS keychain credential]
KC --> AS[All live sessions adopt within 30s]
The heavy lifting โ credential storage, keychain switching, OAuth refresh, usage polling โ is claude-swap by Onur Cetinkol (MIT), vendored unmodified in vendor/claude-swap/ and installed automatically. Go star it.
Caveats worth knowing
- A swap flips all live Claude Code sessions on the machine โ it's the shared keychain credential, not per-terminal.
- Hooks load at session start; sessions already open at install time won't offer handoffs until restarted (hot-swap works everywhere immediately).
- The Fable/scoped meter reads cswap's cache โ it refreshes whenever cswap runs and can lag between invocations. The 5h/week meters describe whichever account served the last response, so they lag ~1 turn after a swap; the ๐ค segment is always current.
- Legacy clients that don't report status (older VS Code extension builds) are judged busy/idle by transcript mtime during swap preflight.
- claude.ai connectors (Gmail/Drive/โฆ) are per-account server-side and don't follow a swap.
- Context thresholds re-arm 10 points below a fired threshold; Claude Code's auto-compact stays as the backstop.
Components (file โ destination)
| File | Installs to | Role |
|---|---|---|
bin/swap-guard |
~/.local/bin/ |
State/guard engine: whoami, live-session table, busy preflight, per-directory handoff state |
skills/swap/SKILL.md |
~/.claude/skills/swap/ |
The /swap skill |
skills/handoff/SKILL.md |
~/.claude/skills/handoff/ |
The /handoff skill |
hooks/handoff-inject.sh |
~/.claude/hooks/ |
SessionStart: auto-loads a pending handoff package (10-min TTL, per-directory) |
hooks/ctx-watch.sh |
~/.claude/hooks/ |
UserPromptSubmit: fires the 60/75/85% offers with re-arm hysteresis |
hooks/ctx-notify.sh |
~/.claude/hooks/ |
Stop: threshold banners |
statusline/statusline-command.sh |
~/.claude/statusline-command.sh |
Renders the statusline; publishes the ctx relay |
claude/ULTRACODE.md |
~/.claude/ + CLAUDE.md import |
Model/effort routing policy |
settings/settings-fragment.json |
merged into ~/.claude/settings.json |
3 hook groups, statusLine, 2 permission allows |
shell/zshrc-snippet.sh |
~/.zshrc (markers) |
claude() relaunch wrapper, swap alias, PATH guard |
vendor/claude-swap/ |
pipx/uv-installed if absent | The bundled credential engine |
Maintainer workflow
./sync.sh # live setup -> repo: scrub-gated diff, commit, push
./sync.sh --release # + version bump + GitHub release -> PyPI (trusted publishing)
./sync.sh --dry-run # preview either
A plain git push updates git installs only โ PyPI users get changes only via releases. The scrub gate aborts any commit whose diff contains usernames, emails, or /Users/โฆ paths. See CLAUDE.md for the full protocol.
License
MIT โ see LICENSE. Vendored claude-swap retains its own MIT license and copyright (Onur Cetinkol).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file overclaude-1.0.3.tar.gz.
File metadata
- Download URL: overclaude-1.0.3.tar.gz
- Upload date:
- Size: 431.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
313f1e78123add1c23c9ef524e59ed1f45f94896e2bb71decb3fb7942dac1afa
|
|
| MD5 |
74e9005cc92feb9e63bdb54cb05f6c5a
|
|
| BLAKE2b-256 |
fdac58ade45be1ba600766ba5a384d8f39f8cf50ebbc98852edbd8540dcfe371
|
Provenance
The following attestation bundles were made for overclaude-1.0.3.tar.gz:
Publisher:
publish.yml on arthur-bump-pm/overclaude
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
overclaude-1.0.3.tar.gz -
Subject digest:
313f1e78123add1c23c9ef524e59ed1f45f94896e2bb71decb3fb7942dac1afa - Sigstore transparency entry: 2189845634
- Sigstore integration time:
-
Permalink:
arthur-bump-pm/overclaude@56893da2caaed905cd7193870bd18a4e050ce982 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/arthur-bump-pm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@56893da2caaed905cd7193870bd18a4e050ce982 -
Trigger Event:
release
-
Statement type:
File details
Details for the file overclaude-1.0.3-py3-none-any.whl.
File metadata
- Download URL: overclaude-1.0.3-py3-none-any.whl
- Upload date:
- Size: 488.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df25f25d508968371056ed1974e868bb8b874f610fd87dbf3a3f329bb2483229
|
|
| MD5 |
a882338a3c6d372fdf9d3f0392bacc52
|
|
| BLAKE2b-256 |
800c2d9e1991cdb07ded102c835172a48b5225f6197d8d56be11854fa49d0595
|
Provenance
The following attestation bundles were made for overclaude-1.0.3-py3-none-any.whl:
Publisher:
publish.yml on arthur-bump-pm/overclaude
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
overclaude-1.0.3-py3-none-any.whl -
Subject digest:
df25f25d508968371056ed1974e868bb8b874f610fd87dbf3a3f329bb2483229 - Sigstore transparency entry: 2189845649
- Sigstore integration time:
-
Permalink:
arthur-bump-pm/overclaude@56893da2caaed905cd7193870bd18a4e050ce982 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/arthur-bump-pm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@56893da2caaed905cd7193870bd18a4e050ce982 -
Trigger Event:
release
-
Statement type: