tool for detachable ptys with optional tailscale discovery
readme.md

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).

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 ^^).