JailBee Latest JailBee 1.8: let an agent coordinate the work News Docs Source code v1.8.3 GPL-3.0
← All news One coordinator bee connected to four worker bees, each in a separate hexagonal enclosure, beside the text JailBee 1.8: One agent. Four workers. Your rules.

JailBee 1.8: let an agent coordinate the work

Give an agent bounded rights to start worker containers, exchange messages and bring their commits together. You set the limits and publish the result.

Running several coding agents is useful. Creating their environments, passing tasks between them and collecting their changes is still work for you. JailBee 1.8 lets an agent take on that coordination, within limits you set on the host.

JailBee gives coding agents isolated Linux development environments using Incus system containers. In 1.7, the dashboard made it easier to supervise many of them. In 1.8, a container can become an orchestrator: its agent can start child containers, give each one a task, exchange messages and bring the resulting commits into its own branch.

Watch on YouTube

From a bug backlog to one branch

Suppose you have several well-defined bug tickets. Ask the orchestrator to work through them using child containers, with one child per ticket and no more than four running at once.

The orchestrator reads the tickets through the container's read-only GitHub access and gives each child a prompt with the problem and acceptance tests. Each child gets its own container and working tree, where it can investigate, change code and run tests without sharing the orchestrator's checkout. The prompted agent starts only after the container's autostart stages have finished.

The dashboard showing an orchestrator and four indented child containers, with orch and child roles and a child count of 4/4
One orchestrator and its four child containers, grouped together in the dashboard

Children can send progress notes, questions and blocked reports back to the orchestrator. When a child reports that it is done, its work must be committed. The orchestrator imports the branch, merges or cherry-picks the commits, and resolves any conflicts itself. Import does not merge anything automatically.

After collecting a result, the orchestrator can stop or destroy that child to free a slot for the next ticket. Spawns beyond the running-child limit wait in a queue. Later children can fork from the orchestrator's updated branch, so they start with the fixes already collected.

At the end, the orchestrator can prepare a pull request through JailBee's existing outbox. You review the result and publish it from the host; the agent does not gain permission to publish to GitHub.

This also works for a set of implementation plans. Independent plans can run in parallel; a dependent plan starts after its prerequisites have been merged. The bundled skills teach the protocol, but the coding agent still makes the planning and integration decisions.

You grant the rights, not host access

On the host, give an existing container a grant:

jb orchestrate grant bugs --children 4
jb orchestrate show bugs

Without a configured default profile, this permits spawning, messaging, importing, restarting, stopping and destroying the orchestrator's own children, with up to four running at once. It grants no optional mounts, loose networking or extra egress. Named profiles let you reuse a policy; a configured default profile supplies the starting values for a plain grant.

The orchestration menu for a container named orchestrator, showing four of four child slots, allowed operations and controls for mounts and network permissions
The host-side orchestration menu: child limit, allowed operations and the rights children may receive

The agent does not get a host shell or direct access to Incus. It writes structured requests to an outbox inside its container. A host-side broker checks each request against the grant before acting. The container cannot widen its own grant, and repository-level restrictions can narrow it further.

You decide which optional mounts and network exceptions the orchestrator may give its children. A child receives the rights requested for it, within those bounds, rather than inheriting the orchestrator's optional access. Children cannot create another generation of children.

The terminal dashboard shows orchestrator and child roles, groups children under their parent and exposes the grant controls. You can also revoke a grant from the host:

jb orchestrate revoke bugs

Revocation blocks further orchestration operations and drops queued spawns; it does not stop existing children. Those remain yours to inspect or stop.

See container orchestration for profiles, remote SSH limits and the full lifecycle.

Containers when you need environments

Child containers complement an agent's own subagents; they do not replace them. Research or a code review may need only another agent conversation. A separate implementation task may need its own checkout, services and test environment.

The bundled orchestrator skill keeps ordinary delegation on the agent's subagent tool and uses child containers when you ask for them. A grant permits orchestration; it is not an instruction to spawn workers for every task.

Initial prompts also work without orchestration. Both jb new and jb fork accept --prompt FILE|-, and primary_agent selects which configured agent receives the task. The prompt is sent once, not replayed on every container restart.

Reviewing and managing the results

The new outbox manager brings proposals, actions and comments into one list with a rendered preview. Open it with jailbee outbox or from the terminal dashboard to inspect, publish or clear work without stepping through the old picker chain. Its all-repositories view collects proposals across registered repos.

PR review comments can now be staged in an unsubmitted GitHub review, so you can inspect and submit them on GitHub rather than publishing them immediately. General comments stay in the outbox.

A few other changes help when there are more containers to manage:

  • jailbee mem and the dashboard's Memory action adjust a container's memory limit. Containers without an override follow defaults.memory, including live updates from jailbee apply.
  • jailbee destroy --stopped removes a repo's stopped containers after one confirmation, and the dashboard can clean up marked orphan containers.
  • The dashboard's details panel is resizable, and the agent's last message keeps its Markdown formatting instead of becoming one long quoted line.

Upgrading

uv tool upgrade jailbee
jailbee upgrade --dry-run
jailbee upgrade

For orchestration, rebuild the golden image with jailbee base build to include the jailbee-inbox helper, and run jailbee apply to install the bundled orchestrator and child skills. The upgrade command handles the release's required steps across registered repositories; apply also updates inherited memory limits.

The full list is in the changelog. If you are new to JailBee, start with installation.