Skip to content
Harry-kpPublic

About

API Client for Purists. 5MB binary. 50ms startup. Keyboard-first Postman alternative built in Rust.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

7 stars

Watchers

1 watching

Forks

Repository files navigation

Mercury

Mercury

API Testing for Purists.
Instant startup. 60fps UI. $0 forever.

Documentation • Download • Roadmap • Requests are files • Why Mercury • Contributing

Release Homebrew Cask Build Status License Platform

GitHub stars Issues Pull Requests Discussions

Mercury: open a collection, send a request, find anything in the response

Watch in higher quality (MP4, 32s)

Quick start

brew install --cask harry-kp/tap/mercury

Launch from Applications, or run mercury. Universal build — Apple Silicon and Intel.

The first launch says the developer cannot be verified: right-click Mercury in Applications and choose Open. Mercury is unsigned because a Developer ID costs $99/year.

Windows, Linux, or without Homebrew

macOS / Linux

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Harry-kp/mercury/releases/latest/download/mercury-installer.sh | sh

Windows (PowerShell)

irm https://github.com/Harry-kp/mercury/releases/latest/download/mercury-installer.ps1 | iex

Then run mercury. The installer puts the binary in ~/.cargo/bin — if the shell can't find it, restart your terminal.

On Windows, SmartScreen says "Windows protected your PC": click More info → Run anyway.

On Linux, to get it in your app launcher:

cat > ~/.local/share/applications/mercury.desktop << 'EOF'
[Desktop Entry]
Name=Mercury
Exec=$HOME/.cargo/bin/mercury
Type=Application
Categories=Development;
EOF

Manual download — every platform, from Releases.

From source — git clone, then cargo build --release.

macOS says Mercury is damaged, or won't open

Right-click in Applications → Open is the normal path. If macOS refuses outright:

xattr -d com.apple.quarantine /Applications/Mercury.app

For the shell installer's binary rather than the app bundle:

xattr -d com.apple.quarantine ~/.cargo/bin/mercury

The Homebrew cask ships a signed, sealed universal .app. Don't hand-build a Mercury.app around the bare binary — an unsigned bundle is what makes macOS call it damaged instead of merely unverified.


Your requests are files

A workspace is just a folder. Subfolders are collections, and every *.json file is one request:

api/
├── .env.dev
├── .env.production
├── users/
│   ├── list-users.json
│   └── create-user.json
└── health.json
{
  "method": "POST",
  "url": "{{BASE_URL}}/users",
  "headers": {
    "Authorization": "Bearer {{TOKEN}}",
    "Content-Type": "application/json"
  },
  "body": "{\"name\": \"Ada\"}"
}

Grep it, diff it, commit it, edit it in VS Code — Mercury picks up outside edits live. headers and body are optional, and headers are written in sorted order so git diffs stay clean.

Environments are .env files in the workspace root. Pick one from the top-right menu or cycle with ⌘ E; {{NAME}} is substituted into the URL, headers and body when you send. Undefined variables are flagged on the tab that holds them. Production shows in red, staging in amber.

# .env.dev
BASE_URL=http://localhost:3000
TOKEN="dev token"

Why Mercury

  • Native, not Electron. Rust + egui draw directly on the GPU. One ~9 MB binary, no runtime, no splash screen.
  • Local only. No account, no cloud, no telemetry. Your secrets stay on your disk.
  • Keyboard first. ⌘ K opens a palette over every request and command, ⌘ F finds anything in a response, ? lists the rest.
  • No setup tax. Type localhost:3000/api, pick JSON or Form, hit send. Mercury fills in the scheme, the Content-Type and the decoding so the first request works.
  • Light or dark. Follows your system theme, or ⌘ D pins one. Vector icons and bundled fonts, so it looks the same on every OS.

What's in it

  • Collections — create, rename, duplicate and delete from the sidebar; outside edits sync live and changes auto-save.
  • Auth — Basic, Bearer or a custom Authorization value, always in sync with the Headers tab.
  • Query params — a table that stays in sync with the URL, both ways.
  • cURL — paste a curl … command into the URL bar to import it; ⌘ ⇧ C copies the request back out.
  • Import — Postman v2.1 and Insomnia (JSON or YAML), with their variables, auth and bodies.
  • Responses — pretty-printed and highlighted JSON, XML and HTML; headers and cookies; ⌘ F to search; save images, binaries or large bodies to a file.
  • History — your last 50 requests from the past 7 days, with full responses. Recent keeps unsaved requests you've sent.
  • Cookies — kept for the session, so login flows just work.

Shortcuts

⌘ is Ctrl on Windows and Linux. Press ? in the app for this list.

Shortcut Action
⌘ ⏎ Send request
⌘ K Command palette
⌘ N New request
⌘ S Save request
⌘ O Open folder
⌘ L Focus URL bar
⌘ E Next environment
⌘ H Toggle history
⌘ R Toggle raw response
⌘ D Toggle light / dark
⌘ F Find in response
⌘ ⇧ C Copy as cURL
⌘ ⇧ F Focus mode
? Keyboard shortcuts
Esc Close find / cancel request / close dialog / clear filter

Tab moves between controls and Space activates the one you land on, so everything is reachable without a mouse.


Defaults

There's no settings screen. These are fixed:

Timeout 30 seconds
Redirects Followed (up to 10)
Largest response downloaded 10 MB
Largest body shown inline 100 KB (bigger ones offer Save)
App data ~/.mercury/ (session, recent, history). Set MERCURY_HOME to use another folder.

What Mercury is NOT

We deliberately don't build cloud sync, team collaboration, AI assistants, plugins, user accounts or analytics. They aren't missing features; we chose to leave them out.


Contributing

PRs are welcome. See CONTRIBUTING.md. The repo is set up for Claude Code: CLAUDE.md holds the conventions, and /fix-issue <number> runs the whole fix-to-merge loop.

cargo run      # run the app
cargo test     # unit tests + a headless UI smoke test

License

MIT. Do whatever you want.


Built with obsessive minimalism.
@Harry-kp

About

API Client for Purists. 5MB binary. 50ms startup. Keyboard-first Postman alternative built in Rust.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

7 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages