Changelog
v0.3.1
The wire-protocol baseline remains 0.1.
Added
ssh-obi-server --detach --session IDdetaches the attached client from a selected session on the same server host. Usessh-obi-server --listto find session IDs, including non-current sessions.
Notes
- Bare
ssh-obi-server --detachretains its existing behavior and targets the session identified by the remote shell environment.
v0.3.0
The wire-protocol baseline remains 0.1.
Added
- Negotiated
keepalive.v1heartbeats work automatically for attached sessions; users do not need to configure unfamiliar SSH options. - The client sends a ping every 15 seconds and requires the matching pong within 45 seconds. An unresponsive connection enters the existing reconnect flow.
- A broker that negotiated keepalive releases its daemon attachment when no client ping arrives for 45 seconds, making the session available for reconnect.
Notes
- Older clients and brokers do not negotiate
keepalive.v1and retain the previous connection behavior.
v0.2.1
The wire-protocol baseline remains 0.1.
Added
--detach-connectselects and takes over an existing session.--session IDoverrides automatic selection.--obi-versionreports the package version from the client and server.- Remote bootstrap compares the server package version with the local client’s compiled version. Missing support or an older server enters the install path.
Changed
- Reconnection retries temporary SSH, DNS, and routing failures indefinitely, with capped exponential delays from 1s through 120s.
- Retry deadlines use suspend-aware monotonic machine time, and the terminal is restored for interactive OpenSSH prompts during recovery.
server-binis enabled by default, socargo install ssh-obiinstalls the remote server on OpenBSD without extra feature flags.
Fixed
- Login shells inherit the launching process’s umask rather than being forced
to umask
0000. Daemon sockets retain explicit owner-only permissions inside their private per-user directory.
v0.1.3
Released for the 0.1.x protocol line.
Added
- New sessions print the remote host MOTD before the shell starts, using
/run/motd.dynamic,/etc/motd, and readable non-empty files under/etc/motd.d/. A user~/.hushloginsuppresses this MOTD output.
Changed
- Automatic reconnect retries now use a small capped exponential backoff: 125ms, 250ms, 500ms, 1s, then 2s, with a maximum of 10 attempts.
Notes
- The protocol baseline remains
0.1.
v0.1.2
Released for the 0.1.x protocol line.
Added
- On Linux systems booted with systemd and a user bus, newly spawned PTY
children are moved into a transient user scope before exec. This follows the
same systemd
StartTransientUnitshape used by tmux >= 3.2 for cgroup detaching, and falls back cleanly when systemd is unavailable. - During automatic reconnect, if the target session still reports
SessionBusy, the client asks the stale attached client to detach and then retries the reconnect. - The Unix bootstrap reports an explicit OpenBSD message when no compatible
server is already installed. OpenBSD has no prebuilt release tarballs; install
a Rust toolchain and run
cargo install --features server-bin ssh-obi. ssh-obi-server --listlists currently alive sessions for the remote user on the server host, including busy sessions and a marker for the current session when run inside anssh-obisession.
Fixed
- OpenBSD install-only bootstrap runs now complete successfully when a
compatible
ssh-obi-serveralready exists at~/.cargo/bin/ssh-obi-serveror onPATH.
Notes
- The protocol baseline remains
0.1. - Non-systemd Linux systems and non-Linux Unix systems do not require any systemd tooling.
v0.1.1
Released for the 0.1.x protocol line.
Added
- The client sends an initial terminal window size before attach and new-session
requests when the remote server supports
initial-window-size.v1. - New sessions create the remote PTY with the local terminal size when that size is available.
- Reattaches apply the local terminal size before replaying buffered output.
- The Unix bootstrap detects compatible
ssh-obi-serverbinaries in three places before trying a tarball install:~/.ssh-obi/bin/ssh-obi-server,~/.cargo/bin/ssh-obi-server, andssh-obi-serverfound onPATH.
Notes
- The protocol baseline remains
0.1;initial-window-size.v1is negotiated as a capability. - Platforms without a published release tarball can still be used as remote
servers when a compatible
ssh-obi-serveris installed by Cargo or a distro package.
v0.1.0
Initial public release.
Added
- Local
ssh-obiclient and Unix remotessh-obi-server. - Per-user long-lived remote sessions.
- Attach, new-session, list, and detach commands.
- Reconnect to a known session after ambiguous disconnects.
- Bounded replay of recent output on reattach.
- Shell exit status forwarding.
- Unix bootstrap install flow and Windows client-only bootstrap flow.