A modular, template-based Docker development environment supporting 19+ programming languages and 7+ services, all accessible via SSH with consistent user configuration. Designed for daily development work with VSCode Remote-SSH.
Shell Support: zsh 5.0+, bash 4.0+, bash 3.x (with fallbacks) — See Requirements
Welcome to VDE — your new best friend for development environments. Whether you're a total beginner or a seasoned pro, whether you code in Python or Rust or something entirely new — VDE is here to make your life easier. You're going to love it here! ✨
🎉 New to VDE? Start here: Why Use VDE? — Discover how VDE transforms your development workflow.
| Section | Description |
|---|---|
| 🎉 Why Use VDE? | Why Use VDE? - Learn what VDE can do for you |
| 📘 User Guide | USER_GUIDE.md - Step-by-step guide for new users |
| Getting Started | Requirements • Quick Start |
| SSH & Agent Forwarding | SSH Configuration • VM Communication • SSH Troubleshooting |
| Core Features | Available Scripts • Predefined VM Types • Command Reference |
| Configuration | Extending VDE • Directory Structure |
| Development | VSCode Remote-SSH • Development Workflows |
| Contributing | Contributing Guide • Style Guide • Testing Guide |
| Reference | API Reference • User Model • Architecture • Best Practices |
| Support | Troubleshooting • Rebuild Guidelines |
VDE provides isolated development environments for multiple programming languages and services, all accessible via SSH. Each environment has:
- Consistent user setup (
devuserwith zsh, neovim, oh-my-zsh) - SSH key-based access on auto-allocated ports
- Persistent workspace mounted from your host
- Shared network for inter-container communication
- 19+ Language VMs: Python, Rust, Go, Java, JavaScript, C#, Ruby, and more — all waiting for you!
- 7+ Service VMs: PostgreSQL, Redis, MongoDB, Nginx, MySQL, RabbitMQ, CouchDB — ready when you are
- Template-based: Add new languages/services without code changes — it just works!
- VSCode Ready: Full IDE support via Remote-SSH — code in comfort
- SSH Agent Forwarding: VM-to-VM and VM-to-Host communication using your host's SSH keys — like magic!
- Automatic SSH Setup: VDE handles SSH agent, keys, and configuration automatically — zero manual setup
# 1. Navigate to your dev directory
cd ~/dev
# 2. List all predefined VM types
vde list
# 3. Create a new language VM
vde create go
# 4. Start the VM
vde start go
# 5. Connect via SSH
ssh vde-go
# 6. Start working
cd ~/workspaceAnd just like that... you're a Go developer! 🎊
Next Steps:
- 📘 Read the USER_GUIDE.md for a complete step-by-step walkthrough (it's really friendly!)
- Read the Quick Start guide for detailed setup
- See Command Reference for all available commands
VDE includes automatic SSH agent forwarding, enabling seamless communication between VMs and with external services. It's like magic, but better!
- VM → VM: SSH from one VM to another using your host's SSH keys — no copying required!
- VM → Host: Execute commands on your host from within a VM — super convenient!
- VM → External: Use your GitHub/GitLab keys from within any VM — your credentials, wherever you need them!
- Automatic Setup: No manual configuration required — VDE handles it all for you
# From your host
ssh vde-go # Connect to Go VM
# From within Go VM
ssh vde-python # SSH to Python VM (uses your host keys!)
ssh vde-rust pwd # Check directory on Rust VM
scp vde-python:/data/file . # Copy file from Python VM
# Use Git with your credentials
git clone github.com:user/repo # Uses your GitHub SSH key# From within any VM
to-host ls ~/dev # List host's dev directory
to-host tail -f logs/app.log # View host's log files- VDE automatically starts SSH agent and loads your keys
- Your SSH keys never leave the host machine (security)
- VMs access keys via SSH agent socket forwarding
- Works with any SSH key type (ed25519, RSA, ECDSA, DSA)
- All your SSH keys are automatically detected and used
No manual setup required — VDE handles everything for you. Sit back and relax! ☕
See SSH Configuration for complete details.
| Document | Description |
|---|---|
| Requirements | System requirements and prerequisites |
| Quick Start | Get up and running in minutes — let's go! |
| Document | Description |
|---|---|
| Available Scripts | Overview of all VDE scripts |
| Predefined VM Types | All available languages and services |
| Command Reference | Complete command reference |
| Document | Description |
|---|---|
| Extending VDE | Add new languages and services |
| SSH Configuration & Agent Forwarding | SSH setup, agent forwarding, VM-to-VM communication |
| Directory Structure | Complete directory layout |
| Document | Description |
|---|---|
| VSCode Remote-SSH | Using VSCode with VDE — code in comfort! |
| Development Workflows | Example development scenarios |
| Document | Description |
|---|---|
| API Reference | Complete API reference for scripts and libraries |
| User Model & Naming Conventions | User account and naming standards |
| Architecture | Technical architecture details |
| Advanced Usage | Advanced techniques and patterns |
| Rebuild Guidelines | When and how to rebuild |
| Best Practices | Recommended practices |
| Document | Description |
|---|---|
| Troubleshooting | Common issues and solutions |
vde create python
vde create postgres
vde start python postgres
ssh vde-python
cd ~/workspace
pip install fastapi uvicorn psycopg2-binary# Create VMs for each service
vde create python # API Gateway
vde create go # Payment Service
vde create rust # Analytics
vde create postgres # Database
vde create redis # Cache
# Start all services
vde start python go rust postgres redis
# Services can communicate via SSH (VM-to-VM)
# From python VM:
ssh vde-postgres psql -U devuser # Connect to database
ssh vde-redis redis-cli # Connect to cache$HOME/dev/
├── configs/docker/ # VM configurations (auto-generated)
├── data/ # Service data persistence
├── docs/ # Documentation
├── env-files/ # Environment variables per VM
├── logs/ # Application logs
├── projects/ # Project source code
├── public-ssh-keys/ # SSH keys for containers
├── scripts/ # Management scripts
│ ├── lib/ # Shared libraries
│ └── templates/ # Docker Compose templates
└── README.md
See Directory Structure for complete details.
# Built-in help
vde help
# List available VMs
vde list| Issue | Solution |
|---|---|
| Port conflicts | See Troubleshooting → Port Conflicts |
| SSH connection issues | See SSH Configuration → Troubleshooting |
| SSH agent not working | See Troubleshooting → SSH Agent Issues |
| VM-to-VM SSH not working | See SSH Configuration → VM-to-VM |
| Container won't start | See Rebuild Guidelines |
| VSCode can't connect | See VSCode Remote-SSH |
Quick heads up! These documents go deep into the technical weeds. They're written for the fellow nerdy types (like VDE's creator!) who want to understand every nut and bolt of how VDE works under the hood.
But hey! Even if you're not a "nerdy type," you're more than welcome to follow along! It's not as scary as all that — we promise! 😉 These guides are comprehensive, detailed, and written for folks who love to understand how things work under the hood. You might just learn something cool!
For comprehensive technical documentation, see these in-depth guides:
-
Technical Deep Dive - Complete technical deep-dive of the VDE system architecture and components. ← Back to README
-
VDE PARSER Technical Deep Dive - Focused technical analysis of the VDE natural language parser. ← Back to README
This VDE system is provided as-is for development purposes.
