- Update ToolboxStack/output/toolbox-base/Dockerfile with latest container settings - Update ToolboxStack/output/toolbox-base/aqua.yaml with refined tool management This enhances the base developer environment configuration.
🧰 TSYSDevStack Toolbox Base
Daily-driver development container for ToolboxStack work. It provides a reproducible Ubuntu 24.04 environment with curated shell tooling, package managers, and helper scripts.
🚀 Quick Start
- Build the image (local dev tag)
./build.shBuilds and tags the image as tsysdevstack-toolboxstack-toolbox-base:dev. Usesdocker buildxwith a local cache at.build-cache/for faster rebuilds.
- Start the container
./run.sh upDefaults to the release-currenttag; override withTOOLBOX_IMAGE_OVERRIDE=...when testing other tags. Mise runtimes persist to your host in~/.local/share/miseand~/.cache/miseso language/tool downloads are shared across projects.
- Attach to a shell
docker exec -it tsysdevstack-toolboxstack-toolbox-base zsh # or: bash / fish
- Stop the container
./run.sh down
The compose service mounts the current repo to /workspace (read/write) and runs as the mapped host user (toolbox).
🏷️ Image Tagging & Releases
- ./build.sh(no overrides) ⇒ builds- :devfor active development.
- ./release.sh <semver>⇒ rebuilds, retags, and pushes- :dev,- :release-current, and- v<semver>(e.g.,- ./release.sh 0.2.0). Requires a clean git tree.
- Add --dry-runto rehearse the release without pushing (optionally--allow-dirtyfor experimentation only).
- Downstream Dockerfiles should inherit from tsysdevstack-toolboxstack-toolbox-base:release-current(or pin to a semantic tag for reproducibility).
🧩 Tooling Inventory
| Category | Tooling | Notes | 
|---|---|---|
| Shells & Prompts | 🐚 zsh• 🐟fish• 🧑💻bash• ⭐starship• 💎oh-my-zsh | Starship prompt enabled for all shells; oh-my-zsh configured with git+fzfplugins. | 
| Runtime & CLI Managers | 🪄 mise• 💧aqua | misehandles language/tool runtimes (activation wired into zsh/bash/fish);aquamanages standalone CLIs with config at~/.config/aquaproj-aqua/aqua.yaml. | 
| Core CLI Utilities | 📦 curl• 📥wget• 🔐ca-certificates• 🧭git• 🔧build-essential+ headers (pkg-config,libssl-dev,zlib1g-dev,libffi-dev,libsqlite3-dev,libreadline-dev,make) • 🔍ripgrep• 🧭fzf• 📁fd• 📖bat• 🔗openssh-client• 🧵tmux• 🖥️screen• 📈htop• 📉btop• ♻️entr• 📊jq• 🌐httpie• ☕tea• 🧮bc | Provides ergonomic defaults plus toolchain deps for compiling runtimes (no global language installs). | 
| Aqua-Managed CLIs | 🐙 gh• 🌀lazygit• 🪄direnv• 🎨git-delta• 🧭zoxide• 🧰just• 🧾yq• ⚡xh• 🌍curlie• 🏠chezmoi• 🛠️shfmt• ✅shellcheck• 🐳hadolint• 🐍uv• 🔁watchexec | Extend via ~/.config/aquaproj-aqua/aqua.yaml. These packages are baked into the image at build time for consistency and reproducibility. Direnv logging is muted and hooks for direnv/zoxide are pre-configured for zsh, bash, and fish. | 
| AI CLI Tools | 🧠 @just-every/code• 🤖@qwen-code/qwen-code• 💎@google/gemini-cli• 🔮@openai/codex• 🌐opencode-ai | AI-powered command-line tools for enhanced development workflows. Node.js is installed via mise to support npm package installation. | 
| Container Workflow | 🐳 Docker socket mount ( /var/run/docker.sock) | Enables Docker CLIs inside the container; host Docker daemon required. | 
| AI Tool Configuration | 🧠 Host directories for AI tools | Host directories for AI tool configuration and cache are mounted to maintain persistent settings and data across container runs. | 
| Runtime Environment | 👤 Non-root user toolbox(UID/GID mapped) • 🗂️/workspacemount | Maintains host permissions and isolates artifacts under artifacts/ToolboxStack/toolbox-base. | 
🛠️ Extending the Sandbox
- Add a runtime: mise use python@3.12(per project). Run inside/workspaceto persist.mise.toml.
- Add a CLI tool: update ~/.config/aquaproj-aqua/aqua.yaml, then runaqua install.
- Adjust base image: modify Dockerfile, run./build.sh, and keep this README &PROMPTin sync.
🔁 Documentation policy: Whenever you add/remove tooling or change the developer experience, update both this README and the
PROMPTfile so the next collaborator has an accurate snapshot.
📂 Project Layout
| Path | Purpose | 
|---|---|
| Dockerfile | Defines the toolbox-base image. | 
| docker-compose.yml | Compose service providing the container runtime. | 
| build.sh | Wrapper around docker buildwith host UID/GID mapping. | 
| run.sh | Helper to bring the compose service up/down (exports UID/GID env vars). | 
| .devcontainer/devcontainer.json | VS Code remote container definition. | 
| aqua.yaml | Default aqua configuration (gh, tea, lazygit). | 
| PROMPT | LLM onboarding prompt for future contributors (must remain current). | 
✅ Verification Checklist
After any image changes:
- Run ./build.shand ensure it succeeds.
- Optionally ./run.sh upand sanity-check key tooling (e.g.,mise --version,gh --version).
- Update this README and the PROMPTwith any new or removed tooling.
🤝 Collaboration Notes
- Container always runs as the mapped non-root user; avoid adding steps that require root login.
- Prefer mise/aquafor new tooling to keep installations reproducible.
- Keep documentation synchronized (README + PROMPT) so future contributors can resume quickly.