Windows host support (native sbx + Git Bash) #9

Open
opened 2026-10-01 09:20:28 +00:00 by jan · 0 comments
Owner

Decision

Docker Sandboxes runs natively on Windows (sbx v0.46 under
%LOCALAPPDATA%\DockerSandboxes) and supports --clone. The VM is Linux on
both platforms, so only the host side (bin/agentbox, lib/, install.sh,
scripts/build-template.sh) has to run on Windows. Target: Git Bash.

Not WSL: the projects live on the Windows filesystem and are used by
Windows tools; WSL against /mnt/c is slow, the Linux sbx in WSL would be a
nested VM, and calling sbx.exe from WSL mixes path worlds on every call.

Depends on #1 (Enforce LF line endings for everything that runs in the VM) and #2 (sbx 0.46 compatibility: --no-share-skills is gone).

Tasks

  • Paths. sbx.exe wants C:\..., Git Bash produces /c/..., and
    MSYS converts some arguments automatically but not all (not
    name:path forms like sandbox:/path or path:ro). One wrapper that
    converts host paths with cygpath -w before every sbx call, and
    MSYS2_ARG_CONVERSION_EXCL / MSYS_NO_PATHCONV where VM paths must
    stay untouched.
  • Registry. Store one canonical path form, and compare it against the
    WORKSPACE column of sbx ls, which will print Windows paths.
  • doctor. /dev/kvm does not exist; use a Windows check (or
    sbx diagnose). Check that sbx login was done: every command
    fails with Not authenticated to Docker otherwise.
  • Install. ~/.local/bin and ~/.config resolve under the Windows
    home in Git Bash; make sure PATH advice is right there.
  • Permissions. stat -c '%u %a' on the config file means little on
    NTFS; decide what the config permission check does on Windows.
  • Tests. tests/run-tests.sh passes under Git Bash; tests/e2e.sh
    passes against Windows sbx.
  • README. Windows as a second supported platform, with setup steps.

Done when

The whole single-repo workflow (create, open, diff, merge,
update, remove) works from Git Bash on Windows 11, and both test suites
pass there.

## Decision Docker Sandboxes runs natively on Windows (`sbx` v0.46 under `%LOCALAPPDATA%\DockerSandboxes`) and supports `--clone`. The VM is Linux on both platforms, so only the host side (`bin/agentbox`, `lib/`, `install.sh`, `scripts/build-template.sh`) has to run on Windows. Target: Git Bash. **Not WSL:** the projects live on the Windows filesystem and are used by Windows tools; WSL against `/mnt/c` is slow, the Linux `sbx` in WSL would be a nested VM, and calling `sbx.exe` from WSL mixes path worlds on every call. Depends on #1 (Enforce LF line endings for everything that runs in the VM) and #2 (sbx 0.46 compatibility: `--no-share-skills` is gone). ## Tasks - [ ] **Paths.** `sbx.exe` wants `C:\...`, Git Bash produces `/c/...`, and MSYS converts some arguments automatically but not all (not `name:path` forms like `sandbox:/path` or `path:ro`). One wrapper that converts host paths with `cygpath -w` before every `sbx` call, and `MSYS2_ARG_CONVERSION_EXCL` / `MSYS_NO_PATHCONV` where VM paths must stay untouched. - [ ] **Registry.** Store one canonical path form, and compare it against the `WORKSPACE` column of `sbx ls`, which will print Windows paths. - [ ] **doctor.** `/dev/kvm` does not exist; use a Windows check (or `sbx diagnose`). Check that `sbx login` was done: every command fails with `Not authenticated to Docker` otherwise. - [ ] **Install.** `~/.local/bin` and `~/.config` resolve under the Windows home in Git Bash; make sure `PATH` advice is right there. - [ ] **Permissions.** `stat -c '%u %a'` on the config file means little on NTFS; decide what the config permission check does on Windows. - [ ] **Tests.** `tests/run-tests.sh` passes under Git Bash; `tests/e2e.sh` passes against Windows sbx. - [ ] **README.** Windows as a second supported platform, with setup steps. ## Done when The whole single-repo workflow (`create`, `open`, `diff`, `merge`, `update`, `remove`) works from Git Bash on Windows 11, and both test suites pass there.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jan/agentbox#9
No description provided.