Docs · DialCatz

Settings and shortcuts

Every DialCatz keyboard shortcut and menu, every setting, themes, updates, About, bug reports, uninstalling, where your data lives, troubleshooting, and how DialCatz works with DevCatz, DBCatz and DoCatz.

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 State and Preferences);
  • 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 *.localhost are 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:

  1. Choose the Site (name — domain (framework) · running) and, when the site has several, the App — where requests go.
  2. Choose what comes in:
    • Environment, DevCatz · <site>, with baseUrl set to the app’s URL (and siteUrl when it differs). Importing again refreshes these values and keeps any variables you added by hand.
    • Add its .env variables — the site’s .env names 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 --json in 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.json or /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.

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> or services/<service>, or the docs/ 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:

  1. Choose the Project (name — its API services · running, or · stopped).

  2. 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.

  3. Choose what comes in:

    • Environment, DoCatz · <project>, with baseUrl set to the chosen service’s address (with All, the first service that has one) and a <service>Url variable 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 .env in 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 --json inside 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 their docs/), then the top level, docs/, api/, openapi/, swagger/ and each app under apps/ of a monorepo — else one a service serves at the usual paths, NestJS’s /api-json and /docs-json included. When that document sits behind Basic auth, the user and password the project’s .env sets for it (SWAGGER_USER / SWAGGER_PASSWORD, DOCS_…) are tried after a 401.

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 :id and {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.

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