Juggler

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.

Tool calls, item properties and nested sub-threads laid out in a Finder-style Miller column view

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.

Big screen or pocket-sized. One live session, in the desktop app or a browser.

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.

Branching threads. Sub-threads, all the way down.
Inspect anything. Properties, history and context.
  • 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.

A session supports multiple clients. Desktop and browser views stay in sync.
Built on extensions. The LLM-facing tools use the same public SDK available to you.

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.