Repository navigation
Features
Yohan Marshall edited this page Oct 17, 2026
·
18 revisions
What OpenSwap does today: the app, CLI, menu bar extra, Desktop widget, 5-hour kickoff, and Remote tasks. OpenSwap is a standalone MIT descendant of claude-swap. What changed in each release: CHANGELOG.
| Feature | Where | Notes |
|---|---|---|
| One signed, notarized app |
brew install --cask mar3co/openswap/openswap, or the DMG |
Menu bar extra, widget, and openswap command in one app. Apple silicon and Intel |
| Setup window | First launch | Move to Applications, sign in with Claude and Codex, Open at login, extras. Settings › General › Setup assistant reopens it |
| Open at login | Setup window, Settings › General › This Mac | Same login item as openswap setup
|
| Updates | brew upgrade --cask openswap |
A DMG install updates from the next DMG, which offers to replace the old copy |
| Uninstall |
More… › Uninstall OpenSwap…, openswap uninstall
|
Keeps saved accounts unless you also delete them (--zap) |
Guide: Getting started
| Feature | Where | Notes |
|---|---|---|
| Save and switch Claude Code logins |
openswap add, openswap switch
|
Does not log you out |
| Sign in with Claude | Extra Add account | Browser sign-in; saves whoever signs in |
| API key or setup token slots |
openswap add-token, extra Add |
No 5h/7d bars. Kickoff skips API keys |
| API credit fallback |
openswap add-token … --for N, extra Use as API credit for
|
A Console API key is auto-switch’s last resort when every subscription is at its limit. Needs bought Console credit |
| Dead API key detection | Cards, openswap list
|
Revoked or invalid, out of credit, at its spend limit: never switched onto |
| 5-hour and 7-day usage |
openswap list, extra, widget |
Same numbers everywhere |
| Per-model weekly limits (Fable, …) |
openswap list, popover, title option |
Fold into auto-switch with autoswitch.model
|
| Auto-rotate near a limit |
openswap auto, extra Settings |
Shared engine and settings.json policy; extra on/off in menubar_settings.json
|
| best strategy | default | Stay until ~90%, then most quota left |
| consume-first strategy | Settings or openswap config
|
Soonest weekly reset (use-it-or-lose-it) |
| soonest-5h strategy | Settings or openswap config
|
Soonest 5-hour session reset |
| Aliases, disable, export/import | CLI, card ··· menu |
openswap export / import. Disable keeps the login, skips rotation |
| JSON for scripts | --json |
auto --json is an event stream |
| Codex CLI accounts |
openswap codex add / list / switch
|
Independent rotation from Claude. autoswitch.codexEnabled (default on) |
Guides: Accounts · Auto-switch · CLI reference
| Feature | Where | Notes |
|---|---|---|
| Usage popover | Click the extra | Bars, percent, time until reset. Stays while you look; closes ~12s after the pointer leaves |
| Claude | Codex tabs | Popover | The second tab is ChatGPT once desktop switching is on; bars are Codex usage |
| Click a card to switch | Popover | Asks first (optional). Starts the auto-switch cooldown so the engine does not snap back |
| Swap animation | Menu bar mark | Plays after a switch; respects Reduce Motion |
| Card menu | ··· on each card | Rename, Disable / Enable, Remove |
| Org names on cards | Popover, title, widget | Alias or org tag (personal); email as subtitle |
| Auto-switch control | Bottom right of the popover | Follows the open tab |
| Settings | Gear in the popover | General, Automation, Remote |
| Dark Mode | System Settings → Appearance | Popover, not the menu bar wallpaper tint |
| Menu-bar Show | Settings → General | Claude, ChatGPT, Both, or Logo only. The OpenSoft mark stays visible |
| Title: name, 5h, 7d, model limits | Settings → General | Model limits appear only when Claude is included |
| Strategy picker | Settings → Automation | Most quota left / Burn weekly first / Burn 5-hour first |
| Notifications | System | Switch, quarantine, exhausted, kickoff |
| Remember position | Cmd-drag | Position is remembered |
| ChatGPT desktop switch | ChatGPT | Experimental, off until Enable ChatGPT switching; you confirm every restart |
Guide: Menu bar
| Feature | Where | Notes |
|---|---|---|
| Small / medium / large / extra large | Notification Center and Desktop | Small is most remaining (not locked to active); up to 2 / 3 / 6 / 10 |
| Edit Widget | Right-click the widget | All accounts, combined remaining, or one account; 5h / 7d / both |
| Combined remaining | Widget | Remaining slots across healthy Claude accounts, not an average percent |
| Last updated | Widget footer | When the snapshot is older than 10 minutes |
| Tap to switch | Widget | Extra must be running; CLI switch, not a ChatGPT desktop restart |
| Live countdown | Widget | Extra writes a snapshot the widget reads |
| Dark Mode | System appearance / wallpaper | Follows Light / Dark |
| Ships in the app | Edit Widgets → OpenSwap | Registered when the app starts; a source install builds it with Xcode |
Guide: Desktop widget
| Feature | Where | Notes |
|---|---|---|
| Open idle 5h windows on a schedule | Settings → Automation → Start available 5-hour windows | Local clock, once per day |
| Only accounts that report a 5-hour limit | Weekly-only plans and API keys are skipped | |
| Does not change default login | Live login pinged in place; Codex idle slots use an isolated home |
The time you set is the start, not “9:00 minus 5 hours.” Guide: 5-hour kickoff
| Feature | Where | Notes |
|---|---|---|
| Connect to OpenTag | Settings → Remote, openswap worker connect
|
Approve the Mac in your browser; the page says whether it worked |
| Guided setup | Settings → Remote → Set up Remote tasks…, openswap worker setup
|
Start the worker, pick the account and the folders |
| Its own worktree per task | Approved folders | Your checkout is never touched |
| Permission limits |
openswap worker permissions, origins
|
Set only on the Mac |
Off until you pass the live check. Guide: Remote tasks
| Feature | Where | Notes |
|---|---|---|
| Account name on your existing line | Settings › General › This Mac, openswap statusline --install
|
Opt-in. Keeps your status line; adds the OpenSwap account name on the row with the percentages |
| Codex label (paint only) | openswap statusline --codex |
Prints the live Codex account; does not wrap config.toml
|
| Turn off | Same switch, openswap statusline --uninstall
|
Restores the previous command, or removes a line we created |
Guide: Status line
- Terminal dashboard (
openswap tui/openswap watch): gone. Use the extra oropenswap list. - Session mode (
openswap run/map/unmap): gone. Switch with the extra oropenswap list/openswap switch. Sessions. - A spend cap on API keys: OpenSwap cannot see a key’s spend. Set a spend limit on the key’s Console workspace.
- Unattended ChatGPT desktop rotation: not implemented. ChatGPT.
- Windows and Linux.
- Placing the extra next to Claude’s extra automatically (Cmd-drag it)
- Placing the widget automatically (Edit Widgets → OpenSwap)
- A
openswap kickoffCLI command (kickoff is extra-only)
mar3co/openswap · MIT · OpenSoft · descendant of claude-swap
Using OpenSwap
macOS
Reference