tobi keeps commands running in detachable sessions across your devices.
tobi -- nu spins up a daemon with the command running. the daemon will
automatically detach if you close your terminal window. detached sessions will
be cleaned up after 24h of them being detached. tobi host.id -- nu creates
a session on that target, and since host is optional you can tobi .id -- nu
to create a session with that specific id! hosts can carry a user
(tobi you@host.id) when your ssh config doesn't already set one, or you want
to use a different user.
you can access it from any of your other devices on your tailscale network by
running tobi, which opens up a fuzzy selector with all the sessions across
your network, one row per host: enter on a host row starts a login shell there,
so you can open a session without leaving the picker, and ctrl+x on a session
kills it. hosts that are offline or
unreachable are listed but can't be picked. you can also just do tobi hx,
tobi host.<TAB> or tobi hs.id to attach a session using fuzzy search.
unlike tmux, tobi doesn't nest. running tobi inside a tobi session will just replace your session with the target session. multiple viewers can attach to a single tobi session (in that case minimum terminal size will be used).
clipboard images #
tobi passes osc 5522 (kitty's clipboard protocol, used for pasting images) and
the CSI ? 5522 $ p probe that detects it through to your terminal. with
several viewers attached, only the one that typed last sees them, so one paste
doesn't prompt every terminal. your terminal still has to implement it.
requirements #
tobi uses tssh if it's in PATH, otherwise ssh. tailscale binary is only
required for discovery to function, nothing else.
installation #
there is a nix flake so you can use that, just do
nix profile add git+https://tangled.org/ptr.pet/tobi.
or nix-env -f . -i tobi (or nix profile add -f .).
otherwise get go and compile it!
if you run target tobi to a host that doesn't have it, then tobi will install
itself onto the user's ~/.local/bin (or equivalent) automatically, or upgrade
an outdated tobi if the one on the target host is a different version.
if you use the nix package or build with carriers (see ./scripts) then you can infect other machines with tobi as long as the os/arch is supported, which are linux amd64, arm64 & macos arm64.
acknowledgements #
charm ui libs and tailscale. llms were also used while making this (i leave how much up to the reader if you care ^^).