Juggler is a GUI-based AI coding agent that uses a tree-like session model with extensible plugins, a local webserver backend, and multi-client support. It integrates with multiple model providers and offers a headless server mode and desktop app.

Collecting history — the radar snapshots this repo daily. The trend line appears after 3 days of data (2 so far).
What it is
Juggler is a GUI-based AI coding agent that provides a visual workbench for inspecting tool calls, branching threads, and editable context. It emphasizes a tree-structured session (a Yjs document) rather than a linear transcript and exposes its functionality through JavaScript extensions (contexts, strategies, commands).
How it works
The core app manages the document and orchestration, with objects defined by JavaScript extensions. It runs a local webserver to serve a collaborative session that can be accessed by multiple clients (desktop app, browser tab, or remote view). It connects to providers such as Claude Code, OpenAI, Gemini, Ollama, OpenRouter, Z.AI, Deepseek, etc., and uses a plugin architecture for contexts, strategies, and commands. The session is stored and synchronized using Yjs, and the UI is built with HTML/JS served by a Go backend (no Electron).
Getting started
Getting started involves downloading builds from the Releases page or via juggler.studio, which includes both the Juggler desktop app and the headless juggler server. Running the server directly can be done with:
juggler # prints everything you need to connect from a browser
To enable LAN access, press p in the terminal or launch with --public.
Installing and running instructions for macOS, Windows, and Linux are provided in the README, along with notes about built-in server and client interactions.
Installing
- macOS: download .dmg, drag Juggler to Applications, then launch.
- Windows: download Juggler-<version>-setup.exe and run it.
- Linux: download the juggler server binary and run it from a terminal.
The desktop app and server ship as one unit.
Getting started (continued)
Running the server directly
juggler # prints everything you need to connect from a browser
The server defaults to localhost-only access; LAN access can be enabled for broader connectivity.
What makes it different?
- The conversation is an editable tree with sub-threads, using Miller columns in the UI.
- Everything in the document is an extension: context items, strategies, and commands are plugins.
- It supports a multi-client architecture with a local webserver and multiple clients connected to the same session.
- Model providers include Claude Code, OpenAI, Gemini, Ollama, OpenRouter, Z.AI, and Deepseek, among others.
Building from source
If building from source, the project suggests:
git clone --recurse-submodules https://github.com/juggler-ai/juggler.git
cd juggler && make build
If submodules were not fetched initially:
git submodule update --init --recursive
Windows binaries can be cross-compiled with make build-windows.
Tech stack
The backend is Go with Wails for windowing; UI is HTML/JS served by the Go backend. Sessions are stored and synchronized with Yjs. Extensions are JavaScript, and the project does not use Electron.
License
The AGPL-3.0 license applies to the application code, with Apache-2.0 for the extension SDK and bundled extensions. See LICENSING.md for the full license map.






