JailBee logo: a bee behind bars
JailBee by GISGRO

One container per branch. All of them at once.

JailBee gives every git branch a full system container of its own: its own services, its own Docker daemon, its own IDE and browser, cloned copy-on-write from one golden image. Several stacks run in parallel on one host without a single port collision, Docker-name clash, or shared-database accident.

uv tool install jailbee

Linux host required — see Requirements.

Two branches, one host, one of everything.

Port 8080 is taken. The second branch's dev server, database and Docker Compose project all want names the first branch already holds.

The database is shared. A migration written on one branch quietly changes what the other branch is testing against.

Switching costs twenty minutes. Stash, rebuild, reinstall, re-seed — and then do it again when you switch back.

Isometric illustration: a hand slides an entrance reducer into the front of a beehive brood box that doubles as a server chassis, narrowing the opening the bees pass through.

A guarded entrance, not a sealed box.

An agent that cannot reach the network cannot do its job, so the question was never whether it gets out — it is how wide you leave the opening. jailbee net strict allows the hosts your build actually needs. jailbee net loose widens it for a set time and reverts on its own, so nobody leaves it open by forgetting. JailBee shields the host from what runs inside a container; it does not pretend to shield the code inside from the world.

Your IDE and your browser, from inside the container.

jb ide launches the JetBrains IDE that lives in the container onto your own Wayland session. jb chrome does the same for a browser with its own profile and its own localhost. jb gui opens a Qt dashboard that spans every repo on the host.

What you get.

Isolation, per branch. Every branch you're working on gets a full environment of its own — services, database and all — so two branches never fight over the same port or the same data.

A shortcut for git. Commits move straight between your computer and a branch's container, so you don't have to push to GitHub and pull again just to get code from one place to the other.

Docker, unchanged. Docker and Docker Compose run normally inside each container, so whatever you already use for local development keeps working as-is.

A leash on the network. Each container can only reach the internet addresses your build actually needs, and you can widen that temporarily when you need to — it closes back up on its own.

Your tools, not a copy. The IDE and browser that live inside a container open on your own screen, so working in one feels the same as working locally.

Fast to spin up, easy to watch. New containers start in about a minute because they're cheap copies of one shared image, and a live dashboard shows every one of them across every project.

Requirements.

JailBee needs a Linux host running Incus, and uv to install the CLI. Ubuntu 26.04 gives nested Docker out of the box. Host setup — Incus, firewall, UID mapping, kernel keyring limits — is a one-time job with a few moving parts, and the installation guide walks it end to end. Running from an Apple Silicon Mac through a Linux VM is supported, experimentally.

uv tool install jailbee
uv tool install 'jailbee[gui]'

The gui extra adds the Qt dashboard.

  1. jailbee config init
  2. jailbee doctor
  3. jailbee init
  4. jailbee base build
  5. jailbee new feat/my-branch

Documentation.