Metadata-Version: 2.5
Name: jarvix-mux
Version: 0.1.0
Summary: Jarvix terminal multiplexer drivers
Project-URL: Homepage, https://github.com/loctvl842/jarvix
Project-URL: Repository, https://github.com/loctvl842/jarvix
Project-URL: Issues, https://github.com/loctvl842/jarvix/issues
Author-email: loctvl842 <loclepnvx@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: agents,ai,cli,multiplexer,tmux
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.12
Description-Content-Type: text/markdown

# Jarvix Mux

A small layer over a terminal multiplexer. It lets Jarvix start agents in panes, arrange them, send them text, and look at what they show, without caring which multiplexer is underneath. tmux is the one implementation today.

## What you can do

- **Spawn** a session, then panes inside named windows. A pane runs any command, with its own environment variables and working directory.
- **Tag** a pane with a name. Tags survive restarts, so a new process can find the same panes again.
- **Arrange** a window as an even grid of panes.
- **Send text** to a pane, including multi-line text, as if pasted and submitted.
- **Capture** what a pane currently shows.
- **Focus** a pane, switching windows if needed.
- **Check** whether a pane is alive, and why it died. A dead pane stays on screen so you can read what happened.
- **Clean up** a single pane or a whole session.

## Good to know

- Everything runs on its own tmux server (a named socket), so your normal tmux sessions are never touched.
- Your `~/.tmux.conf` is loaded by default. Ask for a clean config if you want a reproducible look.
- Text injection does not check whether a human is typing in that pane. That decision belongs to the caller.

## Try it

A hands-on demo spawns a handful of nodes, lays them out, sends messages, and attaches you to the result.

```sh
uv run python packages/mux/examples/demo.py              # fake nodes, no API calls
uv run python packages/mux/examples/demo.py --claude     # real Claude Code in every pane
uv run python packages/mux/examples/demo.py --no-attach  # build it, print how to attach
```

Switch windows with `ctrl-b n` / `ctrl-b p`, detach with `ctrl-b d`. Clean up afterwards:

```sh
tmux -L jarvix-demo kill-server
```

## Tests

```sh
uv run pytest packages/mux/tests
```
