Ports and files
On this page
Every port Short Leash listens on is on 127.0.0.1. Everything it writes is under Short Leash's own folder, apart from the few files listed under Files outside Short Leash's folder.
Ports
Everything listens on 127.0.0.1 only.
| Port | What |
|---|---|
| 80, 443 | Sites over HTTP and HTTPS (opened by launchd, handed to Short Leash) |
| 5354 | DNS for .test names |
| 2525 | Mail (SMTP) |
| 9003 | Your editor, for Xdebug (Short Leash connects to it) |
| 3306, 5432, 27017, 6379, 7700, 9000, 8080 | MySQL and MariaDB (whichever starts second takes the next free port), PostgreSQL, MongoDB, Valkey and Redis (whichever starts second takes the next free port), Meilisearch, RustFS, Reverb (each one changeable) |
| 8108, 8107 | Typesense's API and its peering service, on macOS (they move together) |
| Others, chosen at random | Dev servers, the dump collector, Mailpit's API and the share listener |
Files outside Short Leash's folder
| Path | Written by | Removed by |
|---|---|---|
/Library/LaunchDaemons/dev.shortleash.daemon.plist |
Setup | Settings › Remove |
/etc/resolver/test |
Setup | Settings › Remove |
| Short Leash Local CA in your login keychain | Setup | Settings › Remove |
A block marked “Short Leash” in ~/.zshrc |
Settings › Terminal, when you turn it on | Turning it off |
Short Leash's folder
~/Library/Application Support/Short Leash holds everything else:
| Path | What |
|---|---|
config.toml |
Settings, parked folders, links and site settings |
secrets/ |
Share password, Cloudflare tokens and webhook signing secrets (readable only by you) |
trust.json |
Folders you trusted to run what their leash.toml asks (readable only by you) |
db/ |
Short Leash's database: webhook deliveries, task lists, terminal details and per-minute request counts, with its daily copy and big webhook bodies in blobs/ (readable only by you) |
terminals/ |
The end of each terminal's output (readable only by you) |
pair/ |
Your Pair avatar, avatar.jpg, as Short Leash shrank it (readable only by you) |
ca/ |
The certificate authority |
certs/ |
Certificates issued for your sites |
generated/ |
PHP and PHP-FPM configuration Short Leash writes (rebuilt as needed) |
runtimes/ |
PHP and Node versions (Python versions are managed by uv) |
services/ |
Service binaries and data |
php/conf.d/ |
Your own PHP .ini files |
php/<version>/conf.d/ |
Your own PHP .ini files for one version, e.g. php/8.4/conf.d/, read after php/conf.d/ |
composer/ |
Short Leash's Composer home (global packages such as the Laravel installer) |
bin/ |
php, composer and leash for your terminal, Composer itself and cloudflared |
run/ |
Sockets for Short Leash and PHP |
logs/ |
Logs from the background service |
leash-ports/ |
An empty file for each port Short Leash gives one of its own processes, locked while it's claimed, so two copies of Short Leash running side by side never take the same one. It's here even when LEASH_HOME points Short Leash at another folder, so every copy of Short Leash you run shares it. Readable only by you; a file goes when its claim does |
Looking inside Short Leash's database
db/leash.db is a SQLite database. To look without changing anything, open it read-only:
sqlite3 'file:'"$HOME"'/Library/Application Support/Short Leash/db/leash.db?mode=ro' '.tables'
Keep leash.db-wal and leash.db-shm next to it: they hold the latest changes. Don't copy or edit the file while Short Leash runs. If it's ever damaged, Short Leash moves it to leash.db.corrupt-<time> when it next starts and restores the daily copy, leash.db.bak-daily.