TRUSTMUXD(1)
π TRUSTMUXD π
okay so real talk: this is the TRUSTMUXD(1) page, aka the glow-up doc for the Trustmux daemon, and I'm gonna walk you through it like we're texting at 2am. grab a boba, bestie, we're learning. π§
β¨ NAME β¨
trustmuxd β the Trustmux daemon. think of it as the mobile companion app situation for your tmux / Byobu sessions. she's the one holding it down in the background so your sessions look cute on your phone. π
π SYNOPSIS π
trustmuxd [--host ADDR] [--port PORT] [--name NAME] [--https]
[--self-signed] [--advertise SOURCE] [--no-advertise] [--version]
π¦ DESCRIPTION π¦
so basically trustmuxd is a lightweight little daemon β she's not doing the most, she's doing exactly enough β and what she does is serve up a mobile-optimised web interface so you can monitor and interact with your tmux and Byobu sessions over your Tailscale private network. no public internet nonsense, just you and your sessions in their own private group chat. π«Ά
she serves a Progressive Web App (PWA) over HTTPS. iconic behavior.
now, the way she runs depends on the mode:
- Default mode: she binds to the Tailscale interface and lets
tailscale servehandle TLS termination for her. she's not doing her own crypto, she's outsourcing. queen of delegation. π - Direct mode (that's
--self-signed): she generates her own self-signed ECDSA certificate and binds directly on the network interface. self-sufficient, independent, main character energy. β¨
Auth works like this: 6-digit one-time pairing codes (generated with trustmux-pair(1)) and permanent per-device session tokens stored per instance β the file deets are down in FILES, don't worry, we'll get there. π
and lowkey the most important thing: in normal use, you don't even invoke the daemon by hand. she's managed viatrustmux(1). so like, yes you can call her directly, but in practice your bestietrustmux(1)does the introducing. π
π OPTIONS π
the full menu, no skips, no "you get the idea," we're doing all of them fr fr:
--host ADDRβ the bind address. default is your Tailscale IP, or127.0.0.1when you're running with--https. π--port PORTβ which TCP port she's listening on. default:7432. π’--httpsβ HTTPS mode, bestie! trusts proxy headers and sets theSecurecookie flag. use this one withtailscale serve. (this is the "let tailscale do the TLS, I'll just look pretty" setting.) π--self-signedβ generates a self-signed ECDSA P-256 TLS certificate so you get direct HTTPS access without Tailscale. she made it herself, no cap. π--name NAMEβ which instance's state and runtime files to use. default:default. every instance gets its own tokens, TLS keypair, log, admin socket and pid file, which means you can run several daemons side by side and they won't fight over anything. sibling energy, not rivalry energy.trustmux (1)passes this through when it starts a daemon. π―--advertise SOURCEβ the address to publish and to name in the TLS certificate, for when it's not the one this host can see. Repeatable β stack 'em up.SOURCEcan be:- a literal
HOST - a
HOST:PORT - a full URL
- or
cmd:PROGRAM, which runsPROGRAMand reads one address per line off its standard output. π₯οΈ
- a literal
sources get resolved once, at startup β before the certificate is generated and before the admin socket is bound. and if any of them fail to resolve? the daemon stops. like, no warning, no "eh it's probably fine," she's done. what counts as a failure:
- a non-zero exit
- no output
- a blank line
- a value that isn't an address
- or more than 5 seconds across all sources
this is the same way she handles an unavailable TLS implementation. because a broken URL or a certificate for the wrong host isn't something a lil warning is gonna fix, babes. ππ
the resolved addresses get reported over the admin socket, and that's how trustmux pair and trustmux status print exactly what the certificate attests. receipts, literally. π§Ύ
when you give neither --advertise nor --no-advertise, the daemon reads TRUSTMUX_ADVERTISE and then the instance's own configuration file. trustmux (1) always passes one or the other, so a daemon it starts uses only the sources it resolved. see trustmux(1) for the full source syntax. π
--no-advertiseβ advertise nothing. ignoresTRUSTMUX_ADVERTISEand the instance's configuration file entirely. she's off the grid, she's mysterious, she's not telling anyone her address. π--versionβ prints the version and exits. short and sweet. β
π FILES π
paths follow the XDG base directories, with one subdirectory per instance. wherever you see INSTANCE below, that's the --name name. trustmux (1) documents the full layout, the fallbacks, and the TRUSTMUX_*_DIR overrides β so go there if you need the deep lore.
$XDG_CONFIG_HOME/trustmux/instances/INSTANCE.jsonβ optional, hand-written: the advertise sources for this instance, read when neither--advertisenor--no-advertisewas given. refused if it's writable by group or other β because a source can name a program to run, and that's a whole security vibe we're not playing with. π«$XDG_STATE_HOME/trustmux/instances/INSTANCE/tokens.jsonβ the persistent session tokens (mode0600). π$XDG_STATE_HOME/trustmux/instances/INSTANCE/cert.pemβ the self-signed TLS certificate (mode0644), created on the first--self-signedstart. πͺͺ$XDG_STATE_HOME/trustmux/instances/INSTANCE/key.pemβ the TLS private key (mode0600). guard this one with your life, bestie. π$XDG_STATE_HOME/trustmux/instances/INSTANCE/trustmux.sockβ the admin Unix socket (mode0600), used bytrustmux-pair(1)andtrustmux-unpair(1). π§¦
π₯ SEE ALSO π₯
go read these too, they're all part of the friend group:
trustmux(1)trustmux-pair(1)trustmux-unpair(1)trustmux-enable(1)trustmux-disable(1)byobu(1)tmux(1)
π AUTHOR π
Dustin Kirkland <kirkland@ubuntu.com> β the actual legend who made all of this happen. put some respect on the name. π
and that's the whole page, bestie!! shoutout to the trustmux package, this edition dated 2026-05-28. now go pair your phone and monitor some sessions, you've got this. slay, periodt, and remember: your sessions deserve main character energy too. πβ¨ππ¦πΈππ
π«Άπβ
π¦ where this page comes from
- nixpkgs unstable: byobu 7.18
- ubuntu stonking: byobu 7.20-0ubuntu1 Β· GPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms