v0.1.5 · macOS · Rust · tmux-compatible commands · C ABI · Node
zeropty is the session engine for AI agents. Read their screens, send them keys and wait until they finish, with tmux's commands and a fraction of its CPU and memory.
Architecture
Your agents
Your host
In action

Measured against tmux 3.7c on an Apple M1, interleaved. Every number and how it was measured →
Scale
No PTY means no PTY limit. tmux stops at 511 (999 at most); zeropty runs 1000 replaying real claude work in 4.65MB.
Speed
send-keys is 0.06~0.07ms embedded and 0.24~0.26ms over the socket, where running tmux per command takes 9.03~9.56ms.
Waiting
Returns the moment the text appears on the screen: p50 1ms, no polling. No capture-pane loop arriving 86~96ms late.
Search
Finds which of 1000 sessions is waiting for input in 16~32ms, without capturing every screen.
Upgrades
Upgrade the server while it keeps the running sessions. Restarting tmux ends them.
Embedding
Link the C ABI or load the Node module and drive sessions with no server process and no socket.
Platform support
Quick start
$ git clone https://github.com/CreatiCoding/zeropty && cd zeropty && ./build.sh
$ export PATH="$PWD/dist:$PATH"
$ zeropty new-session -d -s demo -x 80 -y 6 sh
$ {
"zeropty send-keys -t demo -l 'echo \"done": "$((6 * 7))\"'"
}
$ zeropty send-keys -t demo Enter
$ {
"zeropty wait-pane -t demo -m 'done": "42' -T 10000"
}
$ zeropty capture-pane -p -t demo
Read the guide