Section 01 · Start
Principles.
Six commitments. They're load-bearing — every other page in this manual is downstream of one of these. When a decision is hard, come back here.
01 · The wire is the source of truth
If a value isn't on the wire, it isn't real. Probes show raw bytes, headers, response codes, latencies. We don't pretty-print things into oblivion. JSON gets a tree view next to the raw body, never instead of it. The user is here because their abstraction lied to them; we don't add another.
02 · Density without claustrophobia
The app handles a lot of state — projects, probes, chains, history, proxy traffic. We respect users' time by showing more on screen than a marketing-driven UI would. But we do it with deliberate spacing, not by cramming. Use the spacing scale. Use whitespace as a separator before borders.
Rule of thumb: if you're tempted to add a third border or a third background tone to separate two things, you needed more space, not more chrome.
03 · Mono for facts, sans for prose
Anything that's a literal — URL, header value, hex, hostname, port, hash, ID, file path, status code, byte count — is mono. Anything that's a sentence is sans. Anything that's a label or a brand surface is the display face. Don't mix the rules.
04 · Color carries meaning, not decoration
Neon green = your primary affordance and "this worked." Yellow = warning or SMTP. Red = error or destructive. Violet = chains and LDAP. Blue = HTTP and informational. Lime = IMAP and success. Don't introduce a sixth colour because a button feels lonely. The protocol palette is part of the language users learn — don't muddy it.
05 · Honesty over optimism
Empty states tell you what to do, not how clever the product is. Errors give you the failed bytes and a remediation, not an apology. Loading states show what's happening (resolving DNS · connecting · TLS handshake · waiting for response), not a generic spinner. The audience is people who debug systems for a living — be precise.
06 · No marketing chrome in product surfaces
The website can have gradient text and pulsing dots and "Most popular" badges. The application can have none of that. In-app, gradients appear only on hero/empty-state illustrations. Pulse animations exist only for genuinely live things ("server connected", "probe streaming"). Star ribbons, "Pro!" sparkles, holographic cards — none of it. Ever.
What we don't optimise for
- Discoverability for novices. The user knows what HTTP is. We're not naming "POST" something else.
- Looking like the competition. Postman has a paradigm. We have a different one. Borrowing component shapes from them only confuses people who chose us for not being them.
- Surface novelty. Custom-shaped buttons, animated gradients on data-grids, illustrated empty states with five colours — they age into embarrassment. Plain shapes age into neutrality.