← All projects
AI agent coordination

uBixShepherd

Open beta v0.5.0-beta.2 Go · single binary · local daemon + terminal + web UI

One voice to direct a whole swarm of AI agents.

uBixShepherd is a master control agent: a single point of communication between one human and many AI agents (Claude Code, Copilot, Cursor and OpenCode today, and whatever comes next). You talk to Shepherd; Shepherd hands out the work, keeps the agents from stepping on each other, holds the decisions that are yours for you, and reports back in one thread.

Language
Go
Status
Open beta · interfaces may change
Release
v0.5.0-beta.2
Agents
Claude Code · Copilot · Cursor · OpenCode
Forges
GitLab · GitHub as release home only
Platforms
macOS · Linux · Windows untested
Synopsis
shepherd
shepherd chat                          # the one conversation
shepherd web                           # sign a browser in to the web UI
shepherd lane open|list|scope|close   # a branch + worktree per stream of work
shepherd lane run|review|ship         # hand it work, check it, push it
shepherd lane diff                     # what a lane holds against its base
shepherd next list|add|approve|move   # planned work, in your order
shepherd repo add|remove|list|scan    # manage repos without init
shepherd run list|show|logs|stop      # agent runs, followed or continued
shepherd decision list|answer          # the questions agents hold for you
shepherd request list|route|close     # asks between lanes
shepherd session import|list|ask     # conversations had outside Shepherd
shepherd tag reserve|list|release    # release versions, one per lane
shepherd keep-going on|off|status      # let the front desk carry on with what is approved
shepherd question list|answer          # the front desk's questions to you
shepherd update upgrade                # install the newest release
shepherd stats                        # tokens, context size and cost
shepherd mcp                          # the same tools, for an agent to drive
Description

Shepherd runs over a workspace (a directory of repos, not one repo) as a local daemon with a terminal front end. Each piece of work gets a lane: its own branch, its own worktree, and a scope of paths it holds. Two lanes can't hold the same files, and a pre-push hook refuses a push that strays outside its scope or onto the wrong branch.

Agents run in their lanes under your repo's rules: its gate, its setup, the paths it forbids, and how much it lets an agent do alone (merge, tag, deploy, push: you, the agent, or Shepherd). When an agent needs something from another lane, it asks Shepherd, which routes the question to the agent working there, and asks a different provider for a review. When it needs you, the question waits in one list until you answer, and the agent picks up where it left off.

The same daemon serves a web UI, built from one design system: a sidebar, a main body and a side panel that opens any row without leaving the list. The Conversation is the home page, the Inbox gathers everything waiting on you (decisions, questions, blocked lanes, merge requests to approve), and the rest is the Board, a lane's changes and read-only files, Artifacts, Runs, the Timeline, Next up, Projects, Usage and Status. Its Settings page edits the config file with a diff preview, and asks you to confirm any change that gives agents more power.

Shepherd is model-agnostic and drives the agents through their own CLIs, under your own accounts. No telemetry. Nothing leaves your machine except what the agents and your forge already send.

Examples
open a lane and hand it work
$ shepherd lane open media-seam --scope 'src/Media/**'
$ shepherd lane run media-seam --agent claude \
       "add a storage interface and move the local driver behind it"
answer what the swarm is waiting on
$ shepherd decision list
$ shepherd decision answer 12 "keep the old config key for one release"
check a lane, then ship it
# Shepherd runs the repo's gate, pushes, opens the merge request.
# Merging follows your repo's rules.
$ shepherd lane review
$ shepherd lane ship media-seam
see what a lane changed, and what is next
# every file marked inside or outside the lane's scope
$ shepherd lane diff media-seam --stat
$ shepherd next
$ shepherd lane open --item 3
let the front desk carry on within limits
# spend, concurrent runs and idle time are enforced by the daemon;
# it turns itself off when a limit is reached
$ shepherd keep-going on --cap 5 --runs 2
$ shepherd keep-going status
route a request between lanes
$ shepherd request list
$ shepherd request route 7 --lane media-seam
ask an old conversation, and see what it cost
$ shepherd session ask 3f2a9c1e "why did we drop the cache layer?"
$ shepherd stats --days 7
restart and upgrade without cutting agents off
# holds new starts, waits for running agents, continues any it had to stop
$ shepherd daemon restart --drain
$ shepherd update upgrade
reserve the next release
# two lanes can never be handed the same version,
# and a tag cut before its lane merged is refused
$ shepherd tag reserve minor
bring existing work over
# adopt the lanes a team already tracks by hand,
# and the agent conversations already on disk
$ shepherd fold import --apply
$ shepherd session import
$ shepherd lane review          # finished, live or unclear, with the evidence
Capabilities
One conversation
A terminal chat, or the web chat, with a front desk the daemon runs (it needs Claude Code) that delegates to the swarm. Runs, questions and results stream into the same thread, with lanes grouped by project in the dock.
Lanes with leases
A branch, a worktree and a scope per stream of work. Overlapping scopes are refused, and a hook holds pushes inside them.
Four agents, one protocol
Claude Code, GitHub Copilot, Cursor and OpenCode, each continuing its own conversation per lane, with git push blocked three ways.
Cross-talk
Agents ask each other through Shepherd, so you stop copying prompts between terminals. Reviews go to a different provider.
Decisions held for you
Questions that are yours wait in one place. Answer them, and the agent continues where it stopped.
Watches the forge
Polls GitLab through glab: hands a failed pipeline, and each unresolved review thread, back to the agent that caused it within a fix budget, and closes a lane when its merge request merges.
Keep going
A switch that lets the front desk carry on with work you have already approved, within a spend cap, concurrent runs, idle time, end of day and starts per lane, all enforced by the daemon. It never answers a decision, approves, merges, tags or deploys, and turns itself off when a limit is reached.
Nothing slips past you
The front desk's questions are tracked until you answer or skip them. Blocked lanes, approved items whose lane closed unmerged and unapplied scope widenings wait in the same list as decisions.
Files agents write for you
Plans, reports and images an agent hands you are kept as artifacts, with their versions, so a file survives its worktree. Closing a lane asks what to keep.
Restarts that wait
A drained restart holds new starts, waits for running agents, and continues the ones it had to stop. A run that ends without finishing is continued once.
One-click upgrade
The update notice can download the release, check it against its checksums, and restart the daemon onto it when no agent is running.
Next up
Work that is planned but not started, in your order: approved, planned, deferred. Only you approve, defer or drop; opening a lane for an item links it, and the item reads as done when its merge request merges.
A timeline of the day
A track per lane, a bar per run coloured by agent, a marker for every decision waiting on you, each merge and each failure, and spend against the daily budget.
Lane diff and gate results
One read of a lane's commits and changes against its base, each file marked inside or outside its scope, with the gate's result recorded per commit. In the CLI and on the lane page's Changes tab.
Topics and widened scopes
Each of your turns is filed under a topic before the front desk sees it. Once you approve, the desk can widen a lane's scope with shepherd lane widen — or a repo can let it widen by itself, for a small request naming exact files, by setting widen: auto; off unless the repo sets it, and protected paths are never widened.
Projects and standards packs
Group repos under a project with a daily or monthly budget, soft or hard, and a brief you approve. A standards pack is a folder of markdown rules agents are given.
Usage and run diagnoses
Tokens, context size and cost per run and per front desk turn, and a suggested fix when a run ends badly.
Release tags reserved
No two lanes take the same version, and a tag that doesn't contain its lane's merge is refused.
A budget
A daily spending cap on runs Shepherd starts by itself, with each run's cost and token use recorded.
A web UI
Served by the daemon and opened with shepherd web: the conversation, inbox, board, lane changes and files, artifacts, runs, timeline, Next up, usage and settings in a browser, in light and dark.
Scoped tokens
Each agent run gets a token that can report, ask and manage its own lane's tags, and little else.
The web UI

The whole flock, in a browser.

Screenshots of the web UI in v0.5.0-beta.2, with made-up data.

The Inbox: decisions, questions and requests to answer, merge requests to approve, a broken pipeline and what was done today. The Inbox: decisions, questions and requests to answer, merge requests to approve, a broken pipeline and what was done today.
Inbox: everything waiting on you in one list, grouped by what to do.
The Artifacts page: files agents kept, with lane, run and intent. The Artifacts page: files agents kept, with lane, run and intent.
Artifacts: the plans, images and files agents handed you, with the lane and run each came from.
The timeline page: a track per lane grouped by repo, a bar per run coloured by agent. The timeline page: a track per lane grouped by repo, a bar per run coloured by agent.
Timeline: the day's runs per lane, coloured by agent, with what is waiting on you.
The Next up page: approved, planned and deferred items in the person's order. The Next up page: approved, planned and deferred items in the person's order.
Next up: planned work in your order. Only you approve, defer or drop.
A lane's Changes tab: commits, files marked inside or outside scope, and an open patch. A lane's Changes tab: commits, files marked inside or outside scope, and an open patch.
Lane changes: commits and files against the base, each marked inside or outside the lane's scope.
How it works

You talk to one. It talks to the rest.

A daemon keeps the lanes, the runs and the questions. Every agent, and you, reach it the same way.

The loop
You · shepherd chat or web UI
the job, in one conversation
↓
Shepherd · the daemon
lanes · scopes · your repo's rules · budget
↓
Agents · one per lane
Claude Code · Copilot · Cursor · OpenCode · asking each other through Shepherd
↓
Back to you
results, and only the decisions that are yours
Where it stands

Shepherd is one Go binary: the daemon, the command line, the terminal chat, an MCP server and a web UI the daemon serves (shepherd web). The daemon listens only on loopback, with a token that changes each time it starts, and keeps its state in SQLite under ~/.shepherd. It starts itself when you first need it, or runs as a launchd or systemd service.

It is in open beta: in daily use, building itself and running other uBix projects, uBixCore among them. Its interfaces (the CLI, the config file, the HTTP API, the MCP tools and the hook protocol) may still change between betas, and each change is listed in the changelog. It is open source and self-hosted like the rest of the family.

Where it's heading

Say what you want built. Hear back only when it needs you.

The direction Shepherd is being built in. None of this is a promise of a date, and the beta table below says what works today.

One thread, with focus when you need it
Every agent's work in one conversation, and a way to narrow it to a single matter and back.
An orchestrator, not a coder
Shepherd never writes the code itself. Every piece of work goes to an agent in a lane of its own.
Standards in layers
A built-in set, then your workspace's, a project's and a repo's own folders, each refining the one above, so every agent works to the same architecture and rules.
Rules you set
Your own guardrails decide what Shepherd may do alone and what waits for you. Anything no rule covers comes to you, and every action names the rule that allowed it.
Merges it can trust are automated
A merge is automated when Shepherd can prove it: the work was built against your spec, checks you approved before the code was written pass, the agent could not change those checks, and the pipeline agrees. Everything else, one-off tweaks included, waits for you. A new merge rule runs as a dry run before it acts.
"Build it"
Approve a plan made from your spec once, and Shepherd works through it, stopping only where the spec is silent. Each answer goes back into the spec, so the next build asks less.
Tidy by itself
Stale lanes, answered questions and missing files are cleaned up in code, so the lists stay true without spending tokens.
Better with the family
Shepherd works on its own, and works best beside the other uBix tools, starting with uBixKelpie for pipeline review and automation.
Installation

Install the open beta from GitHub.

The current beta is v0.5.0-beta.2. Prebuilt binaries for macOS, Linux and Windows (amd64 and arm64) are published on GitHub Releases. They are not code-signed; each release publishes a signed SHA256SUMS to check them against.

macOS and Linux · install script

The script detects your OS and architecture, downloads the newest release, checks it against SHA256SUMS and installs shepherd into ~/.local/bin. Read it first, then run it.

install
$ curl -fsSL -o install.sh https://raw.githubusercontent.com/ubixsys/ubixshepherd/main/bin/install.sh
$ sh install.sh
$ shepherd version
Windows · zip

Windows builds, but is untested: expect rough edges. Download the .zip for your architecture from the releases page, unzip it, and put shepherd.exe on your PATH. The PowerShell steps are in the install guide.

Before you start
git 2.31 or newer
Shepherd blocks an agent's pushes with git settings that older git ignores silently, so the daemon refuses to start on an older git.
An agent CLI, logged in
At least one of claude, copilot, cursor-agent or opencode, to run agents. Lanes and the pre-push hook work without.
glab, for GitLab repos
Merge request polling reads the forge through your own glab login. Shepherd stores no forge token.
Open beta

What works today, and what doesn't yet.

The beta is for people who are comfortable with a tool that is still changing. The changelog's "Known limits" has the full list.

Works todayNot yet
Lanes with per-repo scope leases and the pre-push hookWorkspace-wide leases across repos
Claude Code, Copilot, Cursor and OpenCode runs, decisions, routed requestsGitHub as a forge for lanes (it is the release home only)
GitLab polling, merge closure and failed-pipeline hand-offsTyped cross-repo work orders and triage
shepherd chat, the MCP tools, the web UI (shepherd web)A login service and config reload on Windows
The web UI's inbox, board, artifacts, files, timeline, Next up list and lane Changes tab; lane diffMerges by rule, and the AI review row in the approval panel (it always reads "unreviewed")
Keep-going mode within its limits, review threads handed back to agents, restarts that drainKeep going starting work by itself: with it on, the desk acts on events within the limits
Projects with budgets, standards packs, usage stats, repo addWindows: builds, but untested
macOS and Linux, both tested in CI

Scoped tokens and the pre-push hook stop accidents, not a hostile agent: an agent runs as your OS user.

Found a problem? Open an issue with the output of shepherd version, your OS and what you ran. The source, changelog and docs are in the repository.