tenax

Reference / The Tenax CLI

One job.
One command.

Use the app on your device. Use tenax to set up a host or open the same sessions from a terminal.

New here? Get started. These commands use your saved sign-in.

Sign in from a terminal

Run these on the computer where you use the CLI. Host installation is separate; see Get started.

Sign in from a terminal commands
CommandWhat it does
tenax loginSign this terminal client in. Approve its sign-in code or QR in the app, or open the printed link in a browser. The QR prints only on a terminal wide enough to hold it; on a pipe or a narrow console you still get the code and the link.
tenax hostsList your hosts and whether they are online.
tenax logoutTake this computer off your account — its host row goes too if it is one — then clear the saved sign-in and client key. The running host exits on its next check. If the directory is unreachable the local files still go — remove the computer's row later from the app on a signed-in device.
tenax uninstallSign out, then remove the host service, tray, binaries and all keys/data. Running sessions are named first and confirmed.

Sessions

Run these from a signed-in terminal client. With several hosts, add --host "Home computer". Quote names with spaces.

Sessions commands
CommandWhat it does
tenax sessions --host "Home computer"List sessions on the selected host.
tenax new work --host "Home computer"Create a shell named work. It prints the session name; it is not always a number.
tenax attach --session work --host "Home computer"Attach to that session and type in it. Use the name printed by new or sessions.
tenax new quiet --mutedCreate a session with its notifications muted.
tenax attach quiet --mutedAttach to quiet; if it does not exist, create it with notifications muted. An existing session keeps its mute state.
tenax rename work reviewRename a session. Two names mean session rename; one name means local host rename.
tenax kill workEnd the session and its running shell. This stops work in that session.

Files on the host

Paths are relative to a shared root. Home is the default. A logical /notes.txt stays inside Home; it is not the computer’s filesystem root. files roots lists available roots and host paths. Use those paths for an additional root. Paths cannot escape the shared roots.

Files on the host commands
CommandWhat it does
tenax files rootsList shared roots and their host paths.
tenax files ls /List the shared Home root.
tenax files ls "project notes" --host "Home computer"List a folder on a selected host. Quote paths with spaces.
tenax files mkdir notesCreate a directory in the shared root.
tenax files mv notes old-notesMove or rename a path. An existing destination is not overwritten.
tenax files count notesCount files and directories under this path.
tenax files rm notes/draft.txtDelete a file or empty directory.
tenax files rm -r old-notesDelete a directory and all its contents.
Upload and download from a Unix shell

In sh, bash, or zsh on Linux or macOS:

tenax files get notes.txt > local-notes.txt
tenax files put notes.txt < local-notes.txt
tenax files put local-notes.txt notes.txt

The first command downloads to a local file. The second uploads from one. The third is the same upload in the cp spelling — put LOCAL REMOTE — which needs no redirection and works in PowerShell too. These can replace existing file contents.

The redirection examples are for Unix shells; PowerShell redirection differs by version.

Device approval

Use an already approved device to approve another. Check the device is yours before approval.

Device approval commands
CommandWhat it does
tenax devicesList approved and pending devices. A pending device cannot attach yet; its row shows a QR an already-approved phone can scan to approve it.
tenax approve HEXApprove the pending device key shown by devices. Replace HEX with its key.
tenax devices remove HEXRemove a device. Hosts stop admitting it after their next approval check, usually within about 30 seconds.

Manage this host

Run these on the computer that holds your sessions, as your own user. Interactive installers start service setup automatically. Run service install yourself only when setup did not finish.

Manage this host commands
CommandWhat it does
tenax service installApprove this host if needed, then install and start its user service.
tenax service statusCheck whether this host’s service is running.
tenax service install --dry-runPreview service setup without installing it.
tenax rename "Home computer"Rename this local host. This is not a remote host selector.
tenax update [TAG]Update this computer’s Tenax to the latest release, or to the given release tag.
tenax --versionPrint this binary’s version.
tenax remote-updatePrint whether app-triggered host updates are allowed. Default: on.
tenax remote-update offBlock app-triggered updates on this host. Use on to allow them again.
tenax auto-updatePrint whether unattended host updates are enabled. Default: off.
tenax auto-update onEnable the six-hour update check. A newer verified build installs when no client is attached. remote-update off blocks this too.
How the service runs on each OS

Linux uses a user service that survives logout. macOS uses a launchd user agent that starts at login. Windows uses a per-user Scheduled Task that runs inside your logon session. Headless Macs and Windows computers need a logged-in user. The Unix installer tries to provide bundled tmux. If it reports missing tmux, follow its package-manager instructions. Windows installs bundled psmux and tenaxw.exe. Sessions live in the host’s multiplexer and can outlive the host service.

Unix binaries: ~/.local/bin. Windows binaries: %LOCALAPPDATA%\Programs\tenax.

Config and keys: ~/.config/tenax/ on every OS (%USERPROFILE%\.config\tenax on Windows). State and logs: ~/.local/state/tenax/ on Linux, ~/Library/Application Support/tenax/ on macOS (logs in ~/Library/Logs/tenax/), %LOCALAPPDATA%\tenax on Windows.

Advanced host setup

Choose a shell, shared root, or connection mode

Run the host by hand only for troubleshooting. The service normally manages it.

tenax host --root /home/me/projects -- /bin/zsh

This example shares the projects folder and uses zsh for new sessions. Replace both paths with paths on your host.

--root DIR sets the Home shared root. The default is the host user’s home directory.

--name "Home computer" overrides the display name. --no-direct uses outbound connections only.

By default, Tenax accepts direct connections when possible and uses encrypted forwarding otherwise. You do not need port forwarding.

To configure the session program through the service:

tenax service install -- host -- /bin/zsh

agent is a compatibility alias for host. Use host in new commands.

Shell suggestions in the app

The shell on your host draws its own suggestions. Fish has them built in.

For zsh, see zsh-autosuggestions. For bash, see ble.sh.

Tenax does not install these or edit your dotfiles. Use the app’s right arrow to accept the shell’s suggestion.

The CLI currently prints short usage text for an invalid command. A full help reference is not shipped yet.