This page is the reference: every shortcut and menu item, every setting, where DialCatz keeps its files, what to do when something goes wrong, and how it works together with DevCatz, DBCatz and DoCatz.
Keyboard shortcuts
Every shortcut, on macOS and on Windows. On Windows there is no menu bar: the menus open from the ☰ button at the top left, and every menu shortcut works with Ctrl.
| Action | macOS | Windows |
|---|---|---|
| New request | ⌘N | Ctrl+N |
| New collection | ⇧⌘N | Ctrl+Shift+N |
| Import… | ⌘O | Ctrl+O |
| Save the request — in Variables: save the environment; in the .gitignore editor: save the file | ⌘S | Ctrl+S |
| Close the tab | ⌘W | Ctrl+W |
| Send the request — also from the body and script editors; sends the message on a connected WebSocket; commits in the Git views | ⌘↩ | Ctrl+Enter |
| Put the cursor in the address field | ⌘L | Ctrl+L |
| Open or close Ask DialCatz (when AI and the feature are on) | ⌘K | Ctrl+K |
| Back / forward through screens (the mouse’s back and forward buttons too) | ⌘[ / ⌘] | Ctrl+[ / Ctrl+] |
| Search the response (in the Requests section) | ⌘F | Ctrl+F |
| Settings | ⌘, | Ctrl+, |
| Quit DialCatz | ⌘Q | Exit in ☰ → File, or close the window |
| Next / previous search match — in Ask DialCatz: send / new line | Enter / ⇧Enter | Enter / Shift+Enter |
| Close a dialog, popover or search; cancel a drag | Esc | Esc |
| Insert two spaces (in a code editor) | Tab | Tab |
| Close the tab | Middle-click on a tab | Middle-click on a tab |
Right-clicking ‹ or › lists the recent screens to jump to.
The menus
| Menu | Items |
|---|---|
| DialCatz | About DialCatz (opens Settings → About), Check for Updates… (it reads Update Available… when one is waiting), Settings… (⌘,), Services, Hide, Hide Others, Show All, Quit |
| File | New Request (⌘N), New Collection (⇧⌘N), Import… (⌘O), Save Request (⌘S), Close Tab (⌘W) |
| Edit | The standard items: undo, redo, cut, copy, paste, select all |
| Request | Send (⌘↩), Focus Address (⌘L) |
| View | The standard items, such as zoom and full screen |
| Window | The standard items |
| Help | Report a Bug…, Send Feedback…, DialCatz Docs (opens these docs), Privacy and Data (opens What the apps send) |
Settings opens with Settings… (mod+,) or the gear at the bottom of the rail. A dot on the gear means an update is waiting.
The ☰ button at the top left, above the rail, opens the app menu:
| Menu | Items |
|---|---|
| File | New Request (Ctrl+N), New Collection (Ctrl+Shift+N), Import… (Ctrl+O), Save Request (Ctrl+S), Close Tab (Ctrl+W), Settings… (Ctrl+,), Exit |
| Edit | The standard items: undo, redo, cut, copy, paste, select all |
| Request | Send (Ctrl+Enter), Focus Address (Ctrl+L) |
| View | Reload, developer tools, zoom in (Ctrl+=), zoom out (Ctrl+-), actual size (Ctrl+0), full screen (F11) |
| Window | Minimize, Close |
| Help | Report a Bug…, Send Feedback…, DialCatz Docs (opens these docs), Privacy and Data (opens What the apps send), Check for Updates… (it reads Update Available… when one is waiting), About DialCatz (opens Settings → About) |
Settings is also the gear at the bottom of the rail. A dot on it means an update is waiting.
Settings
Settings has four tabs: General, AI, Updates and About.
General → Appearance
Theme: Auto (follows macOS — System Settings → AppearanceWindows — Settings → Personalization → Colors), Light or Dark. The badge Shared with Catzoid apps means every Catzoid app on this computer follows the same choice — change it here and DevCatz and DBCatz change too.
General → Requests
| Setting | Default | What it does |
|---|---|---|
| Timeout | 30 seconds | How long a request may take, 1 to 600 seconds. |
| Follow redirects | On | Follows up to 10 redirects. Off: you get the 3xx response itself. |
| Skip certificate checks | Off | For local dev servers with self-signed certificates. Applies to every send. A single collection can skip them too, in its Settings…. DevCatz sites never need it. |
| Auto headers | The five listed | Which auto headers new requests send. |
General → Privacy
Send crash reports is off until you turn it on. Reports never carry your requests, responses, variables, tokens or hosts; the What is sent link explains the rest. After the first error, a toast asks once: Send crash and error reports to Catzoid from now on? — Send reports or Not now.
AI
The AI connection and the feature switches. Everything about it is on AI in DialCatz.
Updates
- DialCatz <version> and Last checked, with Check now — or Show the update when one is waiting.
- Check automatically — 30 seconds after DialCatz opens, then every 6 hours. Nothing downloads without you.
- Channel — Stable or Beta.
- Notify me — a notification once when a new version is out.
When there is an update, its dialog offers Skip this version, Later or Update now. Update now downloads it with a progress bar, then offers Install when I quit or Restart now — open tabs and unsaved edits come back after the restart. If the download fails: Download from the site or Retry.
Updates come from catzoid.com’s update feed for DialCatz. On Windows an update installs for your account, without an administrator prompt, like any other release.
About
- The logo, the slogan, the version and the architecture (Apple silicon or Intelx64).
- Links: the DialCatz website, Docs, DialCatz Den, What’s new, Report an issue, GitHub and Third-party licences.
- Check for Updates…, Report a bug and Send feedback, and a line to star DialCatz on GitHub.
- Part of the Catzoid family — the sibling apps.
- Details — the OS, Electron, Chromium and Node.js versions and the Data folder, with Copy to paste them into a bug report.
- Uninstall DialCatz → Uninstall… (below).
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; you can attach screenshots. Reports go to catzoid.com and never carry tokens, request or response bodies, variable values or hosts. The version and system details are added for you.
Uninstall DialCatz
Settings → About → Uninstall DialCatz → Uninstall… shows exactly what goes:
- your collections, environments, history and settings (DialCatz’s data folder);
- the DialCatz Den tokens in the Keychain;
- caches, logs and saved window state (in
~/Library/Caches,Logs,Saved Application StateandPreferences); - the app itself, to the Trash.
- your collections, environments, history and settings — the data folder
%APPDATA%\DialCatz, with the DialCatz Den tokens inside it (Windows’ protected storage (DPAPI)); - Update downloads (
%LOCALAPPDATA%\dialcatz-updater), when there are any; - The app, its shortcuts and its entry in Installed apps — through DialCatz’s own uninstaller.
DialCatz quits and a small window, Removing DialCatz from this PC, finishes the job: it waits for DialCatz to close,
removes the app, its shortcuts, its entry in Installed apps and the dialcatz:// link, and moves the data to the
Recycle Bin, where it stays until you empty it.
Also remove the shared Catzoid settings removes the theme, the AI connection and the AI key too
— on Windows the whole %APPDATA%\Catzoid folder goes to the Recycle Bin. It warns you when other Catzoid apps
still use them. Type DialCatz to confirm.
What stays: your exports and saved responses, folder workspaces (they are your files), and your team’s data on the
Den. A Homebrew install gets a hint to run brew uninstall --cask dialcatz as well. The
by-hand route is in Uninstall.
Where your data lives
| Where | What |
|---|---|
~/Library/Application Support/DialCatz/config.json |
Settings, AI switches, request defaults, history (up to 300), the list of Den servers (no tokens), repositories added to the Git section, copies of Git account avatars, update and report choices |
~/Library/Application Support/DialCatz/workspaces/<id>.json |
One file per workspace, readable by you only (mode 0600) and written atomically: its items, environments with their values, globals, layout and sync state. Folder workspaces keep their local-only parts here. |
~/Library/Application Support/DialCatz/git/askpass.sh |
A small helper that hands Git a token from the environment. It holds no secret. |
| The window’s local storage | Open tabs, the last workspace, pane sizes, and whether you saw the welcome |
~/Library/Application Support/Catzoid/shared.json |
Shared by the Catzoid apps: theme, AI provider, models and addresses, Git accounts (no tokens), the site address |
| Keychain Catzoid AI | The AI API key per provider — shared by the Catzoid apps |
| Keychain Catzoid Git | One token per Git account — shared by the Catzoid apps |
| Keychain DialCatz Den | One member token per Den server — DialCatz only |
| Your folders | Folder workspaces, wherever you put them (in a repository, or <DevCatz site>/dialcatz) |
~/.ssh |
SSH keys listed and generated in the Git section |
| Wherever you save them (Downloads by default) | Exports and saved responses |
| Where | What |
|---|---|
%APPDATA%\DialCatz\config.json |
Settings, AI switches, request defaults, history (up to 300), the list of Den servers, their member tokens (encrypted with Windows’ protected storage (DPAPI)), repositories added to the Git section, copies of Git account avatars, update and report choices |
%APPDATA%\DialCatz\workspaces\<id>.json |
One file per workspace, written atomically: its items, environments with their values, globals, layout and sync state. Folder workspaces keep their local-only parts here. |
%APPDATA%\DialCatz\git\askpass.sh |
A small helper that hands Git a token from the environment. It holds no secret. |
| The window’s local storage | Open tabs, the last workspace, pane sizes, and whether you saw the welcome |
%APPDATA%\Catzoid\shared.json |
Shared by the Catzoid apps: theme, AI provider, models and addresses, Git accounts (no tokens), the site address |
%APPDATA%\Catzoid\keys\<provider>.dpapi |
The AI API key per provider, encrypted with DPAPI for your Windows account — shared by the Catzoid apps |
%APPDATA%\Catzoid\git\<account id>.dpapi |
One token per Git account, encrypted the same way — shared by the Catzoid apps |
| Your folders | Folder workspaces, wherever you put them (in a repository, or <DevCatz site>\dialcatz) |
%USERPROFILE%\.ssh |
SSH keys listed and generated in the Git section |
| Wherever you save them (Downloads by default) | Exports and saved responses |
The data folder is shown in Settings → About → Details → Data folder.
DialCatz also reads, never writes, a few files of its siblings: DevCatz’s bridge.json, config.json, its local
certificate authority certs/ca.crt and its bin/php (for the Laravel route import; on Windows DevCatz’s bin\php.cmd, run through cmd.exe, or the php on your Path when DevCatz is not there), and DBCatz’s bridge.json (and
config.json, to see whether DBCatz is installed). Every call DialCatz makes on its own is listed in
What the apps send; what the Catzoid apps share is in Shared by the Catzoid apps.
Troubleshooting
- A request fails with a certificate error — for your own local server, turn on Skip certificate checks for its
collection (collection → Settings…) rather than for the whole app. DevCatz sites and
*.localhostare trusted already. - “The call did not go through” — the server could not be reached: check the address, the port, and that the server runs. Sent request shows the URL after variables were filled in.
- A
{{variable}}is sent as written — no environment or global defines it, or its row is switched off. Click it in the field to see where it should come from, and check the environment picker in the top right. - A request times out — raise Timeout in Settings → General → Requests (up to 600 seconds).
- The body says “cut at 25 MB” — the response was bigger than DialCatz keeps; the first 25 MB are shown.
- A test fails with “ran longer than 10 s” — scripts are stopped after 10 seconds; look for a loop or a promise that never settles.
- A folder workspace stopped saving — a file could not be read (often a merge conflict). Fix the file or abort the merge; see When the folder or a file has a problem.
- Git says it is not installed — run
xcode-select --install.install Git for Windows (git-scm.com). - Team sync fails — see Teams with DialCatz Den → Troubleshooting.
- Something else — Troubleshooting, then Help → Report a Bug…☰ → Help → Report a Bug….
- Windows warns about the installer — the Windows installer is not code-signed yet, so SmartScreen may say Windows protected your PC. Choose More info → Run anyway. Code signing says why, and how you can help.
With DevCatz, DBCatz and DoCatz
DialCatz works on its own, and gets more useful next to its siblings. None of this needs setting up: when DevCatz, DBCatz or DoCatz is installed, DialCatz finds it.
Import a DevCatz site
DevCatz keeps a small bridge.json listing your sites, their apps (web, API, assets, with their URLs) and the OpenAPI
documents it found. DialCatz reads it and watches it, so new sites show up on their own.
Import → From DevCatz:
- Choose the Site (name — domain (framework) · running) and, when the site has several, the App — where requests go.
- Choose what comes in:
- Environment, DevCatz · <site>, with
baseUrlset to the app’s URL (andsiteUrlwhen it differs). Importing again refreshes these values and keeps any variables you added by hand. - Add its .env variables — the site’s
.envnames come in too. Names that look like secrets (containing KEY, SECRET, PASSWORD, TOKEN, PRIVATE, DSN, CREDENTIAL…) are marked secret. Values stay on this computer. - Routes as a collection — for Laravel, DialCatz runs
php artisan route:list --jsonin the project with DevCatz’s PHP (so the project’s own code runs). For other frameworks it uses an OpenAPI document: a file DevCatz found, or a common served path such as/openapi.json,/swagger.jsonor/v3/api-docs. Routes are split into api and web folders when there are both, then grouped by tag or by the first part of the path. The collection is linked to the site’s environment. - Save in the site’s repository — writes the workspace as files in
<site>/dialcatz, ready to commit with the site’s code (see DevCatz site workspaces). Without it, everything goes into the current workspace.
- Environment, DevCatz · <site>, with
Imported before into this workspace, the routes are added to the collection already there, or go into a new one — see Import the same site or project again. If the site’s repository already holds a workspace, the import says so and offers Open its workspace. Without DevCatz, the card says DevCatz is not installed… with Get DevCatz, which downloads the right build for this computer.
Open in DialCatz from DevCatz
DevCatz’s Open in DialCatz action uses the link dialcatz://open?site=<site id>: DialCatz comes up with the import
for that site ready — nothing is imported until you click Import. If DialCatz is not running, or its window was
closed, the link starts it and the import shows once the window is ready.
Import a DoCatz project
DoCatz runs your compose projects, each service on its own name
(https://<service>.<project>.docatz.<tld>), and keeps a bridge.json listing them: project, service, state, address,
compose folder and the framework each service is built from. DialCatz reads it and lists only what has routes to
import, the API services:
- a service built from an API framework (Laravel, NestJS, Go, FastAPI …);
- a service DoCatz cannot name (a plain image) when an OpenAPI file (
openapi.json,openapi.yaml,swagger.json…) sits in its own folder of the compose folder:<service>,apps/<service>orservices/<service>, or thedocs/inside one of them.
Databases and caches, front ends (Nuxt, Next.js, Astro, Vite, Leptos, Perseus …), other plain images (mail, storage, admin tools) and background workers (scheduler, queue, worker, cron, Horizon, Reverb, supervisor) stay in DoCatz. A project without an API service is not listed; when no project has one, the card says DoCatz has no compose projects with an API service yet….
Import → From DoCatz:
-
Choose the Project (name — its API services · running, or · stopped).
-
When the project has more than one API service, choose the Service — where requests go (baseUrl):
- All, the default — every API service, a collection each. Each collection is named <project> ·
<service> and sends to its own
{{<service>Url}}, and all of them are linked to the project’s environment. A service whose routes cannot be read (it is stopped, or has no OpenAPI document) is left out, and a warning names it: Not imported — <service>: …. - A single service (each button shows its name and framework) — its routes become one collection that sends to
{{baseUrl}}.
Opened from DoCatz’s Open in DialCatz on an API container, that container’s service is picked.
- All, the default — every API service, a collection each. Each collection is named <project> ·
<service> and sends to its own
-
Choose what comes in:
- Environment, DoCatz · <project>, with
baseUrlset to the chosen service’s address (with All, the first service that has one) and a<service>Urlvariable for every API service with an address (apiUrl,adminApiUrl…). Importing again refreshes these values and keeps any variables you added by hand. - Add its .env variables — the project’s
.envin DoCatz (else the one in its compose folder). Names that look like secrets are marked secret; values stay on this computer. - Routes as a collection (Routes as collections with All) — for Laravel, DialCatz runs
php artisan route:list --jsoninside the service’s container with DoCatz’s docker (PHP lives there, not on your computer), so the project’s code runs to list them. Otherwise it uses an OpenAPI document: a file in the compose folder — the service’s own folders first (<service>,apps/<service>,services/<service>and theirdocs/), then the top level,docs/,api/,openapi/,swagger/and each app underapps/of a monorepo — else one a service serves at the usual paths, NestJS’s/api-jsonand/docs-jsonincluded. When that document sits behind Basic auth, the user and password the project’s.envsets for it (SWAGGER_USER/SWAGGER_PASSWORD,DOCS_…) are tried after a 401.
- Environment, DoCatz · <project>, with
The project has to be running: its services only have addresses while they run. A stopped one says so, with Open in DoCatz to start it and a refresh button (Read DoCatz again). Without DoCatz, the card says DoCatz is not installed… with Get DoCatz.
Open in DialCatz from DoCatz
An API service’s container in DoCatz has Open in DialCatz. It uses the link
dialcatz://open?docatz=<project>&service=<service>: DialCatz comes up with the import for that project ready and that
service picked — as baseUrl and, for Laravel, as the container php artisan runs in. Without service, or with a
service the project does not have, the import picks as it always does (All when the project has more than one API
service). Nothing is imported until you click Import.
If DialCatz is not running, or its window was closed, the link starts it and the import shows once the window is ready. When DialCatz is not installed, DoCatz offers to get it.
Import the same site or project again
Import a DevCatz site or a DoCatz project into a workspace that already has its routes — from Import… or with Open in DialCatz again — and nothing is lost. Every collection DialCatz imports remembers where it came from: the DevCatz site and app, or the DoCatz project and service. Folder workspaces keep that in their files, and team workspaces sync it. Collections imported before DialCatz 1.0.5 are found by their name and their environment.
While Routes as a collection is on, the import then shows Imported before, with a choice:
| Choice | What happens |
|---|---|
| Add new routes to “<collection>” (the default) | Only routes it does not have yet are added — your saved requests stay as they are. |
| New collection | A new collection, next to the one(s) already here. |
Imported more than once (you chose New collection before), the list offers Add new routes to “<collection>” for each of them — with the number of requests when two have the same name — and Add new routes to all <n>. With All in a DoCatz project, every service imported before has its own row, Imported before · <service>.
How new routes are added:
- A route is its method and its path. The host part (
{{baseUrl}},{{apiUrl}}…) and the query do not count, and path parameters such as:idand{id}are the same parameter. - A new route joins the folder of the same name (made when it is missing) and sends to the variable the collection’s requests already use.
- The requests already there stay exactly as they are: your params, bodies, headers, scripts and names.
- Requests whose route is gone upstream stay too.
- The environment’s addresses are refreshed; variables you added by hand stay.
When it is done, a toast says what changed — Environment “DoCatz · <project>” updated · 3 new route(s) added, or No new routes — every route was already there.
Trusted DevCatz certificates
DevCatz’s local certificate authority is trusted automatically for DevCatz hosts and every *.localhost address, so
its HTTPS sites work without skipping certificate checks.
The same Git
A DevCatz site’s workspace lives in its own repository, and DevCatz and DialCatz use the same Git accounts — see Git and DevCatz.
Check in DBCatz
After a successful call, the response bar shows Check in DBCatz. One click opens, in DBCatz, the table
the call most likely touched. The table is guessed from the URL: /api/order-items/42 points at order_items, row 42;
after a create call, the id or data.id in the JSON answer picks the new row.
The chevron next to it opens the Check in DBCatz dialog to choose for yourself:
- Connection — from DBCatz’s saved connections (Saved in DBCatz) and the databases DevCatz runs (DevCatz services);
- Database and Table (Guessed from the URL: …);
- Only this row — a column and value;
- then Open in DBCatz.
Remembered on this computer only: teammates choose their own DBCatz connection. DBCatz just opens the table — nothing
is changed. The link it opens (dbcatz://open?conn=…&db=…&table=…&col=…&val=…) is read-only, and DBCatz checks it.
DialCatz reads DBCatz’s bridge.json, which holds no passwords.
Messages you may see:
| Message | Means |
|---|---|
| DBCatz is not installed… | Get DBCatz downloads the right build for this computer. |
| This DBCatz does not share its connections yet. Update DBCatz, then open it once. | An older DBCatz; update it. |
| DBCatz has no saved connections yet. | Add a connection in DBCatz first. |
Ask DialCatz can also propose Open in DBCatz — for example, check in the database whether the last call saved the row.
Deep links
| Link | Does |
|---|---|
dialcatz://open |
Brings the DialCatz window up |
dialcatz://open?site=<DevCatz site id> |
Opens the DevCatz import for that site (nothing happens without your click) |
dialcatz://open?docatz=<compose project> |
Opens the DoCatz import for that project (nothing happens without your click) |
dialcatz://open?docatz=<compose project>&service=<service> |
The same, with that service picked as baseUrl |
dialcatz://connect?server=<url>&code=<code> |
A team invite — see Teams with DialCatz Den |
Shared with every Catzoid app
The theme, the AI connection and key, and the Git accounts are shared; the AI on/off and feature switches are per app. See Shared by the Catzoid apps.
Last updated 2026-11-03