DDrovr — A native macOS interface for DDEV
DDrovr
DDEV // Desktop interface // macOS
Y 00000 §00 Index
↓ Downloadv1.0.3
[00]
Schematic 00 — DDrovr.app
1.0.3 stable
Rev 2026.09
Fig. 00 — Headline / 3 lines

DDEV.← ENGINE
Without living
in Terminal.

00.1 — Description

DDrovr gives DDEV a native macOS interface for managing local development environments—projects, services, logs, URLs, debugging and everything in between.

S.01
Native macOS
S.02
Powered by DDEV
S.03
Built with SwiftUI
S.04
Local development
Fig. 01 — Project detail view / craft-cms
Actual screenshot
6 annotations
A1 Project state
running · stopped · paused
A2 Engine
DDEV version · Docker provider
DDrovr showing the craft-cms project: primary URL, Craft CMS tools, snapshots and DDEV commands
A3 Quick actions
stop · folder · terminal · logs
A4 Primary URL
copy · open · control panel
A5 Framework tools
auto-detected per project
A6 DDEV commands
custom commands, one click
[01]
Screenshots
{{ shot.pos }}
{{ shot.n }} — {{ shot.tag }}

{{ shot.caption }}

Project overview Project detail Live logs Framework tools Settings New project Menu bar
[01.1]
The idea
Sys.map — DDrovr ⟶ DDEV

DDEV is already powerful. DDrovr makes it visible.

Note 01.1

DDrovr doesn't replace DDEV. It sits on top of the workflow you already have—same projects, same config, same commands—and gives the things you do every day a visual interface.

Start a project, open its URL, check which PHP it's on, find out why it stopped. No new stack to learn.

Fig. 02 — Control path
N.01OPERATOR
Developer
clicks · shortcuts · ⌘K
INTENT
N.02INTERFACE
DDrovr
SwiftUI · reads state · issues commands
SHELL EXEC
ddev *
N.03ENGINE
DDEV
CLI · config · orchestration
DOCKER
N.04TARGET
Local project
containers · files · database
[02]
Project control
Live — try the controls

Everything running.
Everything visible.

Every project, its state and its stack in one view. Actions are one click away—and each maps to the DDEV command you'd otherwise type.

Projects {{ dash.total }}
Running {{ dash.running }}
Starting {{ dash.starting }}
Stopped {{ dash.stopped }}
Failed {{ dash.failed }}
{{ p.label }} {{ p.code }}
{{ p.name }}
{{ p.type }}
{{ m.k }}{{ m.v }}
PRIMARY URL{{ p.url }}
Waiting for containers…web · db
✕ web: port 443 already in use
EQUIVALENT CLI ▸ {{ lastCmd }}
[03]
See the stack
Source: .ddev/config.yaml

One project.
Every part, labelled.

Know what a project is running without digging through config files or commands. DDrovr puts the important parts of each environment where you can actually see them.

PROJECT
acme-craft
type: craftcms
ddev describe
N.01 RUNTIME
PHP 8.3
php-fpm · web container
php_version: "8.3"
N.02 DATABASE
MariaDB 10.11
db container · :3306
database: mariadb:10.11
N.03 TOOLING
Node 22
npm · in web container
nodejs_version: "22"
N.04 WEB SERVER
NGINX
:80 · :443 via router
webserver_type: nginx-fpm
N.05 DEBUGGER
Xdebug off
toggle without restart
xdebug_enabled: false
[04]
When something goes wrong
Diagnostic mode

Failed doesn't have to mean mysterious.

DDrovr surfaces failures and degraded states as they happen—so you can see what broke, stop a partially running project, and retry without parsing a wall of CLI output.

Fig. 04 — Start sequence / failure path
RETRY LOOP · ddev stop → ddev start
D.01 — SEE IT
Slow starts are flagged as slow, not left spinning.
D.02 — UNDERSTAND IT
The failing service and the relevant log line, surfaced first.
D.03 — RECOVER
Stop what's half-running, then retry clean.
legacy-drupal {{ fail.label }} T+ {{ fail.timer }}
{{ ln.mark }}{{ ln.text }}
STOP PARTIAL RUN VIEW FULL LOG ↺ TRY AGAIN
[05]
Built around DDEV
CLI ≡ GUI

Not another local dev stack.
The interface for the one you already use.

R.01
DDrovr shells out to the DDEV CLI. It never replaces it.
R.02
Existing projects remain DDEV projects. Nothing to migrate.
R.03
Every command still works. Use either, switch any time.
VIEW A — TERMINAL~/Sites/acme-craft
$ {{ term.cmd }}
{{ t.t }}
SAME
SYSTEM
VIEW B — DDROVRacme-craft
PROJECT / CRAFT CMS 5
acme-craft
{{ gui.label }}
https://acme-craft.ddev.site
{{ gui.btn }} runs
{{ gui.runs }}
DDEV CLI
▸ .ddev/config.yaml
▸ Docker provider
▸ acme-craft containers
Table 05 — Two views, one command set
CLIDDROVRWHAT IT DOES
$ ddev start≡STARTBoot the project's containers
$ ddev stop≡STOPStop without touching data
$ ddev launch≡OPEN SITEOpen the primary URL
$ ddev ssh≡TERMINALShell into the web container
$ ddev describe≡STACKServices, versions, ports
$ ddev logs≡LOGSInspect service output
[06]
Designed for real project collections
Interactive — ⌘K to search

Twelve projects
or a hundred.

An indexed registry of every DDEV project on your machine—any CMS, any framework. Search, filter by type, stop everything at once.

INDEX / TYPE{{ reg.total }}
/ ⌘K
#STATUSNAMETYPEPHPDATABASEURL
{{ r.idx }} {{ r.label }} {{ r.name }} {{ r.type }} {{ r.php }} {{ r.db }} {{ r.url }}
No projects match "{{ query }}".
SHOWING {{ reg.shown }} / {{ reg.total }}{{ reg.runningLabel }}
[07]
Native where it matters
3 principles
P.01PLATFORM
01
Native macOS

Built as a SwiftUI desktop application rather than another browser-based management panel.

▪ SWIFTUI▪ macOS KEYBOARD SHORTCUTS▪ NO BROWSER TAB REQUIRED
P.02WORKFLOW
02
Your existing workflow

DDrovr works with DDEV rather than creating a proprietary environment around it.

▪ SHELLS OUT TO DDEV CLI▪ READS .DDEV/ CONFIG▪ NO LOCK-IN
P.03ACCESS
03
Fast access

Projects, URLs, terminal access, folders, services and common actions are always close at hand.

▪ ⌘K PROJECT SEARCH▪ ONE-CLICK URLS▪ TERMINAL · FOLDER · LOGS
[08]
Download
v1.0.3 · stable

Give DDEV
a desktop.

Keep the workflow you already trust. Lose some of the command-line overhead.

↓ DOWNLOAD DDROVRv1.0.3 · .zip
REQ.01
macOS
14 Sonoma or later
REQ.02
DDEV REQUIRED
v1.24 or later
REQ.03
NATIVE SWIFTUI
Apple silicon + Intel
REQ.04
DOCKER PROVIDER
OrbStack, Docker Desktop, Colima