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
- 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
- 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
- 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
- Clean up.
aimux kill "local-8824/testsession"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33c657c3b9497eb1b8b4f325d788de3eb8851c25121b0eac07d8874b51b07c57
|
|
| MD5 |
440a2124eeb627cb7248e110f8e8fc90
|
|
| BLAKE2b-256 |
21cf6d1e73e2a18ac74fb22b00b4d1c203164f9b739771411436e78c100bbfea
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d0aaf64cbcb1873a758b0d3575d81a504896a456a554897a83dd92041f09789
|
|
| MD5 |
2e96d2a535e5c3ae17b9eda0a2c254ab
|
|
| BLAKE2b-256 |
60240b9593662f00952272eb668128a2a95ef22bb93f5c47ea9eb0eb427ee54a
|