Containerised dev environment packed with modern CLI/TUI tools and AI coding assistants. Batteries included.
Curated Rust/Go replacements for everyday Unix tools, multiple AI-powered editors, and sensible defaults, all in a reproducible Docker container you can spin up on any machine.
For demonstration purposes only β actual setup may involve more staring at the screen.
- Docker
- Git β on Windows, install Git for Windows
(provides
bashandwinptyneeded by the install script)
curl -fsSL https://raw.githubusercontent.com/SquareWaveSystems/squarebox/main/install.sh | bash
This clones the repo, builds the Docker image, and drops you into the container. On first login, a setup script runs automatically to configure git, GitHub CLI, your choice of AI coding assistant, and language SDKs.
squarebox # or: sqrbx
Shell aliases are added automatically for Bash, Zsh, and PowerShell 7+.
The container is persistent: it suspends on exit and resumes on start, keeping
installed packages, config, and shell history intact between sessions. Your code
lives on the host at ~/squarebox/workspace via volume mount, so it survives
even if the container is deleted.
| Name | Language | Description |
|---|---|---|
| bat | Rust | Cat clone with syntax highlighting |
| curl | C | URL data transfer |
| delta | Rust | Syntax-highlighting pager for git diffs |
| eza | Rust | Modern ls replacement |
| fd | Rust | Fast, user-friendly find alternative |
| fzf | Go | Fuzzy finder |
| gh | Go | GitHub CLI |
| glow | Go | Terminal markdown renderer |
| gum | Go | Tool for shell scripts and dotfiles |
| jq | C | JSON processor |
| nano | C | Default text editor |
| ripgrep | Rust | Fast recursive grep |
| starship | Rust | Cross-shell prompt |
| xh | Rust | Friendly HTTP client |
| yq | Go | YAML/JSON/XML processor |
| zoxide | Rust | Smarter cd command |
| Name | Language | Description |
|---|---|---|
| gh-dash | Go | GitHub dashboard for the terminal |
| lazygit | Go | Git terminal UI |
| yazi | Rust | Terminal file manager |
Installed during first-run setup. Choose any combination:
| Name | Language | Description |
|---|---|---|
| Claude Code | TypeScript | AI coding assistant |
| GitHub Copilot CLI | TypeScript | GitHub Copilot in the terminal * |
| Google Gemini CLI | TypeScript | Google Gemini in the terminal * |
| OpenAI Codex CLI | TypeScript | OpenAI Codex in the terminal * |
| opencode | Go | AI coding TUI |
* Requires Node.js (auto-installed if needed).
Installed during first-run setup. Nano is always available as the default editor.
| Name | Language | Description |
|---|---|---|
| micro | Go | Modern, intuitive terminal editor |
| edit | Rust | Terminal text editor (Microsoft) |
| fresh | Rust | Modern terminal text editor |
| helix | Rust | Modal editor (Kakoune-inspired) β coming soon |
| nvim | C/Lua | Neovim |
Inspired by Omarchy.
| Alias | Command | Description |
|---|---|---|
ls |
eza --icons |
Modern ls with icons |
ll |
eza -la --icons |
Long listing with icons |
lsa |
ls -a (resolves to eza --icons -a) |
List all including hidden files |
lt |
eza --tree --level=2 --long --icons --git |
Tree view with git status |
lta |
lt -a |
Tree view including hidden files |
cat |
bat --paging=never |
Syntax-highlighted cat |
ff |
fzf --preview 'bat ...' |
Fuzzy find with preview |
eff |
$EDITOR "$(ff)" |
Fuzzy find and edit |
.. |
cd .. |
Go up one directory |
... |
cd ../.. |
Go up two directories |
.... |
cd ../../.. |
Go up three directories |
c |
first selected AI tool | Launch selected AI assistant |
g |
git |
Git shorthand |
gcm |
git commit -m |
Commit with message |
gcam |
git commit -a -m |
Stage all and commit |
gcad |
git commit -a --amend |
Stage all and amend |
lg |
lazygit |
Launch lazygit |
claude-yolo |
claude --dangerously-skip-permissions |
Claude without prompts |
opencode-yolo |
opencode --dangerously-skip-permissions |
OpenCode without prompts |
Selected during first-run setup. Choose any combination, all, or none:
| SDK | Installed via |
|---|---|
| Node.js | nvm |
| Python | uv |
| Go | go.dev |
| .NET | dotnet-install |
Selections are saved to the workspace volume and reused automatically on container rebuilds.
sqrbx-update
Checks all GitHub-released tools against latest versions and updates them in-place. No rebuild required. Your container state, SDKs, and config are preserved.
sqrbx-update # show available updates (dry run)
sqrbx-update --apply # download and install all updates
sqrbx-update lazygit # update a single tool
sqrbx-update --list # list all tools and current versions
Set GITHUB_TOKEN to avoid API rate limits.
sqrbx-rebuild
Pulls the latest changes, rebuilds the image, and replaces the container. Your code in ~/squarebox/workspace is safe since it lives on the host. Setup selections (AI tool, editors, SDKs, GitHub auth) are persisted in the workspace volume and restored automatically. However, shell history, manually installed packages, and custom config files inside the container are lost.
| Survives | Lost |
|---|---|
| Code in ~/squarebox/workspace (host volume) | Shell history (~/.bash_history) |
| Starship and lazygit config (host volume) | Manually installed apt packages |
| AI tool / editor / SDK selections | Custom dotfiles in /home/dev/ |
| GitHub CLI auth | Caches and temp files |
| SSH keys (read-only mount from host) |
To preserve extra files across rebuilds, store them in /workspace/.squarebox/.
Tip: Use
sqrbx-updatefrom inside the container to update tools without rebuilding. Only usesqrbx-rebuildwhen the base image itself needs to change (new apt packages, new base tools, Dockerfile changes).
The base image (all CLI/TUI tools, no optional components) is ~400 MB on disk.
First-run selections add to that:
| Component | Adds |
|---|---|
| Claude Code | ~300 MB |
| GitHub Copilot CLI | ~50 MB |
| Google Gemini CLI | ~50 MB |
| OpenAI Codex CLI | ~50 MB |
| OpenCode | ~30 MB |
| micro / edit | ~12 / ~7 MB |
| fresh / nvim | ~10 / ~45 MB |
| Node.js | ~90 MB |
| Python (uv) | ~35 MB |
| Go | ~500 MB |
| .NET | ~800 MB |
A typical setup (Claude Code + Node.js + one editor) lands around ~800 MB. Sizes are approximate and will vary as tools are updated.
All binary tools are pinned to specific versions and verified against SHA256 checksums at build time. Third-party install scripts (Claude Code, uv, .NET) manage their own binary verification. npm-based AI tools (Copilot CLI, Gemini CLI, Codex CLI) use npm's built-in integrity verification.
For the full trust model (what install.sh does on your machine, how each
layer is verified, and how to inspect the script before running it) see
SECURITY.md.
Open this repo in VS Code with the
Dev Containers extension,
or launch it in GitHub Codespaces.
The included .devcontainer/devcontainer.json builds the full squarebox image
automatically.
The interactive first-run setup is skipped in devcontainer mode. To configure
AI tools or SDKs, run ~/setup.sh from the integrated terminal.
You can also attach to a running codespace directly from your local terminal
using gh codespace ssh.
docker stop squarebox 2>/dev/null; docker rm squarebox
docker rmi squarebox
rm -rf ~/squarebox
Then remove the sqrbx and sqrbx-rebuild aliases from your shell config
(~/.bashrc, ~/.zshrc, or ~/Documents/PowerShell/Microsoft.PowerShell_profile.ps1).
Back up ~/squarebox/workspace first if you need your code.