Zeltro › A DDEV alternative that shares services across every project

Looking for a DDEV alternative

DDEV gives each project its own service stack. Zeltro gives every project on the machine one shared set — one Postgres, one MariaDB, one Redis — plus Python alongside PHP and Node, and an AI agent that knows where it is.

DDEV is a good tool. It is mature, it is well documented, and for a single Drupal or WordPress site it does exactly what it says. If it is working for you, there is no reason in this page to switch.

People usually go looking for an alternative for one of three reasons: the per-project service stacks add up, the project is not PHP, or an AI agent is now doing the building and the setup needs to be somewhere it cannot wander off.

Reason one

Stacks add up

Each project brings its own database container, and they multiply with every new project.

Reason two

Not only PHP

The project is not PHP, and DDEV is at its best with PHP.

Reason three

An agent builds it

An AI agent now does the building, and the setup needs to be somewhere it cannot wander off.

One set of services, not one per project#

This is the structural difference. DDEV and Lando both give each project its own database container. That is clean isolation, and it is also seven Postgres containers when you have seven projects.

Zeltro runs one zeltro-postgres, one zeltro-mariadb, one zeltro-redis, one zeltro-mongo and one zeltro-memcached, shared by every project on the machine.

7Postgres containers for seven projects, one per stack
~100 MBof memory for each duplicate Postgres
1zeltro-postgres, shared by every project
Per-project stacks Zeltro
Ten projects Ten database containers One of each
Memory Roughly 100 MB per duplicate Postgres One instance
Project A reading project B's data Manual networking Same network, resolves by name
Reaching a project localhost:3001, :3002, :3003 An address assigned for you

The shared network matters more than it sounds. Every project sits on it and resolves by name from inside any container, so a Laravel app can query another project's database, or fetch from another project's API, with nothing configured.

Zeltro settings, Shared Services tab: zeltro-mariadb, zeltro-redis, zeltro-memcached and phpMyAdmin running, each with its address
One shared set of databases and tools that every project uses, each project with its own database and user on them.

The trade is real and worth stating: shared services mean shared versions. If one project needs Postgres 14 and another needs 17, per-project isolation is genuinely the better model and DDEV is the better tool for that job.

Python, not just PHP and Node#

DDEV describes itself as a Docker-based local PHP and Node.js environment, and that is accurate — it is excellent at PHP. Herd is macOS and PHP. Laragon is Windows and PHP-centric.

Zeltro ships three base images, each with nginx, supervisor and every database driver already compiled in. Django, FastAPI and Flask sit alongside Laravel and WordPress rather than needing a different tool.

Base image

PHP 8.3

Laravel, WordPress, Drupal, October CMS.

Base image

Python 3

Django, FastAPI, Flask.

Base image

Node 22

Next.js, Express, and the front-end build tools.

No per-project config file#

Lando has .lando.yml. DDEV has .ddev/config.yaml. Zeltro generates the compose file for you and adapts an existing one if the project already has it — bundled database services are rewired to the shared ones automatically, and the original is preserved as docker-compose.upstream.yaml so nothing is lost.

Your projectWith or without a compose file
zeltro setupWrites or adapts the compose file
Shared servicesBundled databases rewired to them
Nothing lostOriginal kept as docker-compose.upstream.yaml
zeltro new laravel my-app        # scaffold a new project
zeltro setup existing-project    # adapt one you already have
zeltro clone work-directly https://github.com/someone/repo

Built for an agent to work inside#

This part has no equivalent in the older tools, because they predate the problem. Left alone in a directory, an AI coding agent will invent its own infrastructure — its own ports, its own bundled database, its own compose file — with no idea that twelve other projects exist on the machine.

Zeltro gives the agent a fixed environment: known runtimes, shared services, a shared network, and an AGENTS.md in every project describing its URL, database and commands, so a fresh session picks the project up without rediscovering it.

The Zeltro app with a Claude Code session beside the project list, having just added a search box to a recipe app and listing the files it changed
An agent working inside one project, with the others listed beside it.

What DDEV users usually ask#

DDEV has been around longerIt has more users and more documentation. Zeltro is newer and moves fast, and it adds what DDEV never set out to do: AI agents working inside your projects, a desktop app, and 214 ready-made apps.

Is sharing services a risk?It is a deliberate trade. Every project still gets its own database and user; what it shares is the server, so ten projects do not mean ten MariaDB containers, and nothing collides on a port.

What about Drupal, TYPO3 and Magento?DDEV has long-standing tooling for those CMSs. Zeltro covers Laravel, WordPress, Drupal, October CMS, Django, FastAPI and more out of the box, and anything with a docker-compose.yaml runs too.

Neither tool hosts anythingThat is a separate job, and if you would rather hand it over, I take projects live as a service.

Questions

Can I run Zeltro and DDEV on the same machine?

Generally yes — they use different container names, and Zeltro gives each project its own address rather than binding common ports. The thing to watch is anything already bound to port 80. If you are migrating, the simplest path is to stop one while you test the other.

What happens to my existing docker-compose.yaml?

Zeltro adapts it. Bundled database services are removed and the app is repointed at the shared ones, with connection settings written into the project's .env. Your original file is kept as docker-compose.upstream.yaml, so you can always see what it started as.

Does it work on Windows?

Through WSL2. Zeltro is Docker-based and needs Linux underneath. Laragon remains the better answer if you specifically want a native Windows stack with no WSL2 (more in Laragon alternative; on a Mac, see the Laravel Herd alternative).

What database versions does it use?

One shared instance each of MariaDB, Postgres, MongoDB, Redis and Memcached. If a project pins an old major version, that is the one case where per-project tooling like DDEV still wins. Most projects run happily on the shared versions.

What does it cost?

The Zeltro app is free for personal use, hobby projects and learning, with no account. A business using it, including for paid client work, buys a lifetime commercial license once, for US$99.99. The zeltro command line tool is open source (MIT). Separately, you pay for your AI: a subscription you already have, an API key billed per use, or nothing with a local model.

Try Zeltro on your own computer

Free for personal use, with no account. Build with the AI you already pay for, and keep the app, its data and its code on your own machine.

Install Zeltro Why bring your own key

Rather not set it up yourself? I’ll do it for you.

Checked 2026-09-28. Other products change often — if something here is out of date, tell us and it gets fixed.