{"id":"account-switcher","repo":"dutchakdev/paseo-plugin-account-switcher","url":"https://github.com/dutchakdev/paseo-plugin-account-switcher","package":"paseo-plugin-account-switcher","npm":{"package":"paseo-plugin-account-switcher","version":"0.2.0","integrity":"sha512-jDkaepdOPTV0W1DZX4BiQwStnXmt50A27VGiPsCIpQwRQZhAnYh1GEucBo0npJwGDDnnBofILKMSxWJFfaBMzw==","publishedAt":"2026-10-05T09:45:41.844Z","downloadsLast30Days":0},"name":"account-switcher","description":"Per-agent Claude and Codex accounts with account-wide quota monitoring","categories":["provider","monitoring"],"platforms":["macos","linux"],"caveats":["Requires macOS or Linux, Node.js 22.12+, and the official Claude Code, Codex, and Paseo CLIs.","Manual account switching reloads the agent; API keys and automatic rotation are unsupported.","Provider sign-in and usage formats may change with CLI versions."],"images":["https://raw.githubusercontent.com/dutchakdev/paseo-plugin-account-switcher/47cbe84f85477286bf81b52a40fc7e1f741dafe6/docs/assets/account-switcher-overview.png"],"themes":[],"health":{"manifestValid":true,"hasReadme":true,"hasLicense":true,"hasTests":true,"hasTypecheckScript":true,"updatedRecently":true},"scannedAt":"2026-10-05T09:53:23.766Z","addedAt":"2026-10-05T09:50:17Z","npmSecurity":{"status":"passed","blockingFindings":0,"advisoryFindings":0,"scannedAt":"2026-10-05T09:53:20.848Z","version":"0.2.0","integrity":"sha512-jDkaepdOPTV0W1DZX4BiQwStnXmt50A27VGiPsCIpQwRQZhAnYh1GEucBo0npJwGDDnnBofILKMSxWJFfaBMzw=="},"version":"0.2.0","security":{"status":"passed","blockingFindings":0,"advisoryFindings":0,"scannedAt":"2026-10-05T09:53:20.848Z","commit":"47cbe84f85477286bf81b52a40fc7e1f741dafe6"},"author":"dutchakdev","license":"MIT","paseoVersionRequirement":"^0.8.0 || 0.9.* || 0.10.* || 0.11.*","descriptionNodes":[{"type":"text","text":"Per-agent Claude and Codex accounts with account-wide quota monitoring"}],"caveatNodes":[[{"type":"text","text":"Requires macOS or Linux, Node.js 22.12+, and the official Claude Code, Codex, and Paseo CLIs."}],[{"type":"text","text":"Manual account switching reloads the agent; API keys and automatic rotation are unsupported."}],[{"type":"text","text":"Provider sign-in and usage formats may change with CLI versions."}]],"manifest":{"id":"account-switcher","requirements":{"paseo":"^0.8.0 || 0.9.* || 0.10.* || 0.11.*"},"build":[["npm","ci","--ignore-scripts","--legacy-peer-deps"],["npm","run","build"]]},"repoMeta":{"stars":1,"defaultBranch":"main","pushedAt":"2026-10-05T09:42:42Z"},"owner":{"login":"dutchakdev","avatarUrl":"https://avatars.githubusercontent.com/u/1294321?v=4"},"installNotesHtml":"<p>Install from npm on a daemon running Paseo 0.9 or newer:</p>\n<pre><code class=\"language-sh\">paseo plugin install npm:paseo-plugin-account-switcher --host 127.0.0.1:6767\n</code></pre>\n<p>The npm package ships the generated launcher, so no build runs on the daemon.\nPaseo 0.8 has no npm sources; install from Git there with\n<code>paseo plugin install dutchakdev/paseo-plugin-account-switcher</code>, which downloads\nthe source and runs the manifest's dependency and build steps.\nTo review or develop the source first, use a local checkout:</p>\n<p>Download or clone this repository onto the <strong>daemon's machine</strong>, then run these commands from its directory:</p>\n<pre><code class=\"language-sh\">npm ci --ignore-scripts --legacy-peer-deps\nnpm run build\nnpm run typecheck\nnpm test\npaseo plugin install \"$PWD\" --host 127.0.0.1:6767\npaseo plugin ls account-switcher --host 127.0.0.1:6767\n</code></pre>\n<ol>\n<li>In Paseo, enable <strong>Settings → Plugins → Enable plugins</strong> if needed. Plugins are trusted, unsandboxed code with access to the daemon user's files, processes, credentials, and network.</li>\n<li>Confirm that <code>account-switcher</code> is <strong>running</strong>. Open <strong>Accounts</strong> in the sidebar, or <strong>Accounts and limits</strong> in the Command Center.</li>\n<li>Your existing <strong>Current CLI · Claude</strong> and <strong>Current CLI · Codex</strong> profiles appear automatically. They use the daemon's existing CLI authentication.</li>\n<li>Select <strong>Enable</strong> in Accounts to turn on account switching. This saves the original provider commands and installs the plugin's launchers.</li>\n</ol>\n<p>The example targets the local daemon at port <code>6767</code>. For a different daemon, follow th…</p>","readmeText":"# Account Switcher for Paseo\n\nUse multiple Claude and ChatGPT/Codex subscription accounts in Paseo. Choose an account for each agent, switch within an existing chat, and see limits across your saved accounts.\n\n![Account Switcher in Paseo: Claude and Codex account limits, the in-chat account dialog, and the composer account chip.](docs/assets/account-switcher-overview.png)\n\n- **Sign in from Paseo.** Add an account, finish the official provider sign-in, and return to your chat.\n- **Switch per agent.** The account chip opens a dialog on desktop or a bottom sheet on mobile. Changes apply only when you choose **Apply**.\n- **Keep your setup.** Profiles separate credentials while sharing provider settings, skills, and session history.\n- **Track account limits.** See used and remaining percentages, reset times, and freshness for every reported window.\n- **Use a default.** Choose the account used by new agents for each provider.\n\n## Requirements\n\n- **Paseo 0.8.x, 0.9.x, 0.10.x, or 0.11.x**, including beta releases, on a **macOS or Linux** daemon and on the connected client.\n- **Node.js 22.12.0 or newer**, with npm.\n- Official **Claude Code**, **Codex**, and **Paseo** CLIs available to the daemon. Both provider CLIs must be installed, even if you initially use only one.\n- Claude or ChatGPT subscription authentication. API keys and custom authentication/provider overrides are unsupported.\n\nThe interface is in English. Reset dates use the viewing device's local time zone. See [installation](docs/installation.md) for remote hosts and [verification](docs/verification.md) for the scope of recorded testing.\n\n## Quick start\n\nInstall from npm on a daemon running Paseo 0.9 or newer:\n\n```sh\npaseo plugin install npm:paseo-plugin-account-switcher --host 127.0.0.1:6767\n```\n\nThe npm package ships the generated launcher, so no build runs on the daemon.\nPaseo 0.8 has no npm sources; install from Git there with\n`paseo plugin install dutchakdev/paseo-plugin-account-switcher`, which downloads\nthe source and runs the manifest's dependency and build steps.\nTo review or develop the source first, use a local checkout:\n\nDownload or clone this repository onto the **daemon's machine**, then run these commands from its directory:\n\n```sh\nnpm ci --ignore-scripts --legacy-peer-deps\nnpm run build\nnpm run typecheck\nnpm test\npaseo plugin install \"$PWD\" --host 127.0.0.1:6767\npaseo plugin ls account-switcher --host 127.0.0.1:6767\n```\n\n1. In Paseo, enable **Settings → Plugins → Enable plugins** if needed. Plugins are trusted, unsandboxed code with access to the daemon user's files, processes, credentials, and network.\n2. Confirm that `account-switcher` is **running**. Open **Accounts** in the sidebar, or **Accounts and limits** in the Command Center.\n3. Your existing **Current CLI · Claude** and **Current CLI · Codex** profiles appear automatically. They use the daemon's existing CLI authentication.\n4. Select **Enable** in Accounts to turn on account switching. This saves the original provider commands and installs the plugin's launchers.\n\nThe example targets the local daemon at port `6767`. For a different daemon, follow the [host-specific installation steps](docs/installation.md#remote-daemons).\n\n## Add an account\n\nSelect **Add**, choose a provider, name the account, and select **Add and sign in**. The official CLI runs in the background; the plugin opens a sign-in dialog without creating a terminal or workspace.\n\n| Where you use Paseo | How to open sign-in |\n| --- | --- |\n| Desktop app | The dialog tries to copy the link. Paste it into your usual browser; **Copy link** retries copying. |\n| Web or native mobile client | The dialog tries to open the browser. **Open browser** and **Copy link** remain available. |\n\nIf clipboard access is unavailable, expand **Show sign-in link** and copy its selectable text.\n\n- **Claude:** finish on the provider's page. If it gives you an authorization code, paste the **complete code, including the part after `#`**, into **Authorization code** and select **Finish sign-in**.\n- **Codex — Device code:** enter the displayed code on the provider's page. This is the choice for a phone or another computer. **Copy code** copies it.\n- **Codex — Browser:** finish in a browser on the **daemon's computer**. The callback uses localhost. From another device, cancel and choose **Device code**.\n\nThe plugin verifies the identity and refreshes limits automatically. **Check sign-in** in the account's **⋯** menu provides a manual check. Enter passwords only on the provider's official page.\n\nClosing the dialog leaves **Continue sign-in** on the account. **Cancel sign-in** stops the process before releasing the profile. While sign-in is active, the account cannot be applied, made the default, or deleted. A failed start leaves the account available for **Retry sign-in** without creating a duplicate. Plugin reloads stop pending sign-ins; start again afterward.\n\n### Manage accounts\n\nThe **⋯** menu contains refresh, check sign-in, default, sign-in, rename, and delete actions. Account rows show identity, default status, and counts of current and pending agents.\n\nBefore signing in again, switch agents away from that profile. To delete a managed account, clear its default and all current or pending selections first. Deletion requires confirmation. **Archived agents retain their account binding for resume**; restore and switch them before deleting the account. System profiles cannot be deleted.\n\n## Switch an existing chat\n\n1. Select the account chip beside the message field to open **Account** over the current chat.\n2. Under **Switch to**, choose a verified account from the **same provider**. The existing account stays marked **current**; the selected account is **pending**.\n3. When the agent is idle and has no pending permission request, select **Apply “name”**.\n\nYou can select an account during a response, but it is **never applied automatically**. **Cancel selection** clears it. **All accounts** opens the full account list.\n\nApply reloads the agent through Paseo while preserving its native session ID. The plugin confirms the new account only after startup confirmation and successful reload. If a switch fails, it attempts to restore the previous account. **Account not confirmed** means the running account could not be established; select an account and apply again.\n\nDifferent agents can use different accounts in parallel. Avoid sending from another client during Apply: Paseo's native reload has no atomic lock against a concurrent message, which could be interrupted.\n\n## Read limits\n\nEach account shows all reported limit windows, including zero usage. Measured windows show used and remaining percentages and a reset countdown. Expand details for exact local reset times, durations, fetch/check timestamps, and windows without data.\n\n- Checks run every **5 minutes** in the background and every **60 seconds** while Accounts or the switcher is open.\n- **Refresh** requests new data for one account; the header refresh action covers all accounts. Provider retry delays still apply.\n- Color thresholds are **80%**, **95%**, and **100%** used. Missing data stays **No data**, never an invented zero.\n- Failed requests can retain the last confirmed values as **stale**. Required sign-in, errors, and freshness remain visible.\n- A passed reset time triggers a new check; it does not imply that usage is already zero.\n\nMonitoring sends no model messages. The official CLIs own authentication and token refresh; a native Codex limits request may refresh its token. See [monitor details](server/usage/README.md) for scheduling, identity verification, and cache behavior.\n\n## Update or remove\n\nFor a directory installation, update its source and run:\n\n```sh\nnpm ci --ignore-scripts --legacy-peer-deps\nnpm run build\nnpm run typecheck\nnpm test\npaseo plugin reload account-switcher --host 127.0.0.1:6767\n```\n\nBefore disabling or removing the plugin, select **Disable** in Accounts to restore the original provider commands. Removal does not delete the separately stored account data. See [update and removal](docs/installation.md#update) for complete steps, Git installations, and recovery.\n\n## Scope\n\nThis project supports manual, same-provider switching with subscription accounts. Automatic account rotation, API-key authentication, and Claude-to-Codex transfers are outside its scope. Provider authentication and limit formats can change with CLI versions; unsupported data is shown as unavailable.\n\nAutomated tests cover the implementation with synthetic accounts and provider responses. They do not establish real A → B → A switching, compaction, child-session behavior, or rewind for your accounts. Recorded checks and remaining live verification are in [verification](docs/verification.md).\n\n## Documentation and contributions\n\n- [Installation, updates, and troubleshooting](docs/installation.md)\n- [Architecture, profile isolation, and stored data](docs/architecture.md)\n- [Contributing and running checks](CONTRIBUTING.md)\n- [Paseo plugin reference](https://paseo.sh/docs/plugins/reference)\n\nLicensed under the [MIT License](LICENSE). See [third-party notices](THIRD_PARTY_NOTICES.md) for bundled dependencies.\n"}