Direct answers, with which modes apply. No ducking.
If we have multiple containers, do we get multiple CloudCLI UIs?
Yes — one CloudCLI per HolyClaude container. Each container ships a CloudCLI server bound to its internal :3001. To reach it from the host, you must map a unique host port per container — :3001, :3002, :3003, … — or rotate which container holds :3001 at any moment, or skip CloudCLI entirely and use docker exec.
For ainb: the cleanest default is no CloudCLI exposure (use docker exec + JSON streaming), with an opt-in flag (ainb container ui) that picks an unused host port and tells the user where to point their browser. CloudCLI becomes a forensic / interactive escape hatch, not the primary UX.
Modes affected: 02, 03, 06, 07 (UI-relevant). Modes 01, 04, 05, 08 typically skip the UI.
Can I issue something else in that worktree while a task runs?
Yes — depends on which mode. In mode 6 (parallel-in-one-container), just docker exec a second claude -p. In mode 7 (multi-container), spawn a second container with the same workspace bind mount. In mode 1 (fire-and-forget ephemeral), you'd have to wait or spawn a peer container in parallel. Mode 3 (REPL) blocks because the user is mid-interaction with one process.
Warning: concurrent tasks against the same worktree files will race. If both tasks edit src/foo.rs, last-writer-wins. Mitigation: per-task worktrees (git worktree branch-per-task) or read-only mounts for non-mutating tasks.
Modes that support it cleanly: 06 (parallel-in-one), 07 (multi-container). Mode 03 blocks (one REPL = one user attention).
How do I look through status / result / whole execution after the fact?
Three layers, depending on retention policy.
Live: ainb TUI tails the container's stdout (current bossmode pattern, parses stream-json). Post-hoc, container alive: docker logs <id>, or open CloudCLI UI on the container's :3001 mapping. Post-hoc, container gone: persisted logs at ~/.agents-in-a-box/holyclaude/logs/<session-id>.jsonl if ainb saves them on container teardown — and the session jsonl files at ~/.agents-in-a-box/holyclaude/claude/projects/<hash>/<uuid>.jsonl are always recoverable via the bind mount.
Interactive review: docker exec -it <id> claude -c opens the exact same session in a TTY for follow-up questions — works as long as the container is alive. Mode 2 (sticky) keeps this option open by design.
Best supported by: 02 (sticky) for live forensic access · 08 (CI) for artifact-driven review.
Can I continue conversation from a previous session?
Yes, with the right plumbing. claude CLI supports claude -c (continue most recent in cwd) and claude --resume <session-id> (specific session). Both read jsonl from ~/.claude/projects/<project-hash>/<uuid>.jsonl. Because HolyClaude bind-mounts ~/.claude from ./data/claude/ (in ainb's case: ~/.agents-in-a-box/holyclaude/claude/), these files persist across container restarts.
For ainb: surface a "resume this session" affordance in the TUI's session list. The trick is mapping a session UUID back to a human-readable label (current bossmode uses worktree branch + first prompt as the label — keep that).
Best supported by: 02 (sticky), 03 (REPL), 04 (programmatic), 05 (babysitter). Mode 01 can do it too if jsonl persisted.
Can I resume the same context after fire-and-forget exits?
Yes, as long as the jsonl survives. In mode 1, the container is gone but the bind-mounted jsonl is on host disk. Spawn a new container with the same bind mount, claude --resume <uuid>, and you pick up exactly where the previous run left off.
This is the bridge from mode 1 → mode 4 (multi-turn programmatic). The very same session can be "fire-and-forget today, follow up tomorrow" without changing mode operationally — just spawn a fresh container against the persisted state.
Architectural impact: ainb must record the session-id from each run (it's in the stream-json output's init event) so it can pass it back on resume.
After fire-and-forget, can I start an interactive session on top to give more instructions?
Yes — two clean paths.
Path A (recommended for ainb): Spawn a fresh container with the persisted bind mount, run claude -c in TTY via docker exec -it (mode 3 lifted onto the bones of mode 1). Context resumes, user types follow-up, agent responds. Closes mode 3 when user exits TTY.
Path B: Use mode 2 (sticky) from the start — never let the original container exit. Then docker exec -it <id> claude -c on the still-running container. Faster (no cold start) but commits to the "container keeps running" cost.
UX hook: "Continue this task" button in the TUI's session list — defaults to Path A, falls back to Path B if the container is still alive.