$
All cats, no catch. Free and open source.
scroll ↓ the cat has nine lives
$ catzoid --apps
devcatzLocal dev environmentreleased
dbcatzDatabase clientreleased
dialcatzAPI clientreleased
docatzContainer enginereleased
$
The family
Four cats. One developer workflow.
Each app stands on its own and gets better next to the others. All free, all open source, all AI-connected through one shared setting.
Nine lives
What one cat can do.
Everything in the family, counted the way a cat counts.
life 1/9
Sites with HTTPS
https://<name>.localhost with a trusted local CA — or your own TLD.
life 2/9
Every runtime
PHP 5.6 – 8.x, Python, Node.js, Bun, Go and Rust, any version per site.
life 3/9
Databases
MySQL, MariaDB, PostgreSQL, Redis, Valkey, MongoDB, Elasticsearch, SQLite — run them, then browse them.
life 4/9
Storage, search, realtime
S3 buckets, six search engines, five WebSocket servers, locally.
life 5/9
Mail and gateways
A mail catcher, WhatsApp, SMS, push and Telegram servers for OTP flows.
life 6/9
Git, Monitoring, Docker
Pull requests, resource charts and a deploy-ready Dockerfile per site.
life 7/9
Share a site
Cloudflare tunnels, Expose or ngrok with a request inspector and replay.
life 8/9
Production, safely
Production and Read-only modes, structure changes checked before they run.
life 9/9
One AI connection
Set the provider once; every Catzoid app asks with your context and acts on the answer.
> are you a vibe coder?
AI-connected
Then this family speaks your language.
You describe, the cats do. Every Catzoid app shares one AI connection and knows your actual setup — sites, ports, logs, schema — so plain words become real actions. It explains what it is about to do and asks first, so you never need to know what migrate means to run it.
Asks before every action
Nothing runs on its own. You see the step, you confirm it.
Structure, never your data
Tables, columns, logs — not rows, unless you say so per connection.
Keys stay in your Keychain
Encrypted by macOS, never in a settings file.
Off until you want it
Every app is complete without AI. Turn it on when you like, with your own key.
my laravel site just shows a white screen
DevCatz
PHP 8.3 on this site is missing the intl extension — the log says so at line 1. Install it and reload the site?
Install intlChange PHP versionOpen the log
which customers paid twice last month?
DBCatz
Here is the query, built from your payments and customers tables. It is in the editor and will not run until you press Run.
SELECT c.email, COUNT(*) FROM payments p JOIN customers c … HAVING COUNT(*) > 1
RunExplainOnly structure was sent
sign in, then show me the paid orders
DialCatz
Two requests on the Local environment: sign in for a fresh token, then the paid orders with it. Nothing is sent until you press Send.
POST {{baseUrl}}/login → GET {{baseUrl}}/orders?status=paid
Add bothSet {{token}}Names only were sent
restart everything in the shop project
DoCatz
Three steps on the shop project: restart web, api and db. Nothing runs until you press Run.
RunReview the steps
> ask anything about your setup…
One connection ·Claude (default)OpenAIGeminiDeepSeekZ.aiMistralxAIGroqOpenRouterOllamaany OpenAI-compatible server
And the other way round · the MCP with the cats insidesoon
MCatzP. em-catz-pee
Already living in Claude, Cursor or another assistant? One MCP server lets it reach every cat you have installed — start a site in DevCatz, peek at a table in DBCatz, fire a request in DialCatz, restart a container in DoCatz — from the chat you are already in. One connection, every cat, and you hold the keys: only what you allow, nothing runs without you seeing it.
Works with ClaudeGeminiGPTGLM— any app that speaks MCP.
Meet MCatzPBetter together
Four cats. One cat.
They know each other. Set one up and the others notice — no config, no copy-paste, deep links everywhere.
- DevCatz hands its databases to DBCatzListed as “DevCatz services” with live status; Open in DBCatz in one click.
- Sites become DialCatz environmentsEach site’s URL and .env names; routes from Laravel or the OpenAPI document the site serves.
- DialCatz asks DBCatz to checkCheck in DBCatz opens the table the call just touched — at the row, when the URL or the answer has its id.
- DevCatz runs its containers on DoCatzThe Docker tab tests on DoCatz’s engine, and both share one domain: https://web.shop.docatz.localhost.
- DoCatz projects become DialCatz environmentsEach service’s https name, and the routes as requests — Open in DialCatz from the project.
- DoCatz databases in DBCatzEvery database container on 127.0.0.1:<port>, listed in DBCatz as “DoCatz services” by themselves, signed in.
- One setting for all of themTheme and AI provider set once; deep links devcatz://, dbcatz://, dialcatz://, docatz://.
Backed by the community
Every sponsor is a star in the cat.
Catzoid is free and open source — no paid tier, no catch. Sponsors keep the cats fed: the servers, the signing certificates, and the next app in the family. Light a star and your face joins the constellation.
0 stars litmonthly or one-timethrough GitHub Sponsors
Or support locally
Ready when you are
Take one home.
macOS 13+ on Apple silicon and Intel, and Windows 10+ — every cat, today. No account, no licence key, no catch.
Apple siliconIntel MacWindows 10+
Mac builds signed & notarized · Windows unsigned for now · Code signing policy
Also from the same catMrCatz DataTableserver-side DataTables for Laravel, ported to JavaScript; a Go version is planned.