Skip to content

Build zmx-backed persistent SSH terminals with CLI and TUI - #1

Merged
DeepakSilaych merged 2 commits into
mainfrom
feat/zmx-cli-tui
Sep 15, 2026
Merged

DeepakSilaych merged 2 commits into
mainfrom
feat/zmx-cli-tui

Conversation

@DeepakSilaych

@DeepakSilaych DeepakSilaych commented Sep 15, 2026 •

Copy link
Copy Markdown
Collaborator

What changes

Replace the Bash/tmux implementation with a Go client and zmx-backed SSH sessions. A user can prepare a VM, select a default SSH host, create a named terminal, detach, and return to the same shell. Explicit detach and shell exit stop the connection; transient SSH failures reconnect to the original session identity.

  • Implement init, set --host, new/n, attach/a, remove/rm, ls, detach, doctor, and completion. -h selects a host; --help shows help. Add new --detach, ls --json, and ls --quiet for scripts.
  • Add an asynchronous Bubble Tea browser with filtering, host switching, create/attach/remove actions, terminal handoff, responsive layout, and persistent error messages.
  • Install an embedded, platform-specific remote helper and SHA-256-verified zmx 0.8.1 without sudo. Use a private zmx namespace, validated arguments, a versioned SSH protocol, session IDs, and atomic local configuration.
  • Replace obsolete npm packaging and wake-up hooks with cross-platform build/release scripts, generated completions, and updated user documentation.

Validation

  • make test: race-enabled unit tests and go vet pass on macOS ARM64; the same Go checks also pass independently in Linux ARM64 Docker.
  • Native macOS zmx tests: create, duplicate rejection, identity validation, remove, and empty list pass.
  • Real OpenSSH + zmx in a disposable Debian Docker container: provisioning, aliases, host overrides, persistence across detach, forced SSH disconnect/reconnect, multiple clients, detach-all, shell exit, attach-only semantics, removal, TUI create/attach/return/remove, and isolation from ordinary zmx sessions pass.
  • Built client and remote-helper targets for macOS/Linux on AMD64/ARM64. Inspected a rendered capture from the real TUI integration run.

Compatibility

This is the 0.6 development interface. Existing tmux sessions and ~/.sess data are left untouched; live tmux sessions cannot migrate to zmx. Session commands require key authentication available to OpenSSH batch mode. zmx is pinned to 0.8.1; unsupported managed versions are not silently replaced. Live sessions do not survive VM reboot/backend loss. Runtime integration was exercised with a macOS ARM64 client and Linux ARM64 VM; the other targets are cross-built.

Validation was run locally. No GitHub Actions workflows are included.

@DeepakSilaych
DeepakSilaych marked this pull request as ready for review September 15, 2026 09:05
@DeepakSilaych
DeepakSilaych merged commit 3246e1f into main Sep 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant