Juggler

A workspace is where a conversation's tools run.

It's where bash executes, and what read, write and edit paths are relative to. Every project already has one — itself.

The workspace itself is an abstraction: an environment for those tools, provided by a plugin. The conversation just works in whatever environment it's given — a git worktree on another branch, a throwaway copy of the tree, one folder of a monorepo — and neither knows nor cares which. That indifference is the point: it's what lets several agents share one project without treading on each other, or on you, and lets a conversation move somewhere else without noticing.

Three providers, out of the box

  • Git worktree

    Another branch of the same repository, checked out in a tree of its own. An agent works on the branch without disturbing the tree you're looking at; a per-repo setup hook installs dependencies before the first command runs. Files are isolated — ports, databases and machine state are not, and Juggler doesn't pretend otherwise.

  • Scratch copy

    A throwaway copy of the tree, for experiments you might want to walk away from. Apply the changes back when they earn it — refusing any file the project changed in the meantime — or delete the whole thing. Works with or without git.

  • Project folder

    No checkout at all: the conversation simply works in one subfolder — one package or service of a monorepo. Commands are confined to the folder; reads still see the whole project. Focus, not isolation.

These three aren't the end of it: more kinds of place — an ssh host, a container — are on the way.

Workspaces live in the tab strip

Conversations sharing a workspace are drawn together in a box named after it, with a dot when the tree holds uncommitted work. Select the box itself and you get the workspace panel: what kind of place it is, where it is on disk, its git status, and the ways of finishing with it.

Boxes in the tab strip, panel below. Each box is a workspace, each tab inside it a conversation working there; the selected box shows its panel.

Conversations move; workspaces outlive them

Several conversations can share one workspace, and none of them owns it — a workspace outliving the conversations that used it is normal. Moving a conversation is a tab action: pick a different workspace from its context menu, or drag the tab into another box.

Finishing is on the workspace's own terms. A worktree offers to commit its branch or discard it; a scratch copy applies back or gets deleted; a project folder needs no ending at all.

Providers are extensions

The built-in providers are written against the same Apache-2.0 extension SDK that everything else in Juggler uses — so a new kind of place doesn't have to wait for us.

Free to download. Open source. No Juggler account. No Electron.