Skip to content

VDES (Virtualized Development Environment System) is a modular, extensible, 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, bare terminal + SSH, and/or AI CLI tools.

License

Notifications You must be signed in to change notification settings

dderyldowney/vde-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

707 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Virtualized Development Environment System Logo

VDE - Your Virtual Development Playground! 🎉

CI Status

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


Hey There! 👋

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.


Quick Links (Your Cheat Sheet!) 📇

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 RequirementsQuick Start
SSH & Agent Forwarding SSH ConfigurationVM CommunicationSSH Troubleshooting
Core Features Available ScriptsPredefined VM TypesCommand Reference
Configuration Extending VDEDirectory Structure
Development VSCode Remote-SSHDevelopment Workflows
Contributing Contributing GuideStyle GuideTesting Guide
Reference API ReferenceUser ModelArchitectureBest Practices
Support TroubleshootingRebuild Guidelines

Overview (The Good Stuff!) ✨

VDE provides isolated development environments for multiple programming languages and services, all accessible via SSH. Each environment has:

  • Consistent user setup (devuser with 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

Key Features (Why You'll Love It)

  • 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

Quick Start (You're 3 Commands Away!) 🚀

# 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 ~/workspace

And just like that... you're a Go developer! 🎊

Next Steps:


SSH Agent Forwarding & VM Communication (The Magic Sauce!) ✨

VDE includes automatic SSH agent forwarding, enabling seamless communication between VMs and with external services. It's like magic, but better!

What This Means (In Plain English)

  • 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

Example: VM-to-VM Communication

# 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

Example: VM-to-Host Communication

# 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

How It Works

  • 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.


Documentation (We've Got You Covered!) 📚

Getting Started (Your Journey Begins Here!) 🌟

Document Description
Requirements System requirements and prerequisites
Quick Start Get up and running in minutes — let's go!

Core Features (The Good Stuff!) 🌟

Document Description
Available Scripts Overview of all VDE scripts
Predefined VM Types All available languages and services
Command Reference Complete command reference

Configuration (Make It Yours!) 🔧

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

Development (Build Cool Things!) 💻

Document Description
VSCode Remote-SSH Using VSCode with VDE — code in comfort!
Development Workflows Example development scenarios

Reference (The Nitty Gritty) 📖

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

Support

Document Description
Troubleshooting Common issues and solutions

Example Workflows (Build Cool Things!) 🏗️

Python API with PostgreSQL

vde create python
vde create postgres
vde start python postgres
ssh vde-python
cd ~/workspace
pip install fastapi uvicorn psycopg2-binary

Microservices Architecture (Your Distributed System!) 🌐

# 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

Project Structure

$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.


Support (We've Got Your Back!) 🆘

Getting Help

# Built-in help
vde help

# List available VMs
vde list

Common Issues

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

Appendix: Technical Deep Dives 🤓

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:

  1. Technical Deep Dive - Complete technical deep-dive of the VDE system architecture and components. ← Back to README

  2. VDE PARSER Technical Deep Dive - Focused technical analysis of the VDE natural language parser. ← Back to README


License (Legal Stuff, But Still Important) ⚖️

This VDE system is provided as-is for development purposes.

About

VDES (Virtualized Development Environment System) is a modular, extensible, 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, bare terminal + SSH, and/or AI CLI tools.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •