mossferry
<p align="center" <a href="https://mossferry.muslewski.com"<img src="https://img.shields.io/badge/website-mossferry.muslewski.com-3dff9a?style=flat-square&labelColor=02060c" alt="Website"</a <a href="https://www.npmjs.com/package/mossferry"<img src="https://img.shields.io/npm/v/mossferry?style=flat-square" alt="npm"</a <a href="https://github.com/muslewski/mossferry/discussions"<img src="https://img.shields.io/badge/discussions-join-3dff9a?style=flat-square&labelColor=02060c" alt="Discussions"</a <img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT" </p
mossferry opens a remote repository’s tmux session from your laptop in one command, over mosh or ssh, with an fzf picker.
You sit at one machine; the repo and its long-running panes live on another. You want to be inside that session in tmux, leave and come back, and survive a dropped network link without losing the work. Everyday command: ferry.
Site: mossferry.muslewski.com
|>
__|__ __
__|_o_o_|__ / _|___ _ _ _ _ _ _
_|___________|_ | _/ -_) '_| '_| || |
\ o o o / |_| \___|_| |_| \_, |
~~~\_____________/~~~~~~~~~~~~~~~~~~~~~~~~ |__/ ~~<p align="center"<img src="./assets/demo-picker.gif" width="720" alt="ferry picker demo"</p
---
Happy path
Two sides: laptop (where you type ferry) and host (where tmux and the repos live). Both need the package on PATH.
| Side | Package bins | External tools (from reading the code) | |------|--------------|----------------------------------------| | Laptop | ferry / mossferry | ssh; mosh when FERRYTRANSPORT=mosh (default — doctor always checks local mosh); optional local grok for FERRYWRAP | | Host | repo-session | tmux (all session logic); mosh-server when clients use mosh; fzf optional (numbered menu fallback); ss + /proc only for the servers face |
The fzf picker runs on the host inside the hop — a Mac laptop does not need local fzf or local tmux for normal ferry use. Install tmux on the laptop only if you run repo-session there (local host / single-machine setup).
1. Install (runnable anywhere)
npm install -g mossferry # bins: ferry | mossferry | repo-session
# or clone the repo and run ./install.sh on that machine
ferry --help # printed locally; no networkmacOS laptop (Homebrew): package via npm as above, plus transport:
brew install mosh # default FERRY_TRANSPORT=mosh; doctor FAILs without local mosh
# brew install tmux # only if you also run repo-session on this MacStock /bin/bash on macOS is 3.2 — fine for the client; see Troubleshooting → macOS client.
ferry --help ends with a version line like: