Universal Development Environment
🚀 One-click setup for modern development environments with AI tools, cloud CLIs, and optimized containers

🔗 Live Distribution Channels
🌟 Features
- 🤖 AI-Powered Development: Pre-configured Claude and Gemini CLI tools
- ☁️ Cloud-Ready: Google Cloud CLI, GitHub CLI, and deployment configs
- 🐳 Container Optimized: Multi-stage Docker builds with security best practices
- 🔧 VS Code Integration: Rich extension pack and DevContainer support
- 🌍 Universal Compatibility: Works on Alpine, Debian, macOS, Windows, and WSL
- ⚡ Lightning Fast: Optimized build processes and intelligent caching
- 💾 Smart Caching: Automatic caching of downloads and installations for faster setup
🚀 Quick Start
One-Line Install
Unix/Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install.sh | bash
Windows (PowerShell as Administrator):
iwr -useb https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat | iex
Windows (Alternative - Download & Run):
curl -O https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat
Package Manager Install
Cross-Platform (npm):
npm install -g @nhangen/universal-dev-env
macOS (Homebrew):
brew tap nhangen/universal-dev-env
brew install universal-dev-env
Windows (Chocolatey):
# Coming soon - use npm method above for now
choco install universal-dev-env
VS Code Extension
⚡ Quick Troubleshooting
Setup failed? → Jump to Troubleshooting Guide
Common fixes:
- macOS "Unsupported OS":
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/universal-setup.sh -o universal-setup.sh && chmod +x universal-setup.sh && ./universal-setup.sh
- Permission denied:
chmod +x universal-setup.sh
- Clear cache:
uds cache --clear
- Start fresh:
rm -rf project-name && uds init --no-cache
📋 Usage
Initialize New Project
mkdir my-awesome-project
cd my-awesome-project
uds init
cd my-existing-directory
uds init --here
uds init --type python --ml --here
Setup Existing Project
cd existing-project
uds setup
Available Commands
uds init
uds init --here
uds init --type python --ml
uds init --ai-context
uds init --no-cache
uds setup
uds update
uds uninstall
uds cache --info
uds cache --clear
universal-dev-setup
🛠️ What Gets Installed
Core Development Tools
- Node.js & npm - JavaScript runtime and package manager
- Python 3 & pip - Python runtime and package manager
- Conda/Miniconda - Python environment management (macOS)
- Git - Version control system
- Docker - Container platform (optional on Windows)
- VS Code - Code editor (Windows only, manual on other platforms)
AI & Cloud CLI Tools
- Claude CLI (
claude
) - AI-powered coding assistant
- Gemini CLI (
gemini
) - Google's AI development tool
- GitHub CLI (
gh
) - GitHub integration and automation
- Google Cloud CLI (
gcloud
) - Cloud deployment and management
Package Managers (Auto-installed if missing)
- macOS: Homebrew (
brew
)
- Windows: Chocolatey (
choco
)
- Linux: Uses system package manager (
apt
, yum
, apk
)
Container Features
- Multi-stage Docker builds for optimal image sizes
- Security-hardened containers with non-root users
- Alpine and Debian base image options
- Playwright browser automation support
- Health checks and proper signal handling
VS Code Extensions
- TypeScript/JavaScript development
- React and Node.js tooling
- Docker and Kubernetes support
- AI coding assistants (GitHub Copilot)
- Cloud development tools
- Linting, formatting, and debugging
🏗️ Project Types Supported
React Frontend
uds init --type react
- Frontend Only: Pure React frontend without backend
- Express Backend: React + Express.js API server
- Next.js Full-stack: Next.js with built-in API routes
- Firebase Functions: React + Firebase serverless functions
- Serverless: React + Vercel/Netlify Edge functions
Choose backend during setup or use flags:
uds init --type react --backend express
uds init --type react --backend nextjs
uds init --type react --backend firebase
uds init --type react --backend serverless
uds init --type react --backend none
uds init --type react --ai-context
Node.js Backend
uds init --type node
- Express.js server setup
- Development with nodemon
- Production PM2 configuration
- Database integration helpers
Full-Stack Applications
uds init --type full-stack
- React frontend + Node.js backend
- Concurrent development servers
- Shared TypeScript types
- Docker Compose orchestration
Python Applications
uds init --type python
- Complete Python project structure with
main.py
- Optional ML Libraries: Prompted to install NumPy, Pandas, Scikit-learn, Jupyter, etc.
- Smart ML Setup: Conda installs ML libraries for better performance
- Automatic conda environment creation (if conda available)
- Virtual environment setup (fallback)
requirements.txt
with ML or standard packages
.env
file for environment variables
- Python-specific
.gitignore
activate_env.sh
script for easy activation
- ML starter code with sample dataset and basic workflow
🧠 AI Context & Shared Memory
Universal Dev Environment can generate a comprehensive .ai/
folder that provides shared context between Claude, Gemini, and GitHub Copilot.
Enable AI Context
uds init --ai-context
uds init --type python --ml --ai-context
What the .ai/ Folder Provides:
📁 .ai/ Folder Structure:
.ai/
├── context.md # Project overview and architecture
├── recent-work.md # Development sessions and progress
└── preferences.md # Coding patterns and project preferences
📋 context.md - Core project information:
- Project overview, tech stack, container strategy
- Quick start prompts for AI conversations
- Technical setup, file structure, development commands
- AI tool persistence instructions
📅 recent-work.md - Development tracking:
- Recent development sessions and completed work
- Current focus and next steps
- Development log template for ongoing updates
🎨 preferences.md - Coding standards:
- Code style preferences and patterns
- Language-specific examples and best practices
- File organization and naming conventions
- Development workflow and deployment strategy
AI Tool Persistence
Automatic configuration for maintaining settings across container rebuilds:
Claude CLI: ~/.config/claude-code/settings.local.json
Gemini CLI: ~/.config/gemini/settings.json
and state_snapshot.xml
GitHub Copilot: Automatic persistence via VS Code
Usage Examples
Instead of re-explaining your project:
Before: "This is a React app with Express backend using Docker Compose..."
After: "Based on .ai/context.md, help me implement the user authentication system"
For ongoing development context:
"Check .ai/recent-work.md for what I completed yesterday, then help me continue with the next API endpoint"
For consistent code patterns:
"Following the patterns in .ai/preferences.md, create a new React component for the user dashboard"
DevContainer Integration
When --ai-context
is used:
- Volume mounts for Claude/Gemini settings are automatically configured
- AI context files available at
/workspace/.ai/
- Container displays persistence status on startup
- Environment variables set:
AI_CONTEXT_DIR=/workspace/.ai
🪟 Windows-Specific Setup
Universal Dev Environment now has full Windows support via PowerShell:
Prerequisites
- Windows 10/11 with PowerShell 5.1+ (included by default)
- Administrator privileges (required for installation)
- Internet connection for downloading tools
What Gets Installed on Windows
- Chocolatey - Package manager for Windows
- Node.js & npm - JavaScript runtime and package manager
- Git - Version control system
- Visual Studio Code - Code editor
- GitHub Desktop - Git GUI (optional)
- Docker Desktop - Container platform (optional, can skip with
-SkipDocker
)
- Windows Terminal - Modern terminal application
- GitHub CLI - Command line interface for GitHub
- Claude CLI - AI-powered development assistant
- Gemini CLI - Google's AI development tool
Windows Installation Options
Option 1: One-line PowerShell (Recommended)
# Run PowerShell as Administrator, then:
iwr -useb https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat | iex
Option 2: Manual Download
# Download the installer
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat" -OutFile "install-windows.bat"
# Right-click and "Run as Administrator"
Option 3: Direct PowerShell Script
# Download and run PowerShell script directly
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/nhangen/universal-dev-env/main/universal-setup.ps1" -OutFile "universal-setup.ps1"
powershell -ExecutionPolicy Bypass -File "universal-setup.ps1"
Windows Command Options
# Skip Docker Desktop installation
.\universal-setup.ps1 -SkipDocker
# Skip Chocolatey installation (if you already have it)
.\universal-setup.ps1 -SkipChocolatey
# Show help
.\universal-setup.ps1 -Help
🐳 Docker Usage
Development Container
docker build --target development -t my-dev-env .
docker run -it -p 3000:3000 -v $(pwd):/workspace my-dev-env
Production Container
docker build --target production -t my-app .
docker run -p 3000:3000 my-app
DevContainer (VS Code)
- Open project in VS Code
- Install "Dev Containers" extension
- Click "Reopen in Container"
- Start coding! 🎉
💾 Caching
Universal Dev Environment includes intelligent caching to speed up repeated installations:
Cache Features
- 📦 Download Caching: Template files and binaries cached for 30 days
- 🔄 Automatic Fallback: Falls back to cache if downloads fail
- 🆕 Version-Aware: Automatically updates cache when new versions are released
- 🗂️ Organized Storage: Cache stored in
~/.universal-dev-env/cache
- 🧹 Auto-Cleanup: Removes old version caches automatically
- 📊 Cache Management: Built-in tools to monitor and clear cache
Cache Commands
uds cache --info
uds cache --clear
uds init --no-cache
uds install --no-cache
Cache Location
~/.universal-dev-env/cache/
🔧 Configuration
Environment Variables
export PLAYWRIGHT_BROWSERS_PATH=/usr/bin
export PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium
export NODE_ENV=development
Custom Configuration
Create .universal-dev-env.json
in your project root:
{
"projectType": "react",
"baseImage": "debian",
"features": {
"aiTools": true,
"cloudTools": true,
"playwright": false,
"multiStage": true
},
"ports": [3000, 3001, 8000],
"customExtensions": [
"custom.extension-id"
]
}
🏢 Enterprise Features
Security
- Non-root container execution
- Minimal attack surface with Alpine Linux
- Security scanning integration
- Secret management best practices
Scalability
- Multi-stage builds for smaller images
- Kubernetes deployment templates
- Load balancer configurations
- Auto-scaling policies
CI/CD Integration
- GitHub Actions workflows
- GitLab CI templates
- Docker registry automation
- Environment promotion pipelines
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
git clone https://github.com/nhangen/universal-dev-env.git
cd universal-dev-env
npm install
npm run dev
Running Tests
npm test
Building Extension
cd vscode-extension
npm run compile
npm run package
📚 Documentation
🗺️ Roadmap
🔄 Troubleshooting & Management
Common Scenarios
🍎 macOS: "Unsupported OS" Error
If you get "Unsupported OS" when running ./universal-setup.sh
:
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/universal-setup.sh -o universal-setup.sh
chmod +x universal-setup.sh
./universal-setup.sh
🔄 Package Installed but Shell Script Failed
If npm install -g @nhangen/universal-dev-env
worked but ./universal-setup.sh
failed:
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/universal-setup.sh -o universal-setup.sh
chmod +x universal-setup.sh
./universal-setup.sh
uds install
Restart/Retry Setup
If setup fails or you want to start fresh:
Option 1: Clear cache and retry
uds cache --clear
uds init --no-cache
Option 2: Manual restart
rm -rf your-project-name
mkdir your-project-name
cd your-project-name
uds init
Option 3: Re-run shell script
chmod +x universal-setup.sh
./universal-setup.sh
Uninstall Guide
One-Command Uninstall:
uds uninstall
uds uninstall --yes
Manual NPM Package Removal:
npm uninstall -g @nhangen/universal-dev-env
Remove Generated Files:
rm -rf ~/.universal-dev-env
rm -f ~/bin/dev-start
rm -rf ~/.config/claude-code
rm -rf ~/.config/gh
rm -rf ~/.config/gemini
Remove Installed Tools (Optional):
macOS:
brew uninstall gh google-cloud-sdk
brew uninstall --cask docker
Windows:
# Remove via Chocolatey (optional)
choco uninstall github-cli google-cloud-sdk docker-desktop
Linux:
sudo apt-get remove gh google-cloud-sdk
sudo apk del github-cli
Clean Reset:
npm uninstall -g @nhangen/universal-dev-env
rm -rf ~/.universal-dev-env
rm -rf ~/.config/claude-code ~/.config/gh ~/.config/gemini
rm -f ~/bin/dev-start
npm install -g @nhangen/universal-dev-env
uds init --no-cache
🐛 Known Issues
- Playwright may require additional setup on some Alpine variants
- GitHub CLI authentication needs manual setup in containers
- Some VS Code extensions may not work in web-based environments
- macOS: First-time Homebrew installation may require manual PATH setup
- Windows: Some antivirus software may flag PowerShell script downloads
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Inspired by the DevContainer specification
- Built with the amazing VS Code Extension API
- Powered by Docker and modern container practices
- Community feedback and contributions
📞 Support
Made with ❤️ by nhangen
Empowering developers with universal, AI-enhanced environments