xssh v0.2.0

An SSH client built for AI agents

ssh hangs on prompts, forgets every cd, and needs your passwords. xssh keeps shells alive across tool calls, reports state in one line, and keeps secrets from the agent.

Tell your agent
Install xssh: read https://xssh.io/llms.txt and follow it.
Or PowerShell
> irm https://xssh.io/install.ps1 | iex
Or download

Windows x64 · Remote: Linux, macOS, FreeBSD · MIT

session w @ web1
$ xssh session run w -- 'sudo apt-get upgrade'
Do you want to continue? [Y/n]
[xssh w waiting prompt=confirm]
$ xssh session send w y --enter
Setting up nginx (1.24.0-2ubuntu7.5) …
[xssh w done exit=0]
$ xssh session run w -- pwd
/srv/app
[xssh w done exit=0]

No more hanging on prompts

Same job, two tools.

ssh
$ ssh deploy@web1 'sudo apt-get upgrade'
[sudo] password for deploy:
… 120 s, no output …

Times out at the password prompt.

xssh
$ xssh session run w -- 'sudo apt-get upgrade'
Do you want to continue? [Y/n]
[xssh w waiting prompt=confirm]
$ xssh session send w y --enter
[xssh w done exit=0]

The prompt is reported and answered. The shell keeps its state.

One command, one exact result

Terse, ANSI-free output with exit codes and next steps.

xssh host list
Saved servers: notes, tags, OS, last success.
xssh exec H -- cmd
One host, many, or @tag in parallel. Real exit codes.
xssh session run N -- cmd
A shell that keeps cwd, env and programs across calls.
xssh session send N …
Answer prompts. Drive REPLs, vim, top.
xssh job start H -- cmd
Outlives timeouts and disconnects.
xssh file edit H PATH
Exact, atomic replace with backup.
xssh cp SRC… DST
rsync-like. Skips unchanged files, resumes large ones.
xssh forward add H -L …
-L, -R, SOCKS5, held by the daemon.
xssh status | diag | logs H
Health, diagnosis with the next step, logs.
xssh host trust H
Host key changed? A human confirms.

Six states. No guessing.

Every reply ends with:

[xssh NAME STATE exit=CODE prompt=KIND]

Secrets stay with you

Agents get capabilities, not credentials.

  • Passwords live in the OS keyring.
  • You type them in a terminal or dialog, never in chat.
  • sudo is filled from the keyring.
  • {secret:NAME} injects secrets; output shows ***.
  • Changed host keys are never bypassed.
xssh
$ xssh file edit db /srv/app/.env --old 'DB_PASS=old' --new 'DB_PASS={secret:dbpw}' --secrets
edited /srv/app/.env (1 replacement)
12  DB_PASS=***
$ xssh host set-password db
→ typed by you in a dialog

Install

Windows x64. Remote: any POSIX shell.

  1. Tell your agent

    It installs xssh and its skill.

    Install xssh: read https://xssh.io/llms.txt and follow it.
  2. Or do it yourself

    One line, or unzip anywhere.

    > irm https://xssh.io/install.ps1 | iex
  3. Add passwords

    You type each once. The agent uses the alias.

    > xssh host add web1 --host 10.0.0.5 --user deploy --ask-password

Skill for Claude Code · Codex · Gemini CLI · GitHub Copilot · Cursor · OpenCode · Windsurf · Amp · Qwen Code · Kiro · Trae · Roo Code · ~/.agents (Cline…)