
Security News
PEP 810 Proposes Explicit Lazy Imports for Python 3.15
An opt-in lazy import keyword aims to speed up Python startups, especially CLIs, without the ecosystem-wide risks that sank PEP 690.
@nhangen/universal-dev-env
Advanced tools
🚀 One-click setup for modern development environments with AI tools, cloud CLIs, and optimized containers
curl -fsSL https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install.sh | bash
(Unix/Linux/macOS)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):
# Download and run the batch installer
curl -O https://raw.githubusercontent.com/nhangen/universal-dev-env/main/install-windows.bat
# Right-click install-windows.bat and "Run as Administrator"
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
# Coming soon to VS Code Marketplace
# For now, use the npm package method above
Setup failed? → Jump to Troubleshooting Guide
Common fixes:
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
chmod +x universal-setup.sh
uds cache --clear
rm -rf project-name && uds init --no-cache
# Create new project directory
mkdir my-awesome-project
cd my-awesome-project
uds init
# OR initialize in current directory (no subdirectory created)
cd my-existing-directory
uds init --here
# OR initialize Python ML project with one command
uds init --type python --ml --here
cd existing-project
uds setup
uds init # Initialize project with dev environment
uds init --here # Initialize in current directory (no subdirectory)
uds init --type python --ml # Initialize Python project with ML libraries
uds init --ai-context # Initialize with AI context file for Claude/Gemini/Copilot
uds init --no-cache # Initialize without caching (fresh downloads)
uds setup # Install development tools in existing project
uds update # Update to latest version
uds uninstall # Completely remove Universal Dev Environment
uds cache --info # Show cache information
uds cache --clear # Clear cached files
universal-dev-setup # Main setup script (direct)
# AI Agent Configuration
uds-ai-setup configure # 🤖 Configure AI agent roles for Claude/Gemini
uds-ai-setup role-info # Show available agent roles
uds-ai-setup add-role # Add custom AI agent role
uds-ai-setup generate-handoff --role <role> # Generate session handoff
claude
) - AI-powered coding assistantgemini
) - Google's AI development toolgh
) - GitHub integration and automationgcloud
) - Cloud deployment and managementbrew
)choco
)apt
, yum
, apk
)uds init --type react
Choose backend during setup or use flags:
uds init --type react --backend express # React + Express
uds init --type react --backend nextjs # Next.js full-stack
uds init --type react --backend firebase # React + Firebase
uds init --type react --backend serverless # React + Vercel/Netlify
uds init --type react --backend none # Frontend only
# Add AI context for shared memory between Claude/Gemini/Copilot
uds init --type react --ai-context # Generates .ai/ folder
uds init --type node
uds init --type full-stack
uds init --type python
main.py
requirements.txt
with ML or standard packages.env
file for environment variables.gitignore
activate_env.sh
script for easy activationConfigure AI agent roles for your project to enable structured collaboration between Claude, Gemini, and other AI assistants:
# Interactive setup - configure which roles are available
uds-ai-setup configure
# View configured roles
uds-ai-setup role-info
# Add custom role for project-specific needs
uds-ai-setup add-role
Available AI Agent Roles:
Enable seamless agent-to-agent collaboration:
# Generate handoff when ending your session
uds-ai-setup generate-handoff --role your-role --session-summary "what you accomplished"
Generated Files:
AI_AGENT_ONBOARDING.md
- Instructions for new AI agents.ai-agent-config.json
- Role configuration and project contextSESSION_HANDOFF.md
- Current session status and next stepsUniversal Dev Environment can generate a comprehensive .ai/
folder that provides shared context between Claude, Gemini, and GitHub Copilot.
uds init --ai-context # Generate .ai/ folder with context files
uds init --type python --ml --ai-context # ML project with AI context
📁 .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:
📅 recent-work.md - Development tracking:
🎨 preferences.md - Coding standards:
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
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"
When --ai-context
is used:
/workspace/.ai/
AI_CONTEXT_DIR=/workspace/.ai
Universal Dev Environment now has full Windows support via PowerShell:
-SkipDocker
)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"
# 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
# Build and run development environment
docker build --target development -t my-dev-env .
docker run -it -p 3000:3000 -v $(pwd):/workspace my-dev-env
# Build optimized production image
docker build --target production -t my-app .
docker run -p 3000:3000 my-app
Universal Dev Environment includes intelligent caching to speed up repeated installations:
~/.universal-dev-env/cache
# Show cache information
uds cache --info
# Clear all cached files
uds cache --clear
# Initialize without using cache
uds init --no-cache
# Install without using cache
uds install --no-cache
# Default cache directory
~/.universal-dev-env/cache/
# Cache expires after 30 days OR on version update
# Automatic cleanup of old versions and failed downloads
# Version-aware cache keys ensure fresh content on updates
# Playwright configuration
export PLAYWRIGHT_BROWSERS_PATH=/usr/bin
export PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium
# Development mode
export NODE_ENV=development
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"
]
}
We welcome contributions! Please see our Contributing Guide for details.
git clone https://github.com/nhangen/universal-dev-env.git
cd universal-dev-env
npm install
npm run dev
npm test
cd vscode-extension
npm run compile
npm run package
🍎 macOS: "Unsupported OS" Error
If you get "Unsupported OS" when running ./universal-setup.sh
:
# The shell script needs to be updated - download latest version
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:
# Option 1: Update to latest script
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
# Option 2: Use Node.js CLI instead (skip shell script)
uds install # This will install the development tools via Node.js
If setup fails or you want to start fresh:
Option 1: Clear cache and retry
# Clear all cached files and retry
uds cache --clear
uds init --no-cache
Option 2: Manual restart
# Remove project directory and start over
rm -rf your-project-name
mkdir your-project-name
cd your-project-name
uds init
Option 3: Re-run shell script
# If the shell script failed, try again
chmod +x universal-setup.sh
./universal-setup.sh
One-Command Uninstall:
uds uninstall # Interactive uninstall with options
# OR
uds uninstall --yes # Skip confirmations
Manual NPM Package Removal:
npm uninstall -g @nhangen/universal-dev-env
Remove Generated Files:
# Remove cache directory
rm -rf ~/.universal-dev-env
# Remove development scripts (optional)
rm -f ~/bin/dev-start
# Remove configuration directories (optional - will lose settings)
rm -rf ~/.config/claude-code
rm -rf ~/.config/gh
rm -rf ~/.config/gemini
Remove Installed Tools (Optional):
macOS:
# Remove via Homebrew (only if you want to completely remove these tools)
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:
# Remove via package manager (optional)
sudo apt-get remove gh google-cloud-sdk # Debian/Ubuntu
# or
sudo apk del github-cli # Alpine
Clean Reset:
# Complete clean slate (removes all traces)
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
# Then reinstall fresh
npm install -g @nhangen/universal-dev-env
uds init --no-cache
This project is licensed under the MIT License - see the LICENSE file for details.
FAQs
Universal development environment setup for modern web projects
The npm package @nhangen/universal-dev-env receives a total of 22 weekly downloads. As such, @nhangen/universal-dev-env popularity was classified as not popular.
We found that @nhangen/universal-dev-env demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
An opt-in lazy import keyword aims to speed up Python startups, especially CLIs, without the ecosystem-wide risks that sank PEP 690.
Security News
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.