Tabs name themselves
New tabs auto-derive their name from the URL path. Rename manually and it locks — your name wins.
the best part
No naming, filing, or saving by hand. Pigeon does the librarian work while you work.
New tabs auto-derive their name from the URL path. Rename manually and it locks — your name wins.
Every send auto-saves as a draft and files into a domain tree. No "save as…" dialog, ever.
Every request lands in a time-bucketed log with method, name, and status. Search with ⌘F.
features
A focused toolset for testing REST APIs — built for speed, not for upselling.
Method → URL → params → Send
Color-coded methods, smart URL bar, clean param & auth editors.
Pigeon finishes before other clients start
Native engine — no CORS pain, instant startup, lighter than typical API clients.
Flip env → vars swap → secrets stay blurred
{{var}} for dev, staging, prod — secret masking, plus a red confirm guardrail before destructive methods hit production.
Folder appears → requests nest → count ticks
Auto-filed drafts + curated saves (⌘S). All local.
Paste curl → parse → ready request
Paste any curl → instant request. Copy back out anytime.
Open stream → events land live → Stop
Live event streams render as they arrive — newest on top, Stop anytime.
Shortcuts fire one by one — no mouse needed
Send ⌘↵, environments ⌘⇧E, help ⌘/.
why pigeon
Open the app and send a request. No sign-up walls, no workspace invites, no cloud sync prompts.
Collections, history, and environments live on your disk. Your API keys never touch anyone's cloud.
Built for API work — a fraction of the memory and disk of typical desktop API clients.
open source
MIT-licensed and built publicly on GitHub. Every decision in the open. If it doesn't do what you need, you can change it.
Star the repoHelps other devs discover Pigeon.
Report or requestFound a bug or missing feature? Open an issue.
Send a PRTypeScript + React + Rust. Good-first-issues labeled.
download
Free forever. No account required.
curl -fsSL https://trypigeon.dev/install.sh | shbrew install --cask pigeon-client/pigeon/pigeon