Skip to main content

Claude Code, overclocked โ€” multi-account hot-swap, context-threshold handoff, instrumented statusline, and model routing for multi-agent workflows

Project description

overclaude

PyPI version License: MIT Platform: macOS

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

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

overclaude-1.0.2.tar.gz (430.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

overclaude-1.0.2-py3-none-any.whl (487.8 kB view details)

Uploaded Python 3

File details

Details for the file overclaude-1.0.2.tar.gz.

File metadata

  • Download URL: overclaude-1.0.2.tar.gz
  • Upload date:
  • Size: 430.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for overclaude-1.0.2.tar.gz
Algorithm Hash digest
SHA256 1ba02ac63e783d1370e8557a5b44c53bc6ad64d3e59568397bcd3f57c1e3607c
MD5 a0fa03cc83c068612ec90cb468b96ac4
BLAKE2b-256 0d4138ca5101765ed3a71259dc0b350b6a6d7269665cf74c613fc6154a1d265c

See more details on using hashes here.

Provenance

The following attestation bundles were made for overclaude-1.0.2.tar.gz:

Publisher: publish.yml on arthur-bump-pm/overclaude

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file overclaude-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: overclaude-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 487.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for overclaude-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5f217ac929896ff8c4d3460d52c90a74355c7f6bd7e46ca3573a41782886f7cf
MD5 41e2dac89e8334e512229e8efd2b0997
BLAKE2b-256 6f76103f2838f1f3aa7d197042f4e728fbfd1a5d42be9b3f8a9984ba1fcdce53

See more details on using hashes here.

Provenance

The following attestation bundles were made for overclaude-1.0.2-py3-none-any.whl:

Publisher: publish.yml on arthur-bump-pm/overclaude

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page