Tutorial 5: Laptop + Always-On Mac Mini
Sessions live on the Mini; your laptop and phone are clients. No manual host configuration — ccmux auto-discovers every ccmuxd on your tailnet. Open the Network screen (7) to see every machine, color-coded by reachability.
Install ccmux on both computers and connect them to the same tailnet. Enable SSH access to the host and confirm your laptop can sign in before attaching to a remote session.
On the Mini
# ~/.config/ccmux/config.toml
[daemon]
listen_tailnet = true
tailnet_port = 7474
ccmux daemon install # register ccmuxd under launchd so it survives reboot
On the laptop
After completing the prerequisites above, open the dashboard:
ccmux # the Mini already appears on the dashboard, tagged "discovered"
Every refresh, ccmux runs tailscale status --json, probes each online peer for ccmuxd /v1/health, and merges responders into the host list.
Devices panel
The Dashboard’s right panel shows each tailnet peer:
- peers running ccmuxd — version + “update available” if behind your build
- peers without ccmuxd — “ccmux not installed” hint
- phones / iPads — “connect via Moshi app” hint
Press 7 in the TUI to open the Network screen, which lists every known host and lets you open an SSH shell directly.
Attaching to a remote session
ccmux execs ssh -t <host> -- tmux attach -t <name>. Pin the host to attach with Mosh instead:
ccmux host add mini mini.tail-xxxxx.ts.net
Pinned hosts use Mosh unless you add --mosh=false. Ports go in flags, not the address: --port for ccmuxd (default 7474), --ssh-port for sshd (default 22).
Mosh can reconnect after the client changes networks or wakes from sleep. The remote host still needs to remain awake and online.
From a shell
Once the Mini is pinned, the session commands take --host:
ccmux list --host mini
ccmux attach --host mini api # starts the Mini's c-api if it isn't running
ccmux rename --host mini c-api api-old
ccmux kill --host mini api-old
They act on the Mini’s sessions only. Your laptop’s own c-api is left alone.
Keeping versions in sync
The Devices panel tags any peer that’s behind your build with “update available”. SSH in and run ccmux update to bring it in sync, or press 6 (Settings) → r (refresh) to re-check.
Help improve ccmux
Found a bug, an unclear guide, or a translation that could read better? Contributions of any size are welcome. Open an issue or send a pull request.
Spotted an error or something out of date? Open an issue on GitHub.