Skip to main content
A session is one run of heymcp share. It holds the public URL, the handshake report, and every frame that passed through the tunnel.

The three states

Live

The tunnel is connected. Events are arriving now.

Closed

You stopped heymcp share, or the connection dropped past the resume window. The history is still there to read.

Expired

Past the retention window. The session row remains so you can see it happened, but the events are gone.
An expired session shows “This one’s gone to sleep” rather than an empty timeline, so you can tell “nothing happened” apart from “history was pruned”.

Reconnects don’t fork your history

Wi-Fi drops, you close the lid, your VPN reconnects. The CLI backs off and retries, quietly for the first 30 seconds so a blink doesn’t fill your terminal with noise. If it gets back within 15 minutes, it resumes the same session. Same URL, same timeline, events simply continue. You don’t end up with your afternoon split across four session rows. Past that window, the next connection starts a fresh session. Your reserved slug is unchanged, so the URL in your clients still works.

Retention

How long events are kept depends on your plan: The window is stamped on the session when it opens, from the plan in force at that moment. Two consequences, both intentional:
  • Upgrading to Pro does not retroactively resurrect yesterday’s expired history.
  • Downgrading does not delete history you could already see.
Pruning runs hourly and deletes events past the stamped window, leaving the session row behind.

Limits on what’s captured

The tunnel forwards everything. The inspector has bounds, so that a chatty afternoon can’t consume unbounded storage: That marker matters. A visible gap in the timeline is worth much more than a silent one — you’ll never read a timeline as complete when it isn’t.

Concurrent tunnels

Hobby allows 3 tunnels open at once, Pro allows 10. Each heymcp share is one tunnel. Closing the terminal closes it. If you hit the limit, the next heymcp share is refused with a message saying so. heymcp sessions shows what’s currently live.

Exporting

History is readable while it lives, but you can take it with you:
See heymcp export. The JSON export is lossless — request and response are stored as separate events precisely so that an export loses nothing, even though the inspector folds them together for reading.