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