Wiretide 1.0 is almost here

Your app talks HTTP and MQTT.
Now you can watch both.

Wiretide is a native macOS debugging proxy that puts HTTPS requests, WebSocket frames and MQTT packets in one timeline, then lets you pause, rewrite, script and replay them.

Free to capture and inspect · macOS 14 Sonoma or later · Apple silicon and Intel

Wiretide's timeline: HTTPS requests, MQTT CONNECT, SUBSCRIBE and PUBLISH packets and WebSocket text frames in one list, with a JSON response and its timing open in the inspector.
  • GET 200HTTP & HTTPS
  • TEXTWebSocket
  • PUBLISHMQTT 3.1.1 & 5
  • TLSover TCP, TLS or WebSocket

Free features

Everything a debugging proxy should do, without the protocol blind spot.

Decrypt HTTPS

A local root certificate issues per-host certificates on the fly. Install it on a device or straight into the iOS Simulator from Settings.

Decode MQTT

Every packet from CONNECT to DISCONNECT, for MQTT 3.1.1 and 5, with properties, QoS, retain flags and topic aliases resolved.

Follow WebSockets

Upgrades over HTTP or decrypted HTTPS are relayed with every frame decoded. MQTT-over-WebSocket subprotocols show up as MQTT.

Search and filter

Full-text search across URLs, headers, bodies, topics and payloads, plus one-click filters for JSON, media, errors and publishes.

Spot pinned hosts

When a client rejects the certificate, Wiretide says so instead of failing silently. Bypass the host with one click.

Timing and export

DNS, connect, TLS, waiting and download phases for every request. Export HAR 1.2 for HTTP and JSON Lines for MQTT.

One-click setup

Start capture and Mac apps and the iOS Simulator go through Wiretide, with no proxy settings to change. Your old settings come back when you stop.

Readable bodies

gzip and deflate responses are decoded, so bodies are readable, searchable and work with rewrites and scripts. JSON gets a tree view.

Built for MQTT

See your broker conversation, not a wall of bytes.

Most proxies stop at HTTP. IoT and real-time apps don't. Point your app at a local port and Wiretide relays it to your broker, decoding every packet on the way through.

  • Plain TCP, TLS or WebSocket. For MQTT over TLS it terminates and re-encrypts, so you see the packets without changing the broker.
  • A live topic tree. Browse home/kitchen/temperature the way you think about it, with the last payload, message rate and counts per topic.
  • Charts from your payloads. Pick a numeric JSON field and watch it change over the session.
  • Session context. Client ID, protocol version, keep alive and per-direction topic aliases are tracked per connection.
The MQTT topic tree with last payloads and rate sparklines, and a chart of the celsius field for home/kitchen/temperature in the inspector.
The MQTT packet list with a packet open in the inspector.

Saved Sessions

Every capture is saved. Go back to any of them.

Each recording becomes a session you can name, reopen and share. Open last week's bug repro in the timeline while live capture keeps recording behind it.

  • Grouped by day. The Saved Sessions window (⇧⌘O) lists every session with its HTTP, MQTT and WebSocket counts.
  • Newest in the sidebar. The three most recent sessions are one click away, with a link to the rest.
  • Back to live in one step. A banner over the timeline returns you to live capture (⇧⌘L).
  • Rename, export or delete. Export any session as HAR or MQTT JSON Lines.
The timeline showing a saved session called Login bug repro, with a Back to Live button and the three newest sessions in the sidebar.
The Saved Sessions window listing sessions by day, with event counts for HTTP, MQTT, WebSocket and other traffic.

Pro tools

Don't just watch the traffic. Change it.

Test the edge cases your backend can't give you on demand: a slow response, a missing field, a broker that sends 41.5 °C. Pro works on HTTP and MQTT alike.

Breakpoints

Pause a request before it leaves, or a response before your app sees it.

Edit the method, URL, headers, status or body in place, then continue, return your edit or abort.

  • Match by host, path and method, on requests, responses or both
  • JSON editor with formatting and validation
  • Edited exchanges are marked in the timeline
A paused response: status 200, its headers and a JSON body ready to edit, with Abort, Reset, Continue and Return edited buttons.
Map & Rewrite

Mock an endpoint, point it at localhost, or fix a header on the fly.

Rules apply live as traffic flows, with no restart and no code changes in your app.

  • Map Local answers from an inline body or a file
  • Map Remote sends matching requests to another server
  • Rewrite URLs, headers, query, status, body and JSON values
  • MQTT rules rewrite topics, payloads and retain flags over TCP, TLS and WebSockets
The Map & Rewrite window with a rule that sets a header, sets a JSON value and replaces Cache-Control.
An MQTT rule that sets the celsius value and rewrites the topic of matching PUBLISH packets.
MQTT publish & replay

Send any message to your broker, or replay one you captured.

Pick a topic, QoS, retain flag and MQTT 5 properties, then send once or on a repeat to test how your app copes.

  • Replay a captured PUBLISH with one click
  • JSON, text or hex payloads
  • Send N times at a fixed interval
The Replay message sheet with a topic, QoS 1, retain on, MQTT 5 properties, a JSON payload and Send 5 times every 500 ms.
Scripting

When a rule isn't enough, write a little JavaScript.

Define onRequest, onResponse or onPublish to edit traffic, or answer locally with respond().

  • Highlighted editor with a live syntax check and templates
  • Console output, errors and a trial run on captured traffic
  • Runs on HTTP, MQTT and MQTT over WebSockets
The Scripts window with an onResponse script that marks every device online, and a console showing its output.

A closer look

Native, fast and at home on your Mac.

Written in SwiftUI on top of SwiftNIO. Dark and light mode, universal for Apple silicon and Intel, and no Electron.

Pricing

Free to capture. Pay once for the power tools.

Capturing and inspecting stay free. Pro is a one-time purchase with 12 months of updates, and the version you have keeps working forever.

Free

$0

Forever, for capturing and inspecting.

  • HTTP, HTTPS, WebSocket and MQTT capture
  • MQTT packet list, topic tree and payload charts
  • Search, filters and request timing
  • HAR and MQTT JSON Lines export
  • Saved Sessions window, keeps your 3 newest sessions
Get notified

Pro

$79one time

Includes 12 months of updates. Keep using your version forever.

  • Everything in Free
  • Breakpoints for requests and responses
  • Map Local, Map Remote and Rewrite
  • MQTT rewrite rules, including over WebSockets
  • MQTT publish and replay
  • JavaScript scripting
  • Unlimited saved sessions
Get notified at launch

Prices in USD. Tax is calculated at checkout.

FAQ

Questions

Does my traffic leave my Mac?

No. Captures are stored locally in a SQLite database on your Mac, and scripts run on your Mac too. The only network calls the app makes on its own are checking your Pro license with the store and checking for updates.

What's free and what needs Pro?

Capturing and inspecting everything is free: HTTP, HTTPS, WebSocket and MQTT, search, timing, export and your 3 newest saved sessions. Pro adds the tools that change traffic (breakpoints, map and rewrite, MQTT publish and replay, scripting) and keeps unlimited saved sessions.

Why isn't it on the Mac App Store?

A debugging proxy needs to run a local proxy, install a root certificate and talk to the iOS Simulator, which the App Store sandbox doesn't allow. You download Wiretide from this site, and it updates itself.

How do I capture MQTT?

Add your broker in Settings. Wiretide listens on a local port, for example localhost:18830, and forwards to the broker. Point your app at that port. MQTT over WebSocket is picked up automatically through the HTTP proxy, and rules and scripts apply there too.

Does it work with the iOS Simulator and real devices?

Yes. The Simulator uses your Mac's proxy settings, and Settings can install the root certificate into a booted Simulator for you. For a physical device, set the Wi-Fi proxy to your Mac and trust the certificate on the device.

What happens after my 12 months of updates?

Pro keeps working forever on every version released within 12 months of your purchase. Renew if you want the newer ones. A license also keeps working offline for 30 days between checks.

Get Wiretide 1.0 the day it ships.

Watch the repository's releases on GitHub (Watch → Custom → Releases) and GitHub tells you when 1.0 is out.