What problem does it solve? Agents cannot operate programs that only work in a real terminal—full-screen TUIs like nano, mc, lynx, pagers, installers, or another interactive CLI—because headless or piped invocations behave differently and cannot answer questions about interactive behavior. ## Core Features & Use Cases - PTY-backed wrapper with JSONL screen events: Start any command in a real pseudo-terminal and observe changed rows, cursor state, styles, and scrollback as structured events. - Compact observation commands: Use view, view-delta, rgbview, markup, elements, and observe to inspect the screen at the lowest token cost, including actionable element discovery and OSC 8 hyperlinks. - Structured input over a Unix socket: Send text, named keys, modifier combos, raw bytes, bracketed paste, mouse events, and resizes one request at a time, verifying each action against the next screen. - Vendor app profiles: Consult shipped profiles for common programs (mc, nano, vi, less, htop, tmux) and record new findings in an agent-writable appprofiles.d/ directory. - Use Case: An agent must edit a file in nano inside a terminal, confirm the save prompt, and exit—starting a session, observing the screen, sending CTRL-O and ENTER, and verifying the result from the actual screen rather than assuming keystrokes worked. ## Quick Start Start a session with interactive-shell --session my-id --cols 80 --rows 24 -- nano file.txt, then use interactive-shell-input --session my-id view to observe the screen and send keys one at a time.