Sparkdock is an automated macOS development environment provisioner built with Ansible. It provides a consistent, reproducible setup for development workstations with containerized workflows and modern tooling.
GUI Applications:
- Docker Desktop, Google Chrome, Visual Studio Code
- iTerm2, Ghostty terminal, Slack, Zoom
- Maccy clipboard manager, MonitorControl
Development Tools:
- Languages: Node.js 20, PHP 8.2, Go, Python 3
- Version Control: Git with credential manager, GitHub CLI, GitLab CLI
- Cloud/Container: AWS CLI, Kubernetes CLI (kubectl), k9s, Docker credential helper
- Container Development: Kind, Kubectx, Skaffold, Stern
System Utilities:
- Modern Shell Tools: eza (ls), fd (find), ripgrep (grep), bat (cat), zoxide (cd)
- Shell Enhancement: Atuin (shell history), fzf (fuzzy finder), thefuck (command correction)
- Terminal Tools: tmux, tmate, watch, jq, jless
- System Info: fastfetch, mactop
- Fonts: Nerd Fonts (Droid Sans Mono, Inconsolata, Fira Code)
Integrated SparkFabrik HTTP Proxy providing:
- Automatic DNS resolution for
.locdomains - Local SSL certificates via mkcert
- Containerized reverse proxy with Traefik
- Monitoring dashboards (Grafana + Prometheus)
SparkJust (sjust) - Custom task runner with commands for:
- Docker management (start/stop containers, cleanup)
- HTTP proxy control
- System updates and maintenance
- Package management
bash <(curl -fsSL https://raw.githubusercontent.com/sparkfabrik/sparkdock/master/bin/install.macos)Operating System:
- macOS Sequoia (15.x) or macOS Tahoe (26.x)
- Apple Silicon only
Hardware Requirements:
- At least 8GB RAM recommended (16GB for heavy development workloads)
- Minimum 10GB free disk space (20GB+ recommended for full development environment)
- Stable internet connection for package downloads
User Requirements:
- Administrator privileges (required for system-level configurations)
- Command line familiarity (basic terminal usage)
Network Requirements:
- Access to GitHub, Homebrew, and Docker Hub repositories
The installation process:
- System Prerequisites: Xcode Command Line Tools, Homebrew
- Base Tools: Git, curl, Python 3, Ansible
- Sparkdock Repository: Cloned to
/opt/sparkdock - Applications & Tools: All packages from the configuration
- HTTP Proxy System: Configured and ready to use
- Task Runner: sjust command available system-wide
- Update Service: Automatic update checking via launchd
Run the provisioner to configure your system:
sparkdockTo update an existing Sparkdock installation, either re-run the full provisioner or use the dedicated SparkJust task:
sparkdock
# or
cd /opt/sparkdock
sjust sparkdock-upgradesjust sparkdock-upgrade refreshes the repository, ensures SparkJust is installed, and applies the latest configuration updates (including the HTTP proxy system).
View and run available development tasks:
sjust # Show available commands
sjust --list # List all tasks
sjust docker-ps # Show running containers
sjust system-upgrade # Update system packages
sjust system-gcloud-reconfigure # Configure Google Cloud SDK and install gke-gcloud-auth-pluginSparkdock automatically installs and configures Google Cloud SDK during provisioning, including the gke-gcloud-auth-plugin component required for GKE authentication.
To manually reconfigure Google Cloud SDK:
sjust system-gcloud-reconfigureThis command will:
- Install Google Cloud SDK via Homebrew (if not present)
- Install the
gke-gcloud-auth-plugincomponent - Configure shell completion in your
.zshrc - Verify the installation
After configuration, you can verify the plugin is working:
gke-gcloud-auth-plugin --versionSparkdock includes an experimental sparkdock-ai helper built with llm, OpenAI models, and gum. It lets you ask interactive questions about your local Sparkdock checkout (for example: “What packages are installed?” or “What aliases are defined?”).
Before launching it, export an OPENAI_API_KEY with the internal key material (ping Sparkdock internal support — e.g. #support-tech on Slack — if you need retrieval instructions). One approach is to define an export_openai_key helper in ${HOME}/.config/spark/shell.zsh that reads the secret from Google Cloud and exports it for your shell session.
Run it from the repository root or /opt/sparkdock:
bin/sparkdock-aiOn first launch, the script removes any legacy GitHub Copilot plugin, wipes stored llm keys, and verifies that OPENAI_API_KEY is present. Answers cite the relevant files so you can follow up directly in the repo.
The assistant calls the fast OpenAI gpt-4.1-nano model for contextual answers and gpt-5-nano for quick direct responses. During long-running calls the CLI shows a gum spin progress indicator, and it falls back to plain text messaging if gum is unavailable.
Pick “Help” in the menu at any time to read a quick overview of how the assistant works, including the classifier/direct-answer flow diagram.
Logs live at ~/.config/spark/sparkdock/ai.log. Set SPARKDOCK_AI_LOG_LEVEL=TRACE for verbose tracing or SPARKDOCK_AI_LOG_FILE to override the destination.
Sparkdock provides a modern shell experience with oh-my-zsh, starship prompt, and a curated set of modern Unix tools with convenient aliases.
Setup:
sjust shell-omz-setup # Install oh-my-zsh and zsh plugins
sjust shell-omz-update-plugins # Update oh-my-zsh plugins
sjust shell-enable # Add Sparkdock config to your ~/.zshrcDiscover Available Tools & Aliases:
Sparkdock includes modern replacements for traditional Unix tools (like eza, fd, ripgrep, bat, fzf, zoxide) along with helpful aliases and shell enhancements. To see what's available:
sjust shell-info # View detected shell configuration and the exact zshrc snippetCommands:
sjust shell-info # Summarize current shell settings and Sparkdock defaults
sjust shell-disable # Remove from ~/.zshrcDefaults applied by sjust shell-enable:
SPARKDOCK_ENABLE_STARSHIP=1(Starship prompt ON)SPARKDOCK_ENABLE_FZF=1(fzf fuzzy finder ON)SPARKDOCK_ENABLE_ATUIN=0(Atuin history sync OFF)
Set these variables before sourcing Sparkdock if you prefer different defaults.
Customization:
Create ~/.config/spark/shell.zsh for personal customizations — Sparkdock sources it after its own defaults so it’s the safe place for aliases, exports, and tweaks.
Manage the local development proxy:
spark-http-proxy start # Start proxy services
spark-http-proxy stop # Stop proxy services
spark-http-proxy status # Check service statusSparkdock includes a native macOS menu bar application that provides quick access to system status and common tasks:
Features:
- Real-time system status with colored indicators
- Quick access to development tools and dashboards
- Battery-efficient event-driven updates
- Automatically starts at login via LaunchAgent
Control the menu bar app:
sjust menubar # Launch the menu bar app manuallyThe app is automatically installed as a LaunchAgent (com.sparkfabrik.sparkdock.menubar.plist) and starts at login. It shows update availability and provides one-click access to system updates and development tools.
/opt/sparkdock/
├── ansible/ # Ansible playbooks and inventory
├── bin/ # Main executables and utilities
├── sjust/ # SparkJust task runner
├── config/ # Configuration files and packages
└── http-proxy/ # HTTP proxy system (cloned)
- Custom Tasks: Add to
~/.config/sjust/100-custom.just - Package Lists: Modify
/opt/sparkdock/config/packages/all-packages.yml - System Settings: Edit Ansible playbooks in
/opt/sparkdock/ansible/
For detailed troubleshooting information, see our troubleshooting guide or visit the company playbook.
If you are still blocked after trying the steps above:
- Reach out on Slack in
#sparkdock-supportwith a short summary plus any relevant logs (for example~/.config/spark/sparkdock/ai.log). - Or open an issue on the Sparkdock repository so the team can track the fix.
- Permission Errors: Ensure administrator privileges
- Docker Desktop Network Problems: Use
sjust docker-desktop-*commands for UDP and host networking issues - Update Failures: System automatically rolls back failed updates
- Lock File Issues: Remove
/tmp/sparkdock.lockif installation appears stuck - DNS Resolution: Use
sjust system-clear-dns-cacheto clear DNS cache - HTTP Proxy Issues: Use
sjust http-proxy-install-updateto restart proxy services
Contributions welcome! Areas of interest:
- Support for additional operating systems
- New development tools and configurations
- Bug fixes and improvements
- Shell Scripts: Use
set -euo pipefailand pass shellcheck - Ansible: Idempotent tasks with proper error handling
- Just Tasks: Well-documented and focused
Licensed under the GNU General Public License v3.0 - see LICENSE for details.
Maintained by SparkFabrik's development team.
Send PRs, open issues, and embrace containerized development!
