Juggler — визуальный AI-агент для кодинга с древовидными сессиями

· 2 мин чтения
ai-agents coding-assistant gui plugins open-source
📂 Исходный код на GitHub

Визуальный AI-кодинг-агент с workbench-интерфейсом. Древовидные сессии на Yjs, Miller-колонки для tool calls и контекста, JavaScript-расширения, мультиклиентская архитектура (десктоп + браузеры). Поддержка Claude, OpenAI, Gemini, Ollama, OpenRouter, Z.AI, Deepseek.

Juggler — визуальный AI-агент для кодинга с древовидными сессиями

Juggler — ещё один AI-кодинг-агент, но с необычным подходом. Авторы честно признаются: «yes, it's another AI coding agent». Его отличие — визуальный workbench, где вы видите и контролируете всё, что LLM делает с вашей кодовой базой. Это не консольная утилита, а полноценное desktop-приложение с графической навигацией, инспекцией и управлением каждым шагом агента.

Сайт проекта: juggler.studio. Репозиторий: github.com/juggler-ai/juggler. На момент написания — 368 звёзд, AGPL-3.0, последняя версия v0.3.7.

Ключевая идея

Juggler создан для тех, кто хочет быть hands-on — активно следить за тем, что LLM делает с кодом. Вместо бесконечного чат-транскрипта агент показывает визуальный workbench:

  • tool calls видны и проверяемы;
  • ветвящиеся потоки (threads) — можно свернуть, отредактировать, сравнить;
  • контекст редактируется напрямую.

Сессия — это дерево, а не история чата

Большинство агентов дают линейный транскрипт, который в лучшем случае можно перемотать назад. Juggler хранит сессию как дерево — это Yjs-документ, а не текст переписки.

  • Любую точку можно разветвить в sub-thread.
  • Sub-threads ветвятся дальше.
  • Структуру можно навигровать, инспектировать и редактировать напрямую.

Интерфейс использует Miller columns — корень слева, выбранный элемент раскрывается в свойства и дочерние узлы справа. Если вы пользовались column view в macOS Finder, принцип уже знаком.

Всё важно — видно

В Juggler нет спрятанных за сворачиваемыми блоками данных. Tool calls, одобрения (approvals), структура потоков, свойства элементов (item properties), raw-контекст — всё это разложено в Finder-style Miller-колонках. Это сознательное архитектурное решение: видимая и проверяемая работа агента вместо «чёрного ящика».

Всё — это расширение

Ядро приложения управляет документом и оркестрацией. Почти все объекты, из которых состоит сессия, определены JavaScript-расширениями, которые можно инспектировать, форкать или заменять:

Тип расширения Что делает
Context items Каждый тип элемента в разговоре (read-file, replace-text, bash, …) контролирует и то, как он общается с LLM, и то, как отображается в UI
Strategies Высокоуровневые LLM-циклы вроде plan, research или собственные идеи — тоже плагины
Commands Slash-команды вроде /clear и /compact — это плагины, манипулирующие документом сессии

Не каждая LLM-задача обязана жить как headless Python-скрипт в терминале. Если идее оркестрации нужен собственный UI, элементы управления или визуализация — Juggler позиционируется как платформа для этого.

Мультиклиентская архитектура

Juggler выглядит как нативное desktop-приложение, но под капотом это локальный веб-сервер, раздающий live-сессию в реальном времени. Само приложение — лишь один клиент. Браузерная вкладка — другой клиент. Другая машина — третий.

Это значит, что сервер запускается там, где живёт код (локальная рабочая станция, dev-бокс, серверная ферма), а view подключаются откуда удобно. Desktop-приложение и браузерные вкладки остаются синхронизированы. Один и тот же сервер можно смотреть с большого монитора или с телефона в браузере.

Запуск и установка

Каждый дистрибутив содержит две части:

  • Juggler app — нативное desktop-приложение.
  • juggler — headless CLI-сервер для долгоживущих, удалённых или сетевых сессий.
# headless-сессия: печатает URL и QR-код для подключения из браузера
juggler

По умолчанию сервер работает только на localhost. Чтобы разрешить подключения с других устройств в сети, нажмите p в терминале (или запустите с --public). LAN-доступ без пароля — включайте только в доверенных сетях.

Платформы:

  • macOS.dmg, перетащить в Applications. При первом запуске Gatekeeper может заблокировать: правый клик → Open → Open.
  • WindowsJuggler-<version>-setup.exe, ставит desktop-приложение и juggler.exe вместе, с опцией добавить в PATH.
  • Linux — серверный бинарник, затем подключение через браузер или desktop-приложение. Для headless-серверов — docs/headless-linux.md.

Desktop-приложение и сервер всегда поставляются вместе — как единый блок, чтобы версии не разъезжались.

Доступ из-за пределов LAN не входит в этот репозиторий: сборка из исходников — только local + LAN. Официальные бинарники с juggler.studio дополнительно включают WAN-режимы (см. LICENSING.md).

Поддержка моделей

Juggler подключается к привычному зоопарку моделей:

  • Claude Code (через CLI или API);
  • OpenAI (codex plan или API);
  • Gemini;
  • Ollama;
  • OpenRouter;
  • Z.AI;
  • Deepseek и др.

Добавить нового провайдера легко — приветствуются PR.

Сборка из исходников

Идея системы расширений в том, что большинству людей вообще не придётся собирать приложение. Если нужно — см. CONTRIBUTING.md. Короткая версия:

git clone --recurse-submodules https://github.com/juggler-ai/juggler.git
cd juggler && make build

Если репозиторий уже склонирован без --recurse-submodules, добрать подмодули:

git submodule update --init --recursive

Windows-бинарники кросс-компилируются с любого хоста через make build-windows; Linux-десктоп нужно собирать нативно.

Технологический стек

Компонент Технология
Бэкенд Go
Windowing Wails (не Electron)
UI HTML/JS, отдаётся Go-бэкендом
Сессии Yjs (хранение и синхронизация)
Расширения JavaScript
Типизация Type-checked JavaScript, типы в JSDoc, strict-линтинг в CI

Фронтенд — это type-checked JavaScript, а не TypeScript: типы живут в JSDoc и проверяются в CI строгим статическим линтингом. Между исходниками и тем, что попадает в релиз, нет шага сборки (build step).

Лицензия

Код приложения — GNU AGPL v3.0 или новее. Extension SDK (web/sdk/) и bundled-расширения (web/extensions/) — под Apache-2.0, поэтому расширения (включая закрытые) можно писать без copyleft-обязательств. Полная карта лицензий — в LICENSING.md.

Для AGPL-частей: можно использовать, изменять и распространять свободно, но любая изменённая версия, которую вы распространяете или хостите как сервис, тоже должна выходить под AGPLv3. Для closed-source-сценариев автор предлагает обсудить коммерческую лицензию.

Кому подходит

Juggler стоит попробовать, если вы хотите больше контроля над тем, что LLM делает с кодом: видеть каждый tool call, ветвить эксперименты в sub-threads, редактировать контекст руками и подключать собственные стратегии и инструменты через JavaScript-расширения. Для тех, кому достаточно линейного чат-потока в терминале, он может оказаться избыточным.

Источник: https://github.com/juggler-ai/juggler