Beads-only Docker quickstart
Beads-only Docker quickstart
Use these containers when you want to explore Gemba as a Beads viewer and manager without setting up a project, GitHub, or agent orchestration. The containers run the browser UI, the Go server, and the Beads adaptor together.
What you get
| Mode | Image | Best for | Writes |
|---|---|---|---|
| Quickstart sample project | soflo1/gemba-core-quickstart:latest | First look, demos, screenshots, learning the UI | Writable by default |
| Beads-only | soflo1/gemba-core:latest | Mounting your own project worktree or using a Dolt URL | Writable unless the source denies writes |
| Beads-read-only | Either image with GEMBA_BEADS_READ_ONLY=true | Review, audits, sharing a safe UI over real work | Blocked by Gemba before the adaptor |
The UI starts in Beads-only mode with Beads surfaces enabled: the Board status columns, Refine table / hierarchy / swimlane views, sort controls, milestone / epic / bead wrappers, details in the right-hand panel, Beads health, Beads history, and the Graph view. Board state comes directly from Beads without dispatching agents. Agent sessions, dispatch, review, and escalation surfaces are hidden because no orchestration plane is active.
Major functions
Beads-only mode keeps the surfaces that are useful for viewing and managing Beads, and hides the surfaces that require agent orchestration.
| Surface | What it does in Beads-only mode |
|---|---|
| Board | Starts as a status board with Ready / In Progress / Done columns from Beads state. Use the Order control for modified/created/edited/ID sorting and the Milestone / Epic selectors to focus on a wrapper’s children. In writable mode you can create, edit, delete, and drag beads between states without dispatching agents. |
| Refine | Shows parked Deferred work in a dense table for grooming. Switch to Hierarchy for milestone -> epic -> bead structure or Swimlanes for grouped planning. Use it to improve titles, descriptions, priority, wrappers, labels, and other planning fields before work is staged or reviewed elsewhere. |
| Graph | Shows dependency and relationship structure. Use the funnel menu to filter by milestone, epic scope, search, state, or kind; switch between item and epic aggregation; and inspect cycles or critical path signals. |
| Right-hand panel details | Opens bead, epic, milestone, and decision details without leaving the current view. Writable mode exposes edit controls; read-only mode keeps inspection available and blocks mutations. |
| Status | Shows the active Beads mode, current database/source, remote health, read-only posture, and repair/setup actions when the source supports them. |
| Beads history | Renders the JSONL session manifest in plain English so users can see create, edit, delete, and state-change events from the current session. |
Authentication
The containers bind 0.0.0.0:7666 inside Docker, so token auth is on by
default.
On startup Gemba prints two credentials to the container log:
- A primary bearer token. It is printed only when the token is first
created and is persisted as a hash in the
/datavolume. - A one-time browser login URL on every server start:
Open: http://127.0.0.1:7666/#gemba-bootstrap=...Use the one-time URL first. The browser exchanges the fragment token for
a session cookie and removes the fragment from the address bar. If the
link expires, open http://127.0.0.1:7666 and paste the primary token
into the unlock prompt.
If you change the host port mapping, for example -p 7777:7666, edit
the printed URL to use the host port: http://127.0.0.1:7777/....
Quickstart sample project
This is the fastest way to see a populated board.
-
Pull the image:
Terminal window docker pull soflo1/gemba-core-quickstart:latest -
Start the container:
Terminal window docker run --rm -it \--name gemba-beads-demo \-p 7666:7666 \-v gemba-quickstart-data:/data \soflo1/gemba-core-quickstart:latest -
Copy the printed
Open:URL from the terminal and open it in your browser. -
Explore the UI:
- Start on the Board to see Ready / In Progress / Done state columns.
- Open a bead, epic, or milestone to inspect its right-hand details.
- Open Refine to groom the seeded Deferred items in a dense table.
- Switch Refine to Hierarchy to see milestone -> epic -> bead structure.
- Switch Refine to Swimlanes when grouped planning is more useful.
- Click Graph in the sidebar to inspect relationships and dependencies; use the funnel menu to filter by milestone, epic scope, search, state, or kind.
- Open the Status tab to verify Beads health and current mode.
- Create or edit a bead; the Beads history tab records the action.
The seeded project is stored in the gemba-quickstart-data Docker
volume. Reusing the same volume keeps your edits. To reset the demo:
docker volume rm gemba-quickstart-dataBeads-only with your own local project worktree
Use the standard image when you already have a directory containing a
.beads database.
-
Pull the image:
Terminal window docker pull soflo1/gemba-core:latest -
Start from the project worktree directory:
Terminal window cd /path/to/your/beads-worktreedocker run --rm -it \--name gemba-beads \-p 7666:7666 \-v gemba-data:/data \-v "$PWD:/work" \-e GEMBA_BEADS_ONLY=true \-e GEMBA_PROJECT_DIR=/work \soflo1/gemba-core:latest -
Open the printed
Open:URL.
This mode is writable by default. Creating, editing, deleting, and moving beads writes to the mounted Beads database and appends entries to the Beads history ledger.
Beads-only with a Dolt URL
If your Beads database is served by Dolt/MySQL, point Gemba at the URL.
On Docker Desktop, host.docker.internal reaches a service running on
the host machine.
docker run --rm -it \ --name gemba-beads-url \ -p 7666:7666 \ -v gemba-data:/data \ -e GEMBA_BEADS_ONLY=true \ -e GEMBA_BEADS_URL='mysql://root@host.docker.internal:3307/gemba' \ soflo1/gemba-core:latestURL mode is not automatically read-only. It is writable when the Dolt server and credentials allow writes.
Beads-read-only mode
Add GEMBA_BEADS_READ_ONLY=true when you want a safe inspection UI.
Gemba shows a Beads-read-only status pill, hides write affordances
where applicable, and rejects mutation requests before they reach Beads
or Dolt.
Read-only quickstart sample:
docker run --rm -it \ --name gemba-beads-demo-ro \ -p 7666:7666 \ -v gemba-quickstart-data:/data \ -e GEMBA_BEADS_READ_ONLY=true \ soflo1/gemba-core-quickstart:latestRead-only mounted worktree:
cd /path/to/your/beads-worktree
docker run --rm -it \ --name gemba-beads-ro \ -p 7666:7666 \ -v gemba-data:/data \ -v "$PWD:/work" \ -e GEMBA_BEADS_ONLY=true \ -e GEMBA_BEADS_READ_ONLY=true \ -e GEMBA_PROJECT_DIR=/work \ soflo1/gemba-core:latestRead-only Dolt URL:
docker run --rm -it \ --name gemba-beads-url-ro \ -p 7666:7666 \ -v gemba-data:/data \ -e GEMBA_BEADS_ONLY=true \ -e GEMBA_BEADS_READ_ONLY=true \ -e GEMBA_BEADS_URL='mysql://reader@host.docker.internal:3307/gemba' \ soflo1/gemba-core:latestFor defense in depth, prefer read-only Dolt credentials for shared review deployments. Gemba still enforces read-only mode even if the URL credentials could write.
Useful commands
Show the one-time URL again after starting in detached mode:
docker logs gemba-beads-demoRun detached:
docker run -d \ --name gemba-beads-demo \ -p 7666:7666 \ -v gemba-quickstart-data:/data \ soflo1/gemba-core-quickstart:latestdocker logs gemba-beads-demoStop a detached container:
docker stop gemba-beads-demoUse a different host port:
docker run --rm -it \ -p 7777:7666 \ -v gemba-quickstart-data:/data \ soflo1/gemba-core-quickstart:latestThen open http://127.0.0.1:7777 or replace :7666 with :7777 in
the printed one-time URL.
Troubleshooting
- 401 in the browser: use the printed
Open:URL or paste the primary token at the unlock prompt. If the container is detached, rundocker logs <container-name>. - No sample data: remove the demo volume and restart:
docker volume rm gemba-quickstart-data. - Mounted worktree is empty: make sure you started Docker from the
directory that contains
.beads, or setGEMBA_PROJECT_DIRto the container path where that directory is mounted. - Dolt URL cannot connect: from Docker Desktop use
host.docker.internalfor host services; on Linux use the host IP or run the Dolt server on a Docker network shared with Gemba. - Edits unexpectedly succeed in URL mode: URL mode is writable by
default. Set
GEMBA_BEADS_READ_ONLY=trueor use read-only Dolt credentials.