Skip to content

Features

Yohan Marshall edited this page Oct 17, 2026 · 18 revisions

Features

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.

The app

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

Core (CLI)

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

Menu bar extra

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

Desktop widget

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

5-hour kickoff

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

Remote tasks (opt-in)

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

Claude Code status line

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

Not in this product

  • Terminal dashboard (openswap tui / openswap watch): gone. Use the extra or openswap list.
  • Session mode (openswap run / map / unmap): gone. Switch with the extra or openswap 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.

Not yet

  • Placing the extra next to Claude’s extra automatically (Cmd-drag it)
  • Placing the widget automatically (Edit Widgets → OpenSwap)
  • A openswap kickoff CLI command (kickoff is extra-only)

Clone this wiki locally