Skip to content

Restructure nvim sandbox into "devcube" IDE with zellij + workmux#187

Closed
binarypie wants to merge 1 commit into
mainfrom
claude/refine-local-plan-iygsz7
Closed

Restructure nvim sandbox into "devcube" IDE with zellij + workmux#187
binarypie wants to merge 1 commit into
mainfrom
claude/refine-local-plan-iygsz7

Conversation

@binarypie

Copy link
Copy Markdown
Collaborator

Summary

Turns the single-purpose nvim-dev sandbox into a proper containerized IDE — devcube — that can run multiple AI agents in parallel, each in its own git worktree, inside one container (no nested podman).

The old folder dot_files/nvim/ mixed two concerns (the nvim config dotfile + the container project) and installed per-tool symlinks (nvim, claude, codex, agy) into ~/.local/bin, shadowing any host-native installs. This splits those concerns and collapses everything behind a single devc command.

What changed

New tools baked into the image

  • zellij (multiplexer) with a Tokyo Night Moon theme matching nvim/ghostty, fish as the default shell, nvim as scrollback editor.
  • workmux (git-worktree → multiplexer orchestration) for the parallel-agent flow.
  • fish + starship config baked in for a good in-container shell/prompt.

Restructure & rename (nvim-devdevcube)

  • dot_files/nvim/ (container project) → dot_files/devcube/; dot_files/nvim/ is now just the nvim config dotfile.
  • New top-level dotfiles dot_files/zellij/ and dot_files/workmux/.
  • Image ghcr.io/binarypie-dev/nvim-devdevcube; workflow build-nvim-dev.ymlbuild-devcube.yml; ujust nvim-*devcube-*; just file 61-nvim.just61-devcube.just; env overrides HYPERCUBE_NVIM_*DEVCUBE_*; sentinel HYPERCUBE_NVIMDEVCUBE; state volume → hypercube-devcube-home.
  • Image build context moved up to dot_files/ (with a .dockerignore) so fish/starship/zellij/workmux/nvim configs can all be baked.

Single devc command (no more per-tool symlinks)

  • devc → workmux parallel-agent workspace (a zellij session).
  • devc zellij → plain zellij session.
  • devc nvim / devc claude / devc codex / devc agy → run that tool directly; extra args pass through.

Per-project worktree volumes

  • Worktrees no longer use the host parent dir. Each project gets a path-derived named volume (devcube-wt-<slug>-<hash>) mounted at /worktrees, with worktree_dir: /worktrees. Worktrees + workmux state (XDG_STATE_HOME redirected onto that volume) persist across restarts and never collide across projects. The project itself stays a project-only bind mount. Each orchestrator session uses a project-named zellij session for clean reattach.

Verification

  • just lint / just format / just check over the new shell + just files.
  • Build: cd dot_files && podman build -t devcube -f devcube/Containerfile ., then confirm zellij/workmux/starship/fish --version and that the configs are baked.
  • Smoke test devc in a repo, run workmux add test-branch "...", confirm the worktree appears on the per-project volume and survives a restart; confirm a different repo gets a distinct volume.

Notes

  • Renaming the state volume means a one-time re-login to claude/codex/gh (fresh volume also correctly seeds the new baked configs).
  • Worktrees are container artifacts (live on the volume, not the host) — manage them from inside devc.
  • workmux's zellij backend is officially experimental (cosmetic rough edges only).
  • The old nvim-dev image tag is orphaned by the rename.

🤖 Generated with Claude Code

https://claude.ai/code/session_01K44UxeGUD7Peow4F4ipmXz


Generated by Claude Code

Turn the single-purpose nvim-dev sandbox into a containerized IDE that can
run multiple AI agents in parallel, each in its own git worktree, inside one
container. Adds zellij (multiplexer) + workmux (git-worktree orchestration)
and a baked fish + starship shell, behind a single `devc` command.

- Move the container project dot_files/nvim -> dot_files/devcube (Containerfile,
  entrypoint, Justfile, README, wrapper). dot_files/nvim now holds only the
  nvim config dotfile.
- Build context moves up to dot_files/ so fish/starship/zellij/workmux/nvim
  configs (top-level dotfiles) can be baked in; add dot_files/.dockerignore.
- New wrapper devcube.sh dispatches on its first arg (`devc` -> workmux,
  `devc nvim|claude|codex|agy|zellij`), replacing the per-tool symlinks that
  shadowed host installs. Orchestrators get a per-project worktree volume
  mounted at /worktrees (path-derived name, persists across restarts, isolated
  per project) with workmux state redirected there via XDG_STATE_HOME.
- New baked configs: zellij Tokyo Night Moon theme + workmux layout, workmux
  config (worktree_dir: /worktrees).
- Full rename: image -> devcube, workflow -> build-devcube.yml, ujust recipes
  -> devcube-*, just file -> 61-devcube.just, env -> DEVCUBE_*, sentinel
  -> DEVCUBE, state volume -> hypercube-devcube-home.
- Update nvim-launcher/desktop to open `devc nvim`, plus docs and the build
  test reference.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K44UxeGUD7Peow4F4ipmXz
@binarypie binarypie closed this Jun 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants