A comprehensive, TUI-driven automation system that transforms any macOS machine into a fully configured development environment. Inspired by my personal need to quickly configure Mac devices every time I changed them, kavow streamlines the entire setup process from applications to programming languages.
Built entirely in Bash following Omarchy principles (omarchy.org), which I've been using in other devices and find absolutely beautiful for creating maintainable software architecture.
π― Zero-Configuration Setup - Single command starts the entire process
π¨ Modern Terminal UI - Clean, intuitive interface using gum
π¦ Dual Package Management - Homebrew for applications, mise for programming languages
π Programming Languages - Choose from Python, Node.js, Ruby, Go, Rust, Java, PHP
π§ Complete Git & GitHub Setup - Automated SSH key generation and GitHub CLI authentication
πΎ State Recovery - Resume from any interruption point with full context
ποΈ Modular Architecture - Easy to extend and customize following Omarchy principles
π Smart Version Management - Automatic language version handling via mise
git clone https://github.com/kuzeofficial/kavow.git
cd kavow
./setup.shThe script will guide you through:
- Homebrew installation verification
- Application selection by category
- Programming language selection (Python, Node.js, Ruby, Go, Rust, Java, PHP)
- Automated language installation via mise
- Git and GitHub configuration
- SSH key generation and GitHub authentication
- Spotify - Music streaming
- 1Password - Password manager
- Discord - Communication
- Slack - Team collaboration
- Obsidian - Note-taking
- Todoist - Task management
IDEs & Editors
- VSCode - Code editor
- IntelliJ IDEA - Java/Kotlin IDE
- Zed - High-performance editor
- Cursor - AI-powered editor
AI Tools
- Claude Code - AI coding assistant
Terminals
- Ghostty - GPU-accelerated terminal
- Warp - Modern terminal with AI features
- iTerm2 - Feature-rich terminal
Choose from these programming languages, automatically installed via mise version manager:
- Python 3.13 - Interpreted, interactive, object-oriented programming language
- Node.js (latest) - Platform built on V8 to build network applications
- Ruby (latest) - Dynamic, open source programming language with a focus on simplicity
- Go (latest) - Open source programming language supported by Google
- Rust (latest) - Empowering everyone to build reliable and efficient software
- Java (latest) - Class-based, object-oriented programming language
- PHP (latest) - Popular general-purpose scripting language
βββ setup.sh # Main entry point with kavow banner
βββ LICENSE # MIT License
βββ lib/ # Core utilities following Omarchy principles
β βββ ui_hybrid.sh # Hybrid TUI framework (gum + native fallback)
β βββ ui_native.sh # Native bash UI functions
β βββ state.sh # State management and recovery
β βββ utils.sh # Common utilities and validation
β βββ brew.sh # Homebrew operations wrapper
β βββ gum_manager.sh # GUM auto-install manager
β βββ installer.sh # Application and language installation logic
βββ modules/ # Feature modules with clear boundaries
β βββ git/ # Git configuration module
β β βββ setup.sh # Git identity and settings
β βββ github/ # GitHub integration module
β β βββ auth.sh # GitHub CLI and SSH key setup
β βββ mise/ # Language version management module
β β βββ setup.sh # Programming language installation
β βββ ssh/ # SSH key management module
β βββ keygen.sh # SSH key generation utilities
βββ data/ # Configuration data (no code)
β βββ apps.conf # Application metadata and categories
β βββ categories.conf # Application category definitions
β βββ languages.conf # Programming language definitions
βββ preflight/ # System validation module
β βββ guard.sh # macOS compatibility and prerequisite checks
βββ test/ # Test suite
βββ run_tests.sh # Test runner
βββ unit/ # Unit tests
βββ integration/ # Integration tests
Following Basecamp's Omarchy philosophy (omarchy.org):
- Clear Boundaries - Each module has a single responsibility
- Minimal Interfaces - Simple function signatures and data flow
- No Premature Abstraction - Concrete solutions over generic frameworks
- Fail Fast - Early validation with clear error messages
Built with β€οΈ following Omarchy principles for maintainable software architecture
The system maintains state in ~/.kavow/state.json to enable recovery:
{
"version": "1.0.0",
"current_stage": "language_selection",
"homebrew_installed": true,
"gum_installed": true,
"selected_apps": ["vscode", "spotify"],
"installed_apps": ["vscode", "spotify"],
"failed_apps": [],
"selected_languages": ["python", "nodejs"],
"installed_languages": ["python", "nodejs"],
"failed_languages": [],
"git_configured": false,
"mise_configured": true,
"github_authenticated": false,
"ssh_key_generated": false,
"setup_complete": false
}If the setup is interrupted, simply run:
./setup.sh --recoverThe system will detect the previous state and resume from the last successful step.
- Add application metadata to
data/apps.conf:
my-app|My App|productivity|brew install --cask my-app|My favorite productivity app- The installer will automatically detect and include it in the relevant category.
- Add language metadata to
data/languages.conf:
kotlin|Kotlin|Modern programming language for JVM|latest- Users can select it during the language selection phase, and it will be installed via mise.
Edit data/categories.conf to add or modify application categories:
MyCategory|π― My Tools|Custom tools for my workflow|3- macOS 10.15+ (Catalina or later)
- Terminal with 256 color support
- Internet connection for downloads
kavow was born from my personal frustration of having to manually configure Mac devices every time I changed them. Whether it was a new work laptop, upgrading to a new Mac, or helping friends/family set up their development environments, the process was always repetitive and time-consuming.
I've been using Omarchy principles in other devices and projects, and I find the approach absolutely beautiful for creating maintainable, modular software. The clear boundaries, minimal interfaces, and fail-fast philosophy resonate deeply with how I think about software architecture.
This project represents the perfect marriage of personal necessity and architectural elegance - solving a real problem while demonstrating how beautiful code organization can make complex automation feel simple and reliable.
The project follows strict Bash guidelines:
- No inline comments (self-documenting code)
- Modular architecture with clear interfaces
- Comprehensive error handling
- State-driven flow control
./test/run_tests.sh- Functions use
snake_case - Constants use
UPPER_CASE - Local variables declared with
local - All scripts have
set -euo pipefail
- Fork the repository
- Create a feature branch
- Follow the existing code style
- Add tests for new functionality
- Submit a pull request
MIT License - see LICENSE file for details.
kavow (/kaΛvoΚ/) - A personal automation project that makes setting up development environments on macOS as simple as saying "kavow" β¨
Built with β€οΈ and a lot of late-night "why do I have to do this again?" moments
"The best code is the code you don't have to write twice" - Every developer who's ever set up a new machine