Docs · DoCatz

Settings and shortcuts

Every DoCatz setting, keyboard shortcut and menu, the menu bar and tray, updates, About, bug reports, where data lives, working with DevCatz, DBCatz and DialCatz, deep links, uninstalling, and troubleshooting.

This page is the reference: every setting, shortcut and menu item, where DoCatz keeps its files, how it works with the other cats, how to uninstall it, and what to do when something goes wrong.

Settings

Open Settings with Settings at the bottom of the rail, Settings… in the menu, or mod+,. It has five tabs: General, Domains, AI, Updates and About.

General → Appearance

Theme: Auto (follows macOS — System Settings → AppearanceWindows — Settings → Personalization → Colors), Light or Dark. Auto is the default. The badge Shared with Catzoid apps means every Catzoid app on this computer follows the same choice.

General → Privacy

Send crash reports is off until you turn it on — When DoCatz crashes or hits an error, send the error to Catzoid so it gets fixed. Never environment values, log lines or file paths. It also shows how many reports are waiting to be sent, and What is sent opens What the apps send. More in Crash reports.

Domains

Default domain (the ending and its resolver), HTTPS certificates (trust the shared local CA, and Serve container domains over HTTPS) and URLs without a port. Everything about them is in Domains and environments.

AI

Use AI in DoCatz, the shared Provider card and one switch per feature. Everything about it is in AI in DoCatz.

Updates

  • DoCatz <version> and Last checked, with Check now — or Show the update when one is waiting.
  • Check automatically (on) — 30 seconds after DoCatz opens, then every 6 hours. Nothing downloads without you.
  • Channel — Stable (the default) or Beta.
  • Notify me (on) — a notification when a new version is out: DoCatz <version> is available — Click to see what’s new.

When there is an update, its dialog (DoCatz <version> is available) offers Skip this version, Later or Update now. Update now downloads it with a progress bar, then offers Restart now or Install when I quit. If something goes wrong — Could not update — there is Retry and Download from the site.

Updates come from catzoid.com’s update feed for DoCatz, with the GitHub release as a fallback. Before it swaps the app, macOS checks that the update carries the same Developer ID signature.On Windows, when the feed has no Windows build yet, DoCatz simply says you are up to date. An update check sends an anonymous install ID, the version and the channel — nothing else.

About

  • The logo, the slogan (If it fits, it ships.), the version and the architecture.
  • Links: DoCatz website, Docs, What’s new, Report an issue, GitHub and Third-party licences.
  • Check for Updates, Report a bug and Send feedback; the licence (GPL-3.0) and a line to star DoCatz on GitHub.
  • Part of the Catzoid family — DevCatz, DBCatz, DialCatz and DoCatz, with MCatzP, the one MCP server for the whole family. The cards of DevCatz, DBCatz and DialCatz show the version installed on this computer, not installed, or — when catzoid.com has a newer build for this computer — both, as in 1.0.3 · 1.0.4 available.
  • Details — the OS, Electron, Chromium and Node.js versions and the Data folder, with Copy to paste them into a bug report.
  • Uninstall DoCatz → Uninstall… (below).

Keyboard shortcuts

On Windows every menu shortcut works with Ctrl, even though there is no menu bar.

Action macOS Windows
Containers ⌘1 Ctrl+1
Images ⌘2 Ctrl+2
Volumes ⌘3 Ctrl+3
Networks ⌘4 Ctrl+4
Builds ⌘5 Ctrl+5
Engine ⌘6 Ctrl+6
Monitoring ⌘7 Ctrl+7
Commands ⌘8 Ctrl+8
Back / forward through screens (also the mouse’s back and forward buttons) ⌘[ / ⌘] Ctrl+[ / Ctrl+]
Settings ⌘, Ctrl+,
Open a compose file ⌘O Ctrl+O
Find — puts the cursor in the Containers search ⌘F Ctrl+F
In the compose editor: Find & Replace ⌘F or ⌥⌘F Ctrl+F or Ctrl+H
In the compose editor: indent Tab Tab
Refresh the container list ⌘R Ctrl+R
Open or close Ask DoCatz (with AI on; otherwise opens Settings → AI) ⌘K Ctrl+K
Save — in the compose editor and a project’s .env ⌘S Ctrl+S
In Ask DoCatz: send / new line ↩ / ⇧↩ Enter / Shift+Enter
Close a dialog or Ask DoCatz Esc Esc
Close the window (DoCatz keeps running) ⌘W ✕ at the top right
Quit DoCatz ⌘Q Exit in ☰ → DoCatz, or in the tray

A three-finger swipe on the trackpad goes back and forward too.The browser back and forward keys on some keyboards go back and forward too.

The menus

Menu Items
DoCatz About DoCatz (opens Settings → About), Check for Updates… (it reads Update Available… when one is waiting), Settings… (⌘,), Services, Hide, Hide Others, Show All, Quit
File Open Compose File… (⌘O), Close Window
Edit Undo, Redo, Cut, Copy, Paste, Delete, Select All, Find… (⌘F)
View The standard items: reload, developer tools, zoom, full screen
Engine Start, Stop, Restart, Refresh (⌘R), Ask DoCatz… (⌘K)
Go Containers … Engine (⌘1–⌘6), Monitoring (⌘7), Commands (⌘8), Back (⌘[), Forward (⌘])
Window Minimize, Zoom, Bring All to Front
Help Report a Bug…, Send Feedback…

Windows has no menu bar. The ☰ button at the top left, above the rail (Menu: every DoCatz command and its shortcut), opens the same menus:

Menu Items
DoCatz About DoCatz (opens Settings → About), Check for Updates… (it reads Update Available… when one is waiting), Settings… (Ctrl+,), Exit
File Open Compose File… (Ctrl+O), Close
Edit Undo, Redo, Cut, Copy, Paste, Delete, Select All, Find… (Ctrl+F)
View The standard items: reload, developer tools, zoom, full screen
Engine Start, Stop, Restart, Refresh (Ctrl+R), Ask DoCatz… (Ctrl+K)
Go Containers … Engine (Ctrl+1–Ctrl+6), Monitoring (Ctrl+7), Commands (Ctrl+8), Back (Ctrl+[), Forward (Ctrl+])
Window Minimize
Help Report a Bug…, Send Feedback…

The menu bar and tray

DoCatz keeps an icon in the menu barsystem tray. Closing the window does not quit DoCatz: it stays there, and so does the engine. Hover the icon for DoCatz — engine running, 3 running. Its menu:

  • Engine: Running (or Stopped, Starting…, Stopping…, Not set up yet, Needs attention, Not available),
  • Stop Engine, Start Engine or Set Up and Start Engine,
  • Running (3) — the running containers, grouped by compose project; each one has Open <its address> and Open in DoCatz,
  • Open DoCatz, Settings…,
  • Quit DoCatzExit DoCatz — which stops the engine too.

Report a bug or send feedback

Help → Report a Bug… or Send Feedback…☰ → Help → Report a Bug… or Send Feedback… (also in Settings → About) open a form: pick Bug, Idea or Question and write what happened. You can add up to three screenshots (PNG or JPEG, up to 2.5 MB each) with Capture this window or Attach a screenshot… — check them first for anything private — and an optional Email for a reply. Preview what is sent shows the whole report. It goes to the DoCatz team through the Catzoid site, with the version and system details added for you.

Crash reports

Crash reports are off until you agree. After the first error, DoCatz asks once — DoCatz ran into an error — Send crash reports so it gets fixed? They carry the error message and where in DoCatz it happened — never environment values, log lines or file paths. — with Don’t send and Send crash reports. You can change it later in Settings → General → Privacy.

A report carries the app, version, channel, OS and its version, the architecture, an anonymous install ID, the error message and where in DoCatz it happened. Before it goes, DoCatz masks secrets, turns your home folder into ~, and replaces URLs, IP addresses, host names and quoted strings. Offline, up to 20 reports wait and are retried every 10 minutes; the same crash is sent at most once a day per version.

Where your data lives

DoCatz keeps two folders: the engine’s folder — see Where the engine keeps its files — and its app data folder.

Where What
~/.docatz The engine: the VM and its disk, Lima, DoCatz’s docker, compose and buildx, downloads
~/Library/Application Support/DoCatz/config.json Settings, AI switches, your groups and favorites, custom domain names, update and report choices
~/Library/Application Support/DoCatz/bridge.json The container list the other Catzoid apps read (below)
~/Library/Application Support/DoCatz/dbcatz/services.json The database containers for DBCatz, with their passwords — readable by you only (DBCatz)
~/Library/Application Support/DoCatz/certs/ The certificate for each container name
~/Library/Application Support/DoCatz/env/ Each project’s .env in DoCatz, readable by you only, with the files DoCatz writes before a run
~/Library/Application Support/Catzoid/shared.json Shared by the Catzoid apps: theme, AI provider, models and addresses, site address, domain settings
Keychain Catzoid AI The AI API key per provider — shared by the Catzoid apps
~/.docker/config.json The docatz context, and DoCatz’s plugin folder — DoCatz only changes its own entries
~/.zprofile (and ~/.bash_profile) DoCatz’s PATH block, only when Add to PATH is on
Where What
%USERPROFILE%\.docatz The engine: the WSL distro’s disk, DoCatz’s docker, compose and buildx, downloads
%APPDATA%\DoCatz\config.json Settings, AI switches, your groups and favorites, custom domain names, update and report choices
%APPDATA%\DoCatz\bridge.json The container list the other Catzoid apps read (below)
%APPDATA%\DoCatz\dbcatz\services.json The database containers for DBCatz, with their passwords — readable by you only (DBCatz)
%APPDATA%\DoCatz\certs\ The certificate for each container name
%APPDATA%\DoCatz\env\ Each project’s .env in DoCatz, with the files DoCatz writes before a run
%APPDATA%\Catzoid\shared.json Shared by the Catzoid apps: theme, AI provider, models and addresses, site address, domain settings
%APPDATA%\Catzoid\keys\<provider>.dpapi The AI API key per provider, encrypted with Windows’ protected storage (DPAPI) for your account — shared by the Catzoid apps
%USERPROFILE%\.docker\config.json The docatz context, and DoCatz’s plugin folder — DoCatz only changes its own entries
Your user Path DoCatz’s bin folder, only when Add to PATH is on

The data folder is shown in Settings → About → Details → Data folder. What the Catzoid apps share is in Shared by the Catzoid apps.

With DevCatz, DBCatz and DialCatz

DoCatz works on its own and needs none of its siblings. When they are on the same computer, this is what they share.

Shared settings

Catzoid/shared.json holds what every Catzoid app uses:

  • the theme,
  • the AI connection — provider, models, addresses (the keys sit in the KeychainWindows’ protected storage); the AI on/off switch and the feature switches stay DoCatz’s own,
  • the site address the apps use for updates and reports,
  • the domains — the default ending, the local certificate authority, and names without a port, with which apps use them.

DevCatz

  • DevCatz’s Docker tab runs a site’s compose file on DoCatz, and Open in DoCatz there shows the site’s containers here.
  • One default domain, one local CA and one port 443 forwarding serve both apps; DevCatz hands *.docatz.<ending> names on to DoCatz. See When DevCatz is installed too.
  • A project’s .env in DoCatz is what DevCatz’s runs on DoCatz get too.
  • DevCatz Services — DevCatz runs its message gateways, and Typesense, Sonic and Sockudo (which have no Windows build of their own), on DoCatz’s engine, and they show in their own read-only group (more). Open in DevCatz opens that service’s page in DevCatz.

DialCatz

Open in DialCatz sits on an API’s own container, at the right end of its tab row, the way Open in DBCatz sits on a database. It shows only where DialCatz has routes to import:

  • the project has a Laravel service (DialCatz reads its route list inside the container), an OpenAPI / Swagger file, or a framework that serves its own OpenAPI document — FastAPI and Litestar always; NestJS with @nestjs/swagger; Express, Fastify and Hono, Django, Flask, Go, Laravel and Rust with their OpenAPI packages;
  • and the container is the API itself: a service with a URL, built with an API framework — not a front end (a Rust app with Leptos, Yew or Dioxus counts as one), not a plain image, and not a worker such as queue, scheduler, horizon or supervisor. A service with an OpenAPI file in its own folder counts whatever it runs, a plain image too.

A web site with a web server and a database but none of these has no routes to import, so no button.

It opens dialcatz://open?docatz=<project>&service=<service>, and DialCatz shows its Import from DoCatz for that project with this service picked — an environment DoCatz · <project> with the services’ addresses, and the routes as a collection; nothing is imported until you click. See Import a DoCatz project.

DBCatz

DoCatz hands its database containers to DBCatz the way DevCatz hands its database services: it writes dbcatz/services.json in its data folder, readable by you only, with each database container’s engine, version, address on this computer (127.0.0.1:<port>, see Databases on this computer) and the user, password and database the image was started with — POSTGRES_PASSWORD, MYSQL_ROOT_PASSWORD, MONGO_INITDB_ROOT_*, Redis’s --requirepass. A password never goes through a link.

A database container has Open in DBCatz at the right end of its tab row, and in its project’s Domains tab. It opens dbcatz://open?docatz=<id>, which opens that very service in DBCatz, signed in. In DBCatz the running database services appear by themselves as DoCatz services, next to DevCatz services, with a live status. services.json also names each database’s container, so DBCatz’s Open in DoCatz comes back to that container’s page (docatz://container/<container>).

When a sibling is not installed

When Open in DevCatz, Open in DialCatz or Open in DBCatz finds that app missing, the dialog <app> is not installed says what it is and offers Download page and Download & Install. Download & Install asks catzoid.com for that app’s build for this computer — the Apple silicon or Intel DMGthe Windows installer, never another platform’s file — checks its SHA-256, puts the app in Applicationsinstalls it for your account, with no administrator prompt, and opens the link there. The steps: Find the latest release, Download, Verify the checksum, Install to ApplicationsInstall, Open <app>.

When catzoid.com has no build for this computer yet, it says so — There is no <app> build for <this computer> yet — instead of installing anything. Only when the site cannot be reached, or gives an answer DoCatz cannot use, does it take the build from the app’s latest GitHub release. If something fails, Download page is still there, next to Try again.

bridge.json

Whenever the container list changes, DoCatz writes a small bridge.json in its data folder, readable by you only. It holds the engine’s state, the proxy’s ports and, per container, its short ID, name, compose project and service, image, state, ports and URL — never environment values, mounts, labels or secrets. The other cats can list DoCatz’s containers from it and link back with docatz://container/<name>.

Link Opens
docatz://open The DoCatz window, on Containers
docatz://container/<name> That container’s page (Info tab)
docatz://compose?path=<compose file> The project started from that file: put in the search when it runs, or the compose editor with the file, ready for Up. A link never runs anything.
docatz://gateways?kind=<kind> / docatz://services?kind=<kind> Windows only; on a Mac they open Containers.That gateway, or that service (Typesense, Sonic, Sockudo), in the DevCatz Services group.

Any other or broken link just opens the window.

Uninstall DoCatz

Settings → About → Uninstall DoCatz → Uninstall… asks Uninstall DoCatz? — This removes DoCatz and what it keeps on this MacPC. It cannot be undone. — and lists exactly what goes:

  • the engine — the Linux VM and its disk: every container, image and volume in it,
  • ~/.docatz — Lima, docker, compose and buildx, downloads,
  • the docatz context and DoCatz’s entry in ~/.docker/config.json (your other entries stay), and the PATH lines in .zprofile / .bash_profile,
  • ~/Library/Application Support/DoCatz — settings, certificates, bridge.json,
  • DoCatz’s logs, caches, preferences and saved window state in ~/Library, and the Keychain item DoCatz Safe Storage,
  • the app itself, to the Trash. Installed with Homebrew: brew uninstall --cask docatz runs as well.

DoCatz quits and finishes the job in the background.

  • the engine — the docatz WSL distro and its disk: every container, image and volume in it,
  • %USERPROFILE%\.docatz, the docatz context and DoCatz’s entry in your Path,
  • %APPDATA%\DoCatz — settings, certificates, bridge.json — and update downloads in %LOCALAPPDATA%\docatz-updater,
  • the app, its shortcuts and its entry in Installed apps, through DoCatz’s own uninstaller, and the docatz:// link.

DoCatz quits and a small window, Uninstalling DoCatz, finishes the job: Waiting for DoCatz to close, Removing the app, its shortcuts and its entry in Installed apps, Moving its data and settings to the Recycle Bin — then DoCatz has been removed. The folders stay in the Recycle Bin until you empty it.

Your project folders stay: files your containers used from this computer are never touched. What lives only inside a volume goes with the engine, so copy it out first if you need it.

The domain resolver and port forwarding go too when no other Catzoid app uses them — macOS asks for your password for thatWindows asks for permission for that.

Also remove the shared Catzoid settings removes shared.json and the AI keys too, and the local certificate authority when DoCatz made it and no other app uses it (it then leaves your trusted roots as well). It is ticked only when no other Catzoid app is installed; with DevCatz, DBCatz or DialCatz on this computer, the dialog suggests keeping them. Type DoCatz and press Uninstall DoCatz.

The by-hand route, for when DoCatz no longer opens, is in Uninstall.

Troubleshooting

The engine

You see Do this
DoCatz needs macOS 13 or newer (Apple’s Virtualization framework) Update macOS; the engine cannot run on older systems.
No engine yet — Start sets it up (about 1 GB to download the first time). Press Set up and start on the Engine page.
The VM is up; Docker is not answering yet. Give it a moment; it shows as Starting until Docker answers.
The VM started, but Docker did not answer — see the engine log Open Engine log. Restart usually helps; if it keeps failing, Reset… sets it up fresh (your containers, images and volumes go).
The VM is … — see the engine log, or Reset The VM is in a state DoCatz cannot use. Read the Engine log; Reset… is the last resort.
The engine is not running — start it first Press Start on the Engine page, or Start Engine in the tray.
The engine did not answer in time The engine is busy or stuck: wait, then Restart it.
<file> did not match its checksum — the download was damaged or changed, nothing was installed Start again to download it anew. If it keeps happening, something between you and the download changes the file — try another network.
Could not reach <host>: … DoCatz could not download a part of the engine: check your connection (and a proxy or firewall), then try again.
You see (Windows) Do this
The engine runs on WSL 2, which is not on this PC yet. … Press Install WSL on the Engine page, approve Windows’ prompt, then restart — see Install WSL.
WSL is installed: restart Windows to finish, then open DoCatz again. Restart Windows; Virtual Machine Platform only loads at startup.
Virtualisation is off in the PC’s BIOS / UEFI (SVM Mode on AMD, Intel VT-x on Intel): turn it on there first, then install WSL. Follow Turning on virtualisation.
WSL is installed, but it cannot start its VM yet: “Virtual Machine Platform” is off, … Press Install WSL again (it turns the feature on), then restart Windows.
WSL 2 needs virtualisation: … Turn on Virtual Machine Platform and virtualisation in the BIOS / UEFI, then restart. In a VM, allow nested virtualisation on its host.
WSL could not find the downloaded Linux files: start the engine again to download them anew. Press Start again.
Docker did not start inside WSL: … Open Engine log, then Restart; if it keeps failing, Reset….

Compose, files and builds

You see Do this
Docker Compose is not installed yet — start the engine once, or install the CLIs in Engine Start the engine once, or press Install in Engine → Docker command line.
<file> is not there any more The compose file was moved or deleted; open it from its new place with Open….
docker compose exited Read the run’s output above the message — the reason is in its last lines. With AI on, ✦ Fix with AI reads them for you.
<project> was not started from a compose file DoCatz can find The project was started elsewhere; open its compose file with File → Open Compose File… and run it from there.
This container has no ls (a minimal image): its files cannot be listed Use docker cp from the Commands page instead.
Start the container to open a terminal in it. Press Start on the container’s page.
The .env changed since you opened it: reload it first Open the Environment tab again, then make your change.

Domains

You see Do this
The browser says Nothing runs at <host> No running container has that name: start it in DoCatz, or check its name on its Info tab.
The browser says <host> is a DevCatz site It is a DevCatz site and DevCatz is closed: open DevCatz.
DoCatz could not reach the container on port <n>: … The container runs but does not answer on that port yet — wait for it to finish starting, and check its Logs.
The browser warns about the certificate Press Trust… in Settings → Domains → HTTPS certificates, then reload the tab.
The certificate was not trusted The system question was cancelled or answered No — press Trust… again.
.<ending> is a real (or reserved) domain ending — pick localhost or test Pick another ending, such as localhost or test.
Another tool already resolves .<ending> — pick another ending Remove that tool’s resolver, or pick another ending.
The resolver is in place, but … does not resolve yet: try again in a moment Wait a few seconds and press the button again.
Port <53 or 53531> … is taken by another program, … Close the program that holds it — on Windows often Mobile hotspot (Internet Connection Sharing) or Docker Desktopthe message names it — then try again.
URLs still carry :8743 Names without a port are off, or the app behind port 443 is not running — see Names without a port.

AI

You see Do this
Ask AI is off: turn it on in Settings → AI Turn on Use AI in DoCatz, and the feature’s switch.
Add your <provider> API key in Settings → AI / Choose a model for <provider> in Settings → AI Save a key and pick a model; Test checks both.
<host> answered 401 (check the API key in Settings → AI): … The provider refused the key: paste it again with Replace.
… rate limit reached; try again in a moment Wait a little, or pick another model.
The model did not answer in the expected form; try again or pick another model Try again; small local models sometimes need a bigger one.

Installing and updating

  • Windows warns about the installer — the installer is not code-signed yet, so SmartScreen may say Windows protected your PC. Choose More info → Run anyway. Code signing says why.
  • “Could not reach the update feed” — check your connection and press Retry, or use Download from the site.
  • “There is no <app> build for <this computer> yet” — catzoid.com has no build of that sibling for your computer yet, so Download & Install stops rather than fetch another platform’s file. Download page opens the app’s page on catzoid.com.
  • Something else — Troubleshooting, then Help → Report a Bug…☰ → Help → Report a Bug… with the Engine log copied in.

Last updated 2026-11-03