Juggler is a visual workbench for AI coding agents. It gives developers a desktop application, backed by a matching server, where conversations with a coding agent live as persistent trees rather than scrolling transcripts. Tool calls open into proper views, and every model transaction can be inspected to show exactly what the model received and returned. Juggler supports Claude Code, OpenAI Codex, GitHub Copilot, Gemini, Ollama and other providers through one interface. It is free to download, its core is open source, and it needs no account of its own. The product is aimed at developers who do hands-on work with coding agents and want to see and control what the model is doing to their codebase.
Using a coding agent means reading and editing substantial amounts of text, and a conventional scrolling transcript is a poor interface for that work. Important detail — the arguments passed to a tool, the approval that was granted, the exact system prompt the model saw — tends to disappear into a log. Context behaves like a sealed container: once history has been assembled it is hard to see what is in it or to reshape it. At the same time, long-running agent sessions are fragile. A lost connection, a quit or a restart can end the work, and if the code lives on a dev box or a server, the session is stranded on that machine. Juggler exists to give that work a proper interface and to make the agent's behaviour inspectable rather than opaque.
Conversations in Juggler are persistent trees rather than log files. You can branch at any point, recursively, and use a sub-thread for a tangent, a delegated task or a competing approach. When the sub-thread finishes, only its result returns to the parent instead of pouring its entire working history into the main context — delegated threads keep their intermediate work out of the parent context and return only the result requested. The Context Surgeon extends this idea: the agent's context is not treated as a sealed container. You can inspect the assembled system prompt and the 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.
Everything important is inspectable. Tool calls open into proper views, and tool arguments, approvals and results can each be opened on their own. Any model transaction can be inspected to show its system prompt, messages, tool definitions, output, token use, timing and stop reason. Tool calls, item properties and nested sub-threads are laid out in a Finder-style Miller column view, with Miller-column navigation, focused views for tool calls and context, and controls designed for long sessions. Because the interface is built around inspection rather than a single stream of text, you can compare what is available now with what a past model turn actually received.
Juggler can run where the code lives. For most work you launch the desktop app, which starts the local server itself and opens your project with no terminal required. When the project lives on a dev box or server, you run the headless juggler binary there instead and attach from a browser or the desktop app, locally or across the network. The server owns the session and does the work, and every connected client stays in sync, so you can keep a desktop view on your main screen, open another in a browser, or check the same session from your phone. Sessions also survive quits and reconnects because 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.
Juggler supports the usual LLM providers — Claude Code, Anthropic, OpenAI, Codex, GitHub Copilot, Gemini, Mistral, Z.AI, Ollama, OpenRouter, DeepSeek and other OpenAI-compatible providers — so you can 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. MCP tools are fully inspectable as well: connect a local or remote MCP server and follow the whole handoff, including the schema offered to the model, generated arguments, approval, result and error. You can inspect server status and logs, filter individual tools, and compare what is available now with what a past model turn actually received.
Under the hood, Juggler is Go, not Electron. It ships as a native desktop app and matching server; the backend is Go and the interface is type-checked JavaScript served directly, with no frontend compilation step. Conversations are Yjs documents synced live to every connected client. The application is 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, so the LLM-facing tools use the same SDK available to you. Writing an extension starts with a single scaffold command.
The result is a workbench built for hands-on work that holds up over long sessions. Developers can see and control what their LLM is doing to the codebase, delegate work into sub-threads without flooding the main context, and inspect exactly what the model received and returned at any point. Sessions are durable and multi-client, so the work is not tied to one window or one machine. Because the main application is AGPLv3 and the extension SDK, bundled extensions and examples are Apache-2.0, extensions can remain closed source while the core stays open.
Typical scenarios follow the product's design. A developer working through a large change opens a sub-thread for a tangent, delegated task or competing approach and returns only its result to the parent. Someone whose project lives on a dev box or server runs the terminal server there and attaches from a browser or the desktop app. Anyone connecting an MCP server can follow the schema, arguments, approval, result and error of each handoff. Long sessions benefit from tree navigation, focused tool-call views and context management, and an agent waiting for approval after a quit or reconnect can be picked up where it left off.
Juggler is aimed at developers and other hands-on users who spend a substantial part of their working life inside a coding agent. It is free to download, its core is open source and it needs no Juggler account. It is available for macOS, Windows and Linux, either as the desktop app or as a headless terminal server, and it works with a wide range of LLM providers and OpenAI-compatible endpoints. The author behind it has spent more than 30 years building tools for developers and creators, including Tracktion, JUCE and Cmajor, and Juggler is in active development with frequent releases and a public changelog.
Juggler's value proposition is control: a visual workbench that turns an AI coding agent's opaque transcript into inspectable trees, inspectable tool calls and editable context, running locally or on the machine where the code lives. It is free, open source and extensible — a foundation built to hold up for people who use coding agents every day.