{"slug": "show-hn-ai-juggler-orchestrate-your-desktop-claude-and-codex-apps", "title": "Show HN: AI Juggler – Orchestrate your desktop Claude and Codex apps", "summary": "Figurehead AI released AI Juggler, a free, MIT-licensed, local-first macOS app that lists every open Claude app, Claude Code, Codex and Cursor session in one window, groups them by app and profile, and brings the right app forward in one step. AI Juggler requires macOS 14 Sonoma or later on Apple silicon or Intel and at least one of Claude Code or Codex installed and signed in; it shows usage limits only when measured, displaying \"Not measured yet\" otherwise, and never proxies tool traffic, signs in for users or stores credentials.", "body_md": "**See which AI coding sessions are open on your Mac and where, get to any of them in one step, and know how much room each account has left.**\n\nFree and open source (MIT), local-first, for macOS. AI Juggler works with the coding tools you already use. It never proxies their traffic, never signs in for you, and never stores your credentials.\n\n[Download](#download) · [Quick start](#quick-start) · [User guide](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide) · [Privacy](#what-ai-juggler-reads-writes-and-sends) · [Discussions](https://github.com/figurehead-ai/AI-juggler/discussions)\n\nIf you pay for more than one AI coding subscription, say two Claude accounts and Codex, you end up juggling by hand: several Claude app profiles, config folders, shell aliases, terminal tabs, and guessing which window holds which session and which account still has room. AI Juggler puts all of it in one window:\n\n- **What's open, where, and one step to it.** The list shows the sessions\nopen right now in the Claude app, your terminals, the Codex app and\nCursor, grouped by the app each runs in (\"Claude app · Work\", \"Claude Code\n· Personal\"), with what needs you on top.**Go to it** brings the right app\nforward. Ended and\ninactive sessions are one click away, never in the way.\n- **Apps and accounts kept apart.** An app is one app in one of its\nprofiles: a Claude app profile, or Claude Code or Codex on one config\nfolder. An account is the subscription it's signed in to. Several apps on\none account are normal, and they share its limits.\n- **Usage and limits you can trust.** A number is shown only when it was\nmeasured. Anything else says \"Not measured yet\", never a made-up 100%.\n- **Your Mac at a glance.** How much memory and CPU your AI tools use, which\nwindow is heavy, and leftover processes you can clean up.\n- **Apps managed for you.** Use each setup where it already is, or as a\nseparate copy, and start a session in the app you choose. A new app can\nstart with your usual MCP servers and permissions.\n- **Carry a conversation to another app or tool** when one runs out of\nroom, and switch back later.\n- **Find anything you said.** History searches every ended session by what\nit was about, and by the words said in it.\n- **Your rules and MCP servers, the same everywhere.** See where`CLAUDE.md` and`AGENTS.md` differ, and bring them in line when you choose.\n\n| App | Channel | Get it | \n|---|---|---|\n| **AI Juggler** | Stable or Beta (you choose in Settings) | [Latest release](https://github.com/figurehead-ai/AI-juggler/releases) —`AI-Juggler-<version>-universal.dmg` | \n| **AI Juggler Nightly** | Nightly (a separate app with its own data) | [Releases](https://github.com/figurehead-ai/AI-juggler/releases) —`AI-Juggler-Nightly-<version>-universal.dmg` | \n\n**Requirements:** macOS 14 Sonoma or later, on Apple silicon or Intel (one\nuniversal app). At least one of [Claude Code](https://www.npmjs.com/package/@anthropic-ai/claude-code)\nor [Codex](https://github.com/openai/codex) installed and signed in.\n\nEvery build is signed and notarized by Apple. The first time you open it,\nmacOS asks whether you're sure; choose **Open**.\n\nAI Juggler checks for updates at launch and offers them; it never installs one without you. Settings › General › About & updates shows your version, lets you switch between Stable and Beta, and can go back to an earlier version.\n\n1. Open AI Juggler and choose **Find my accounts** . It looks for your Claude\nCode and Codex setups (for example`~/.claude` and`~/.codex` ). Each one\nis a profile.\n2. For each setup, choose **Use it where it is** (nothing is copied) or**Make a separate copy** (AI Juggler keeps its own copy, and your original\nis never touched).\n3. If a tool needs you to sign in, it opens that tool's own sign-in. AI Juggler never sees your password.\n4. The list on the left shows what's open now, grouped by place: the app\nand profile each session runs in, such as \"Claude app · Work\". Press\nEnter on a session (**Go to it** ) to bring its app forward. Ended and\ninactive sessions sit behind the \"Also:\" line under the list.\n5. Start a new session with **New session** , and pick the profile it runs\non.\n6. When an account runs low, open the session and choose **Switch\naccount…** to carry the conversation to another account or tool.\n\nThe [user guide](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide) covers each step in more detail, starting\nwith [What's open, and getting to it](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide/whats-open.md).\n\n|  | Status | \n|---|---|\n| What's open now in the Claude app, terminals, the Codex app and Cursor, grouped by app and profile, with Go to it | Beta: new in 0.1.x | \n| Accounts as subscriptions, with the profiles signed in to each | Beta: new in 0.1.x | \n| Every session and project, including ones started outside AI Juggler | Works | \n| History of finished sessions, searchable by what was said in them (for sessions started outside AI Juggler, turn it on in Settings › Privacy) | Works | \n| How many subagents a session is running, and what each was asked to do | Works | \n| The terminal: Find, clickable links and paths, text size, Maximize, its own window | Works | \n| Starting a session from a saved context pack, in either tool | Works | \n| Usage and costs per session, account and project, from the tools' own records | Works | \n| Codex limits, read from what Codex records | Works | \n| About how many of your usual sessions are left in each window, and a burn-down chart | Works | \n| Monthly caps for an account or a group of projects: a warning at 80 % and 100 %, never a stop | Works | \n| Claude limits | Works for sessions started in AI Juggler; for other sessions, turn it on per profile (see [Privacy](#what-ai-juggler-reads-writes-and-sends) ) | \n| This Mac: memory and CPU of your AI tools, including the Claude app | Works | \n| Cleaning up leftover processes (automatic cleanup is off unless you turn it on) | Works | \n| Rename, remove and choose a default profile | Works | \n| Coming from Claude Squad or Vibe Kanban: their worktrees stay with your projects, and the config folders their profiles use are offered as profiles | Works | \n| A new profile starting with your usual MCP servers, permissions and status line | Works | \n| Rules files and MCP servers compared across your tools, brought in line when you apply | Works | \n| Restarting crashed sessions, keeping the Mac awake while they work, reopening after a crash | Works (each one is a setting) | \n| Opening AI Juggler at login | Beta: new in 0.1, not yet checked on an installed build | \n| macOS notifications when a session needs you (each kind off until you choose) | Beta: new in 0.1, not yet checked on an installed build | \n| Backups, and going back to an earlier version | Works | \n| Switching a conversation to another account or tool | Beta: checked live between Claude Code accounts, between Codex accounts, and between Claude Code and Codex, both ways; every pair still says \"Not proven yet\" | \n| A switch prepared while an account runs low, so it's ready when the limit comes | Beta: new in 0.1 | \n| Crash reports, scrubbed on your Mac (off unless you choose) | Kept on your Mac; this version can't send them anywhere yet | \n| Fleet: your other Macs in one window: their sessions, starting a session on one, usage by machine | Beta: checked with two copies on one Mac, not yet across two Macs ( [guide](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide/fleet.md) ) | \n| OpenCode, Kimi Code and Grok Build | Beta: built from their source and docs, not yet checked live | \n| More tools (ZCode, Kiro and others) | Planned | \n| Windows and Linux | Planned: Windows' first release comes before 1.0; Linux's timing is open | \n\n| Tool | Support | \n|---|---|\n| **Claude Code** (the`claude` command) | Sessions, usage, limits, starting sessions, switching (beta) | \n| **Codex** (the`codex` command) | Sessions, usage, limits, starting sessions, switching (beta) | \n| **OpenCode** (the`opencode` command, 1.x and 2.x) | Beta, not yet checked live: sessions, usage (tokens, and its own cost estimate), starting sessions, rules and MCP servers | \n| **Grok Build** (the`grok` command) | Beta, not yet checked live: sessions, starting sessions (your Claude and Cursor setups stay out of it), rules and MCP servers; its usage isn't read yet | \n| **Kimi Code** (the`kimi` command, 2.x) | Beta, not yet checked live: sessions, starting sessions (never by itself on a Kimi plan, which is for interactive use only), rules, skills and MCP servers; its usage isn't read yet | \n| **Claude app** (desktop) | Its open sessions are shown under each of its profiles, with Go to it; This Mac measures its memory and CPU | \n| **Codex app** (desktop) | Its open threads are shown, with Go to it | \n| **Through another service** : OpenCode Go and Kimi, on Claude Code and Codex | Beta, not yet checked live: an account whose key you paste once (kept in the macOS Keychain), with a Claude Code or Codex profile pointed at the address the service publishes. Its usage is an estimate (OpenCode Go) or unknown (Kimi), and switching to it is never a proven one-click switch | \n\nAI Juggler finds each tool through your shell's `PATH`, the way your terminal\ndoes, even when you open the app from Finder.\n\n**Reads, on your Mac only:**\n\n- Your tool setups: Claude Code's `~/.claude` (and other Claude folders you\nuse) and Codex's`~/.codex` , to list conversations and count usage from\ntheir transcripts; OpenCode's`~/.local/share/opencode` database, read\nwithout changing it, and its settings in`~/.config/opencode` ; Kimi\nCode's`~/.kimi-code` session list and settings; Grok Build's`~/.grok` sessions and settings.\n- Account names and emails from those setups, so you can tell accounts apart and see which profiles share one.\n- Which sessions each app has open, from the apps' own session files, and which app each running process belongs to (from its parent processes). Never a process's environment, key files or token caches.\n- The last few messages of a session, from its transcript on this Mac, when\nyou open its page (**Last messages** , on by default; turn it off in\nSettings › Desktop apps). They're kept nowhere.\n- The list of running processes, to show live sessions and This Mac.\n- If you use Claude Squad or Vibe Kanban: their own lists, read without changing them, for which repository each of their worktrees belongs to and which config folders their profiles use. Nothing else they keep.\n\nIt checks only whether a sign-in exists. It never reads the passwords, tokens or API keys your tools keep, and never opens the tools' Keychain items. The one key it holds is one you give it: for an account added through another service, kept in AI Juggler's own Keychain item and handed only to that account's sessions when they start.\n\n**Writes:**\n\n- \nIts own data folder, `~/Library/Application Support/AI Juggler` (`AI Juggler Nightly` for Nightly). Copies of setups, backups and settings\nlive there, and the search index of sessions started outside AI Juggler\nif you turn that on (it holds the words to search, not the conversations,\nand turning it off deletes it).\n- \nIn your own setups and projects, only what you choose, each shown before it's made: \n  - **Measuring Claude limits for sessions started elsewhere** (off by\ndefault, per profile). It shows the exact one-line change to that\nprofile's`settings.json` before making it, keeps your own status line\nworking, and turning it off restores the file exactly.\n  - **Switching a conversation** into a profile adds the conversation's\nfiles to that profile, beside its own and never over them. The MCP\nservers, skills and the like you tick on the switch screen are set up\nthere too.\n  - **Copying settings** into a profile: the MCP servers, permissions and\nstatus line you tick. Never a sign-in, history or caches.\n  - **Bringing a rules file in line** writes that one file in your\nproject, and keeps the old one for Undo.\n  - **Copying an MCP server** to another profile.\n A secret is never copied: a server that needs one reads it from a named variable instead, or isn't copied at all. Every set-up, settings copy and rules change is listed in Settings › Switching › Context packs & secrets, with an Undo that takes out only what was added, and only while it's unchanged. A switched conversation's files stay in the other profile, where you can switch back from.\n\n**Sends:**\n\n- An update check to GitHub at launch.\n- Once a day, a question to npm's public registry for the newest version of each tool you have an account on (turn it off on any tool's page). It never updates a tool.\n- Nothing else unless you turn it on: usage statistics (off by default, see\n[docs/usage-stats.md](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/usage-stats.md) ), Fleet (your own Macs talk\ndirectly to each other on your network, with no relay), and the optional\nFigurehead account.\n- Crash reports stay on your Mac. Nothing is ever sent automatically. With crash reports on, it also looks through macOS's own crash reports for AI Juggler's, and keeps only what failed and where.\n\nAI Juggler makes no requests to Anthropic, OpenAI or any other AI provider, and sets no proxy for your tools. It points a tool at another address only for an account you add through another service, and only at the address that service publishes.\n\n[What AI Juggler touches](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide/trust.md) has the full list, and\nnames the tests that check each line. The same list is in the app, under\nMore › **Privacy**, and Settings › Privacy links to it.\n\nAll optional. AI Juggler works without any of them.\n\n| Permission | What it's for | Without it | \n|---|---|---|\n| Accessibility | Bringing a session's exact window to the front | The right app and profile come forward, but not the exact window | \n| Automation | Selecting a session's terminal tab | The terminal comes forward, but not the tab | \n| Screen Recording | A live preview of a session's window, on this Mac only (offered only where a tool can show one) | No live preview | \n| Notifications | Telling you when a session needs you while you're in another app | You see it when you come back to AI Juggler | \n| Local Network | Fleet, finding your other Macs | Fleet stays off | \n\nTurn on Accessibility and Automation in Settings › Desktop apps › **Going\nto a session**. Going to a session never asks for a permission by itself.\n\n- Only accounts you own. AI Juggler never shares or pools accounts.\n- No automatic rotation to get around limits. Switching is something you choose, one conversation at a time.\n- The real, unmodified tools, run the way you'd run them yourself.\n\nThe [proposal](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/PROPOSAL.md) explains the reasoning.\n\n**Do I need an API key?** No. AI Juggler uses the tools you've already signed\nin to.\n\n**What's the difference between an app and an account?** An app is one app\nin one of its profiles: \"Claude Code · Work\" (the tool on one config folder)\nor \"Claude app · b-work\" (the desktop app in one of its profiles). An account\nis the subscription an app is signed in to. Sessions run in an app; limits\nand money belong to the account. The same account signed in to two apps is\nnormal, and both share its limits. See\n[Accounts and apps](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide/accounts.md).\n\n**Why isn't a session I closed in the list?** The list shows what's open now.\nEnded, inactive and background sessions are behind the \"Also:\" line under\nit, or **View** (⇧V) › **Show**, and every ended session is in History.\nNothing is removed.\n\n**Go to it brought the app forward, but not the session's window.** Bringing\nthe exact window forward needs the Accessibility permission, and the right\nterminal tab needs Automation. Turn them on in Settings › Desktop apps. For\nthe Claude app, AI Juggler brings the right profile forward and tells you to\npick the session in its sidebar.\n\n**Is there a shortcut to open AI Juggler from any app?** You can choose one\nin Settings › Desktop apps › **Open AI Juggler from anywhere**. There's none\nuntil you pick one. ⌥Space isn't accepted, because ChatGPT uses it.\n\n**Why does a limit say \"Not measured yet\"?** The tool hasn't reported that\nlimit to AI Juggler yet. AI Juggler shows a percentage only when one was\nmeasured, never a guess.\n\n**Does it change my `~/.claude` or `~/.codex`?** Only when you choose one of\nthe changes [listed above](#what-ai-juggler-reads-writes-and-sends). Each\nshows you what it will change first, and the set-ups and copies can be\nundone.\n\n**Can I run Stable and Nightly side by side?** Yes. AI Juggler Nightly is a\nseparate app with its own data.\n\n**Is switching lossless?** No, and AI Juggler never says it is. Between two\naccounts of the same tool, the conversation's files move and it resumes.\nBetween Claude Code and Codex, the other tool is told the story so far. The\nswitch screen shows exactly what carries over before you confirm, and you\ncan switch back. See [Continue in another app](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide/switching.md).\n\n**I'm coming from Claude Squad, Vibe Kanban, Crystal or cc-switch.** Most of\nit comes across by itself, since AI Juggler reads the tools' own files.\n[Coming from another tool](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide/coming-from-other-tools.md) says what\ndoes and what to do about the rest.\n\n**Can it stop me spending too much?** It warns, and never stops anything. Set\na monthly cap for an account or a group of projects (Usage › **Set a monthly\ncap**), and Needs you tells you at 80 % and 100 %. See\n[Monthly caps](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide/usage-and-limits.md#monthly-caps).\n\n**Windows or Linux?** Not yet. Windows comes first: 1.0 waits for its first\nrelease. Linux follows; its timing is open. The core is written to make\nboth ports possible.\n\n- **A tool isn't found when AI Juggler is opened from Finder.** AI Juggler\nreads your login shell's`PATH` . Check that`claude` or`codex` runs in a\nnew terminal window, then reopen AI Juggler.\n- **\"Another AI Juggler is open.\"** AI Juggler waits a few seconds for an\nearlier copy to finish quitting. If it says this, choose**Try again** , or\nquit the other copy.\n- **An update failed, or you want the previous version.** Settings › General ›\nAbout & updates ›**Go back to an earlier version** .\n- **Something else?** Ask in[Discussions](https://github.com/figurehead-ai/AI-juggler/discussions) ,\nor report a bug from Settings › Advanced › Diagnostics ›**Report a\nproblem** .**Export diagnostics…** there shows you, file by file, what it\nwould save (scrubbed of names, paths and keys) before you attach it.\n\n1. In AI Juggler, open Settings › Advanced › **Before you uninstall** and\nchoose**Prepare to uninstall** . It puts back the setting AI Juggler may\nhave added to a Claude profile (measuring limits for sessions started\nelsewhere), and lists what's left for you to remove. Anything else you\nset up through AI Juggler stays unless you undo it; the[uninstall guide](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/guide/uninstall.md) has the steps.\n2. Quit AI Juggler and move it to the Trash.\n3. Delete `~/Library/Application Support/AI Juggler` (and`AI Juggler Nightly` ) to remove its data, copies and backups.\n\nYour own `~/.claude` and `~/.codex` folders are otherwise left as they are.\n\n- **0.4:** trust and the finished basics: a security pass, a real\ncommand palette, cost per finished task and wasted spend, notification\nand shortcut settings that fit you, and every core feature checked on\nreal tools. Also accounts and apps each with their own page, every page\nleading to everything related, pools redesigned around how people run\nseveral agents, a simpler New session, and the Floor, a live picture of\nall your agents at work, all walked through as real use cases before\nrelease.\n- **0.5:** more tools (ZCode, Kiro, Hermes, Muse, Cursor, Antigravity),\npools across your Macs and handing work to a colleague. The first\nStable is a 0.5.x.\n- **0.6 and 0.7:** AI Juggler for Windows, then Linux.\n- **1.0:** after the Windows release has succeeded.\n\nThe full plan, with what each version holds and why, is in\n[docs/plan/ROADMAP.md](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/plan/ROADMAP.md).\n\nIdeas and votes are welcome in\n[Discussions](https://github.com/figurehead-ai/AI-juggler/discussions).\n\nYou need Rust (the version is pinned by `rust-toolchain.toml`), Node 22 or\nlater with pnpm 10, [`just`](https://github.com/casey/just), the Tauri CLI\n(`cargo install tauri-cli --version \"^2\" --locked`) and the Xcode Command Line\nTools.\n\n```\ngit clone https://github.com/figurehead-ai/AI-juggler.git\ncd AI-juggler\npnpm --dir ui install\njust dev        # runs \"AI Juggler Dev\", with its own data, and reloads the UI as you edit\njust verify     # every check CI runs\n```\n\n[CONTRIBUTING.md](https://github.com/figurehead-ai/AI-juggler/blob/main/CONTRIBUTING.md) is the developer guide. The\n[technical specification](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/SPEC.md) and the\n[architecture decisions](https://github.com/figurehead-ai/AI-juggler/blob/main/docs/adr) explain how it's built.\n\n- [Contributing](https://github.com/figurehead-ai/AI-juggler/blob/main/CONTRIBUTING.md)\n- [Code of Conduct](https://github.com/figurehead-ai/AI-juggler/blob/main/CODE_OF_CONDUCT.md)\n- [Security policy](https://github.com/figurehead-ai/AI-juggler/blob/main/SECURITY.md) : report vulnerabilities privately\n- [Support](https://github.com/figurehead-ai/AI-juggler/blob/main/SUPPORT.md)\n\nAI Juggler is made by [Figurehead](https://figurehead.ai), which builds AI\ntools for developers.\n\nThe code is [MIT](https://github.com/figurehead-ai/AI-juggler/blob/main/LICENSE) © Faruk Brbovic and AI Juggler contributors.\n\nThe names **AI Juggler** and **Figurehead**, the logos and the app icon are\ntrademarks of Vuxtra LLC and aren't covered by the MIT License. You can use\nthe code for anything and refer to the project by name; a modified build you\ndistribute needs its own name and icon. See [TRADEMARKS.md](https://github.com/figurehead-ai/AI-juggler/blob/main/TRADEMARKS.md).", "url": "https://wpnews.pro/news/show-hn-ai-juggler-orchestrate-your-desktop-claude-and-codex-apps", "canonical_source": "https://github.com/figurehead-ai/AI-juggler", "published_at": "2026-11-13 18:06:55+00:00", "updated_at": "2026-11-13 18:20:48.061416+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents", "ai-products"], "entities": ["AI Juggler", "Figurehead AI", "Claude Code", "Codex", "Cursor", "Anthropic", "OpenAI", "macOS 14 Sonoma"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-ai-juggler-orchestrate-your-desktop-claude-and-codex-apps", "markdown": "https://wpnews.pro/news/show-hn-ai-juggler-orchestrate-your-desktop-claude-and-codex-apps.md", "text": "https://wpnews.pro/news/show-hn-ai-juggler-orchestrate-your-desktop-claude-and-codex-apps.txt", "jsonld": "https://wpnews.pro/news/show-hn-ai-juggler-orchestrate-your-desktop-claude-and-codex-apps.jsonld"}}