Troubleshooting
Steps for diagnosing connection problems between the Pocketmux mobile app and a host running pmux. For installation problems (PATH, Gatekeeper, checksums), see the Installation guide.
First checks
Start with the agent's own view of the world:
pmux status # version, agent state, session count, paired device
pmux agent status # is the background agent running?
If the agent is not running, start it with pmux agent start (any pmux command also spawns it automatically). If the mobile app shows the host as offline even though the agent is running, the agent's connection to the signaling server is the usual suspect — check the log:
tail -f ~/.config/pmux/agent.log
For more detail, set log_level = "debug" in ~/.config/pmux/config.toml (or PMUX_LOG_LEVEL=debug) and restart the agent with pmux agent restart.
Host shows offline in the app
The signaling server marks a host offline after 90 seconds without a heartbeat. Common causes:
- The host is asleep. A sleeping machine drops its signaling connection, and the mobile app cannot wake it. Enable
power.keep_awaketo hold the host awake while the agent runs. - The host's network changed (Wi-Fi switch, VPN up/down, laptop moved). The agent reconnects to the signaling server automatically on the
connection.reconnect_intervalschedule (default every 5 s) — give it a few seconds, then refresh the host list in the app. - A firewall is blocking the agent. Host firewalls sometimes re-prompt or silently block the agent after a version upgrade. Check your firewall's allowed-apps list for
pmuxand re-approve it.
Connection drops mid-session
The terminal session itself runs over a direct WebRTC connection between phone and host; tmux keeps your session alive on the host regardless, so nothing is lost — reconnecting reattaches to the same session.
- Network transition on the phone (Wi-Fi ↔ cellular): the app re-establishes the connection; reopen the session from the host list if it doesn't recover on its own.
- Repeated drops on one network: some networks (corporate NAT, CGNAT, hotel Wi-Fi) block peer-to-peer paths. Verify whether the TURN relay fallback works by forcing relay-only mode on both ends — a relay-only connection that succeeds while normal mode keeps dropping points at the direct path being unstable on that network.
Isolating the failing layer
Work down the stack:
pmux status— agent running and paired?pmux config— server URL correct? (server.url, defaulthttps://signal.pmux.io)~/.config/pmux/agent.log— signaling connect/reconnect lines, and on connect the selected ICE candidate pair (usingRelayflag).- In the app, Settings → Logs — the negotiated transport is logged on connect (
P2P directvsTURN relay). - Force TURN relay on both ends to cleanly separate "TURN is broken" from "ICE in general is broken".
Still stuck?
Open an issue on the pmux-agent issue tracker with:
pmux --versionoutput and your OS- the relevant lines from
~/.config/pmux/agent.log(debug level if possible) - what the mobile app's Logs screen shows for the failed connection
For security-sensitive reports, follow the vulnerability disclosure policy instead of filing a public issue.