Zeltro CLI
Zeltro is a Docker-based local development environment manager for PHP, Python and Node projects — and a set of guardrails for AI coding agents working on your machine.
It does three things, and they reinforce each other.
Shares one set of services across every project
One zeltro-postgres, one zeltro-mariadb, one zeltro-redis, one zeltro-mongo, one zeltro-memcached — used by every Zeltro project on the machine. Run ten projects, you still have one of each.
- Projects talk to each other for free. The same hostnames resolve from your browser (
http://my-api/) and from inside containers (psql -h zeltro-postgres,fetch('http://my-api/')). A Laravel app can read another project’s database with no networking setup. - No port roulette. Every project lives at
http://project-name. Nolocalhost:3001vs:3002vs:3003, nohost.docker.internalhacks. Ports only enter the picture when you want to reach a project from another machine on the LAN. - Resource consolidation. Seven duplicate Postgres containers eating ~700MB becomes one eating ~100MB.
- No conflicts. Upstream compose files binding
5432:5432or80:80get rewired to the shared services automatically.
Runtimes that are already built
Three base images cover every supported stack — PHP 8.3, Python 3, Node 22 — each with nginx, supervisor, and every database driver already compiled in.
You never hunt down an image, compare tags, or write a Dockerfile. pdo_mysql, pdo_pgsql, pdo_sqlite, redis, mongodb, gunicorn, uvicorn — all present, on every project, from the first command.
See Architecture for what each image ships.
Built for AI agents to work inside
Left alone, an AI agent will scaffold a project however it likes — its own ports, its own bundled database, its own compose file — with no regard for the other twelve projects on your machine. Zeltro gives the agent a fixed environment to work in:
- A stable platform. Shared services, hostname routing,
/etc/hostswiring, and known runtime images mean the agent builds your app instead of reinventing infrastructure. - Fewer tokens. Framework scaffolding, networking, secret generation and 200+ app installs are pre-baked. The agent doesn’t rediscover how to wire nginx + php-fpm every session.
- Context that survives. Every project gets an
AGENTS.mddescribing its URL, database and commands, so a new agent session picks the project up cold.
Where to go next
| Installation | Install Zeltro on Linux or macOS |
| Quick start | Your first project in one command |
| Frameworks | zeltro new — scaffold a project you write |
| App library | zeltro install — 200+ ready-to-run apps |
| AI workflow | zeltro create, ai, resume |
| Command reference | Every command and flag |
| Architecture | Services, networking, base images |
| Automation & JSON | Scripting, JSON output, debugging |
Where Zeltro doesn’t add much
If you run exactly one project and never touch another, plain docker compose up works fine. Zeltro earns its keep once you have several projects, or an AI agent, sharing one machine.