Skip to main content

AI-agent-friendly tmux wrapper: unified local + remote sessions, single-pane sessions, safe primitives.

Project description

aimux

aimux is an AI-agent-friendly tmux wrapper.

Use aimux when you need a long-lived shell session — a REPL, a build/server you want to interact with across multiple commands, or anything running on a remote SSH host. Use bash directly for one-shot commands. aimux gives you session primitives, file-transfer helpers, and remote-host helpers; this skill explains how to combine them.

Install

pip install aimux # or `uv pip install aimux` if using uv venv

Usage

aimux is tool that enables tmux-like capability cross ssh.

(.venv) /home/.../...$ aimux -h

Usage: aimux [OPTIONS] COMMAND [ARGS]...

aimux  AI-agent-friendly tmux wrapper.

─ Options
--help  -h        Show this message and exit.

─ Commands 
ls                          List all aimux sessions.
new                         Create a new session.
attach                      Attach to a session. ⚠️  Human use only  agents should use send-keys + capture.
send-keys                   Send keys to a session. Behaves exactly like 'tmux send-keys': supports -F/-H/-K/-l/-M/-R/-X/-N <count>. Pass 'Enter' as a key to submit a line.     
send_files                  Upload multiple local files or directories to an SSH host using sftp.
get_files                   Download multiple remote files or directories from an SSH host using sftp.
capture                     Capture pane output (last N lines).
kill                        Destroy a single session. Does not accept wildcards or batch.
wait-last-command-complete  Block until the pane's foreground process is back at a shell. Local sessions only.
remote                      Remote-host management (reads/appends ~/.ssh/config).

Example

  1. adding and naming a remote host in aimux.

First, usually you will get a ssh address, for example,

HostName localhost
Port 8824
User root

To begin, you will need to check whether this address is already inside aimux's storage:

$ aimux remote ls
HOST              USER  HOSTNAME    PORT  STATUS         RTT   
github.com        git   github.com  22    auth-required  2261ms
local-8824        root  localhost   8824  reachable      709ms

If not in storage, you will have to add that server using:

aimux remote add --host localhost --port 8824 --user root --name local-8824 --timeout 2s
aimux remote test local-8824 --timeout 2s
  1. Creating a session and run command in it.
aimux new --remote local-8824 --name testsession
aimux send-keys "local-8824/testsession" -- 'ls -la' Enter
aimux capture "local-8824/testsession" --lines 200
  1. Upload and download files.
# aimux send_files REMOTE REMOTE_DIR LOCAL_PATH... [--gitignore]
# aimux get_files REMOTE LOCAL_DIR REMOTE_PATH...
aimux send_files local-8824 /tmp/upload /home/testdir/tests
aimux get_files local-8824 /home/testdir/tests /tmp/upload

Use --gitignore on upload when ignored files should be skipped:

aimux send_files local-8824 /tmp/upload /home/testdir/tests --gitignore
  1. Clean up.
aimux kill "local-8824/testsession"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aimux-0.1.2.tar.gz (194.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aimux-0.1.2-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file aimux-0.1.2.tar.gz.

File metadata

  • Download URL: aimux-0.1.2.tar.gz
  • Upload date:
  • Size: 194.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for aimux-0.1.2.tar.gz
Algorithm Hash digest
SHA256 33c657c3b9497eb1b8b4f325d788de3eb8851c25121b0eac07d8874b51b07c57
MD5 440a2124eeb627cb7248e110f8e8fc90
BLAKE2b-256 21cf6d1e73e2a18ac74fb22b00b4d1c203164f9b739771411436e78c100bbfea

See more details on using hashes here.

File details

Details for the file aimux-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: aimux-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for aimux-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0d0aaf64cbcb1873a758b0d3575d81a504896a456a554897a83dd92041f09789
MD5 2e96d2a535e5c3ae17b9eda0a2c254ab
BLAKE2b-256 60240b9593662f00952272eb668128a2a95ef22bb93f5c47ea9eb0eb427ee54a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page