Architecture Overview
Warden runs three layers of services on your development machine:
flowchart TB
classDef default fill:#ffffff,stroke:#3f51b5,stroke-width:1.5px,color:#000000,font-weight:bold,font-size:12px;
subgraph DevSys ["Developer's System"]
direction TB
subgraph Host ["Host Services"]
direction LR
h1["Warden CLI"] ~~~ h2["Docker Engine"] ~~~ h3["Mutagen File Sync"] ~~~ h4["Trusted SSL Root CA"]
end
subgraph Global ["Global Docker Services — warden svc up"]
direction LR
g1["Traefik<br>Reverse Proxy + SSL"] ~~~ g2["DNSmasq"] ~~~ g3["Mailpit<br>Email Catcher"] ~~~ g4["SSH Tunnel"] ~~~ g5["phpMyAdmin"] ~~~ g6["Portainer"]
end
subgraph Project ["Per-Project Docker Services — warden env up"]
direction LR
p1["Nginx"] ~~~ p2["PHP-FPM"] ~~~ p3["MariaDB / MySQL"] ~~~ p4["Redis / Valkey"] ~~~ p5["Elasticsearch /<br>OpenSearch"] ~~~ p6["RabbitMQ"] ~~~ p7["Varnish"]
end
Host ~~~ Global ~~~ Project
end
style DevSys fill:#f5f5f5,stroke:#666666,stroke-width:1px,rx:8,ry:8
style Host fill:transparent,stroke:none
style Global fill:#fff3e0,stroke:#FF9800,stroke-width:1px,rx:8,ry:8
style Project fill:#e8f5e9,stroke:#4CAF50,stroke-width:1px,stroke-dasharray: 5 5,rx:8,ry:8
Host Services
The Warden CLI orchestrates everything via Docker Compose. On your host machine:
Warden CLI — Bash tool that manages all Docker services
Docker Engine — Runs all containers
Mutagen — Bi-directional file sync between host and containers (macOS)
Trusted SSL Root CA — Local certificate authority for
*.testHTTPS domains
Global Docker Services
Started once with warden svc up, shared across all projects:
| Service | Purpose | URL |
|---|---|---|
| Traefik | Reverse proxy + SSL termination | traefik.warden.test |
| DNSmasq | DNS resolver for *.test domains |
— |
| Mailpit | Email catcher (SMTP) | webmail.warden.test |
| SSH Tunnel | Database access for GUI clients (:2222) | — |
| phpMyAdmin | Database management UI | phpmyadmin.warden.test |
| Portainer | Container management UI (opt-in) | portainer.warden.test |
Per-Project Docker Services
Started per project with warden env up, each on an isolated Docker network:
| Service | Default | Toggle Flag |
|---|---|---|
| Nginx | All types | WARDEN_NGINX |
| PHP-FPM | All types | — |
| MariaDB / MySQL | All types | WARDEN_DB |
| Redis / Valkey | All types | WARDEN_REDIS / WARDEN_VALKEY |
| Elasticsearch / OpenSearch | Magento 2 | WARDEN_ELASTICSEARCH / WARDEN_OPENSEARCH |
| RabbitMQ | Magento 2 | WARDEN_RABBITMQ |
| Varnish | Magento 2 | WARDEN_VARNISH |
Additional Optional Services
These can be enabled per-project via flags in your .env file:
Blackfire / SPX — PHP profiling (
WARDEN_BLACKFIRE,WARDEN_PHP_SPX)Selenium — Browser automation testing with optional VNC (
WARDEN_SELENIUM)Allure — Test report dashboard (
WARDEN_ALLURE)PHP-Debug — Xdebug-enabled PHP-FPM (used via
warden debug)ElasticHQ — Elasticsearch management UI (
WARDEN_ELASTICHQ)