See and control your coding agent — locally or remotely.
Juggler is a visual workbench for AI coding agents. Launch the desktop app and work locally; when the code is on a dev box or server, run Juggler there and open the same live session from the app or a browser.
Conversations are persistent trees rather than scrolling transcripts. Tool calls open into proper views, and every model transaction can be inspected to show what the model received and returned.
Use Claude Code, OpenAI Codex, GitHub Copilot, Gemini, Ollama and other providers through one interface. Juggler is free to download, its core is open source, and it needs no account of its own.
Built for hands-on work
-
A desktop interface for long sessions
Using a coding agent means reading and editing substantial amounts of text. Juggler gives that work a proper interface: Miller-column navigation, focused views for tool calls and context, and controls designed for long sessions.
-
Conversations are trees, not log files
Branch at any point, recursively. Use a sub-thread for a tangent, delegated task or competing approach, then return only its result to the parent instead of pouring its entire working history into your main context.
-
Everything important is inspectable
Open tool arguments, approvals and results in their own views. Open any model transaction to inspect its system prompt, messages, tool definitions, output, token use, timing and stop reason.
Run it where the code lives
For most work, launch the desktop app; it starts the local server itself. When the project lives on a dev box or server, run Juggler there instead and open the same interface from the app or a browser.
The server owns the session and does the work; every connected client stays in sync. Keep a desktop view on your main screen, open another in a browser, or check the same session from your phone.
The Context Surgeon
An agent's context should not be a sealed container. Inspect the assembled system prompt and available tools. Fold selected history into a new thread, move or copy items between branches, expand a branch back into its parent, and undo structural changes.
Delegated threads keep their intermediate work out of the parent context and return only the result requested.
-
Sessions survive quits and reconnects
A session lives on disk, not just in memory. Quit, relaunch or lose the connection and the conversation is still there, including an agent waiting for you to approve its next step.
-
It supports the usual LLM providers
Claude Code, Anthropic, OpenAI, Codex, GitHub Copilot, Gemini, Mistral, Z.AI, Ollama, OpenRouter, DeepSeek and other OpenAI-compatible providers. Bring a subscription you already pay for or your own API keys.
-
Context limits are handled before they become your problem
Juggler sizes the complete request before each call, leaves room for the answer, and compacts older history when a conversation outgrows the model's window.
Under the hood
-
Go, not Electron
Juggler ships as a native desktop app and matching server. The backend is Go; the interface is type-checked JavaScript served directly, with no frontend compilation step. Conversations are Yjs documents synced live to every connected client.
-
Built to be extended
Context items, LLM loop strategies, slash commands, file viewers, info cards, Pinboard tabs and their UIs are JavaScript extensions you can inspect, fork or replace. Even tools such as read, write and bash use the public extension SDK. Writing one starts with a single scaffold command.
-
MCP tools, fully inspectable
Connect a local or remote MCP server and follow the whole handoff: the schema offered to the model, generated arguments, approval, result and error. Inspect server status and logs, filter individual tools, and compare what is available now with what a past model turn actually received.
-
Open-source core, permissive extension SDK
The main application is AGPLv3. The extension SDK, bundled extensions and examples are Apache-2.0, so extensions can remain closed source.
Who's building this?
I've spent more than 30 years building tools for developers and creators, including Tracktion, JUCE and Cmajor.
Juggler came from the same instinct as those projects: if I'm going to spend a substantial part of my working life using a tool, its interface and foundations need to hold up. This is the coding-agent workbench I want to use.
Active development
Juggler is moving quickly, with frequent releases shaped by people using it on real projects. Follow the changelog for the details.
Constructive feedback is welcome on the Discord.
No terminal required
The desktop app
Download and launch it. The app starts its matching local server and opens your project — no terminal required.
For long-lived & remote sessions
The terminal server
Run the headless juggler binary on the machine where your code lives, then attach from a browser or the desktop app — locally or across the network.
Free to download. Open-source core. No Juggler account. No Electron.