I have been using this little tool for a bit because I don't always get to have docker in some of the specialized environments or platforms I build for. I decided to polish it up and release it.
The Problem: Development Environment Chaos
Modern full-stack development is surprisingly complex:
- Multiple terminals: Frontend on port 3000, API on 4000, docs on 8080
- Runtime management: Node 18 for one project, Node 20 for another
- Proxy configuration: Manually configuring nginx or setting up CORS
- Environment isolation: Global package pollution and version conflicts
- Process orchestration: Remembering which services to start in which order
This complexity multiplies when you're working on multiple projects. Context switching becomes painful, and onboarding new developers means sharing a 50-step setup guide.
What is Realm?
Realm is a single CLI tool that replaces your entire development environment setup. It combines:
- Virtualenv-like environments for complete project isolation
- Built-in process manager (like Foreman) with intelligent routing
- Multi-runtime support (Bun, Node.js, Python, Deno, Go)
- Zero-config proxy server that routes requests to your services
- Project templates to eliminate boilerplate
- One-command deployment with Docker generation
All written in Rust for speed and reliability.
Installation
Getting started is simple:
# Using cargo
cargo install realmenv
# Or using the install script
curl -sSfL https://github.com/wess/realm/releases/latest/download/install.sh | bash
Pre-built binaries are available for macOS (Intel & Apple Silicon), Linux (x64 & ARM64), and Windows.
Quick Start: From Zero to Running in 30 Seconds
The interactive init experience makes setup effortless:
# Initialize with prompts
realm init
# Follow the prompts:
# → Project name: myapp
# → Select runtime: Bun (latest)
# → Use a template?: React + Express
# → Done!
cd myapp
source .venv/bin/activate
realm start
# Visit http://localhost:8000 - it just works!
That's it. No webpack config, no proxy setup, no port juggling. Everything runs on http://localhost:8000 with intelligent routing.
The Magic: How Realm Works
Realm acts as a single command center for your entire development environment:
┌─────────────────────────────────────────────┐
│ Realm CLI                                   │
├─────────────────────────────────────────────┤
│ Proxy Server (port 8000)                    │
│ ├── Route: /api/* → backend:4001            │
│ ├── Route: / → frontend:4000                │
│ └── Route: /health → built-in               │
├─────────────────────────────────────────────┤
│ Process Manager                             │
│ ├── frontend: bun run dev                   │
│ ├── backend: bun run server                 │
│ └── docs: bun run docs                      │
├─────────────────────────────────────────────┤
│ Runtime Manager                             │
│ ├── Bun 1.0.1 (per project)                 │
│ └── Node.js 20.5.0 (per project)            │
├─────────────────────────────────────────────┤
│ Environment Manager                         │
│ ├── .env file loading                       │
│ └── Variable isolation                      │
└─────────────────────────────────────────────┘
1. Smart Proxy Routing
Instead of manually configuring nginx or dealing with CORS issues, Realm's built-in proxy handles everything:
# realm.yml
proxy_port: 8000
processes:
  frontend:
    command: "bun run dev"
    port: 4000
    routes: ["/", "/assets/*"]
  backend:
    command: "bun run server"
    port: 4001
    routes: ["/api/*", "/health"]
The proxy automatically:
- Routes requests based on URL patterns
- Handles WebSocket connections (for HMR, live reload)
- Adds CORS headers for development
- Provides health checks
2. Process Management
Like Foreman or Overmind, but integrated with routing:
realm start  # Start everything
realm stop   # Stop everything
All process output is aggregated with colored prefixes, so you can see what's happening across your entire stack.
3. Runtime Isolation
Similar to virtualenv for Python or nvm for Node, but project-scoped:
# Use latest Bun
realm init myapp --runtime=bun
# Use specific Node.js version
realm init myapp --runtime=node@20
# Use Python with complete isolation
realm init myapp --runtime=python@3.12
Runtimes are downloaded and cached per-project. No more global version conflicts!
Built-in Templates
Realm includes templates for common full-stack patterns:
- react-express: React + Express (Bun/Node)
- react-fastapi: React + FastAPI (Python)
- svelte-fastify: SvelteKit + Fastify
- vue-express: Vue 3 + Express
- nextjs: Next.js 14 full-stack app
# Create from template
realm init myapp --template=react-fastapi --runtime=python@3.12
cd myapp
source .venv/bin/activate
pip install -r backend/requirements.txt
realm start
You can also create your own templates with custom variables:
# template.yaml
name: my-stack
description: My custom template
variables:
  - name: project_name
    prompt: "Project name"
    default: "{{directory_name}}"
  - name: api_port
    prompt: "API port"
    default: "3001"
Production: One Command to Deploy
When you're ready to deploy, Realm generates production-ready Docker artifacts:
realm bundle
This creates a dist/ folder with:
- Dockerfile: Multi-stage build for all processes
- docker-compose.yml: Complete service orchestration
- nginx.conf: Reverse proxy with your routing rules
- deploy.sh: One-command deployment script
No more wrestling with Docker or deployment configurations.
Real-World Comparison
The Old Way 🔥
# Terminal 1
cd frontend && npm run dev
# Terminal 2
cd backend && npm run server
# Terminal 3
nginx -c nginx.conf
# Terminal 4
export NODE_ENV=development
export API_URL=http://localhost:4001
source .env
# Remember all ports, manage processes manually...
The Realm Way ✨
realm init myapp --template=react-express
source .venv/bin/activate
realm start
# Everything runs on http://localhost:8000
When Should You Use Realm?
Realm shines when you're:
- Building full-stack applications with separate frontend/backend
- Working on multiple projects that need different runtime versions
- Onboarding developers and want a simple setup experience
- Tired of managing terminals and proxy configurations
- Want fast deployment without Docker expertise
Community Runtimes
Beyond the built-in support for Bun, Node, and Python, Realm supports custom runtimes through YAML configuration:
# Add Deno support
curl -o ~/.realm/runtimes-config/deno.yaml \
  https://raw.githubusercontent.com/wess/realm/main/runtimes/deno.yaml
realm init --runtime=deno
# Add Go support
curl -o ~/.realm/runtimes-config/go.yaml \
  https://raw.githubusercontent.com/wess/realm/main/runtimes/go.yaml
realm init --runtime=go
Check out the community runtimes for more options.
Under the Hood
Realm is built in Rust with a modular architecture:
- CLI layer: Command-line interface with clap
- Config parsing: YAML configuration with serde
- Runtime management: Version downloads and caching
- Process management: Lifecycle orchestration
- Proxy server: HTTP routing with tokio
- Template engine: Tera-based scaffolding
- Bundle generator: Docker artifact creation
The entire tool is focused on developer experience: fast startup, clear error messages, and zero configuration when possible.
Feature Comparison
| Feature | Realm | Docker Compose | Foreman | Create-React-App | 
|---|---|---|---|---|
| Process Management | ✅ | ✅ | ✅ | ❌ | 
| Built-in Proxy | ✅ | ❌ | ❌ | ❌ | 
| Runtime Isolation | ✅ | ✅ | ❌ | ❌ | 
| Project Templates | ✅ | ❌ | ❌ | ✅ | 
| Production Deploy | ✅ | ✅ | ❌ | ✅ | 
| Zero Config | ✅ | ❌ | ❌ | ✅ | 
| Multi-Runtime | ✅ | ✅ | ❌ | ❌ | 
Realm combines the best aspects of these tools into a cohesive development environment.
Getting Started
Ready to simplify your development workflow?
- 
Install Realm: cargo install realmenv
- 
Initialize a project: realm init
- 
Start developing: realm start
Check out the GitHub repository for documentation, examples, and to contribute.
Conclusion
Modern full-stack development doesn't have to be complex. With Realm, you get:
- One command to start your entire stack
- Automatic routing without proxy configuration
- Runtime isolation without global pollution
- Templates to eliminate boilerplate
- Deployment generation without Docker expertise
If you've ever felt frustrated managing multiple terminals, runtime versions, or proxy configurations, give Realm a try. It might just change how you approach development environments.
Have you tried Realm? What's your biggest pain point in full-stack development? Let me know in the comments!
Links:
 
 
              
 
    
Top comments (0)