A tmux session manager purpose-built for AI agent CLIs
Project description
devmux
devmux is a tmux launcher for developers who use multiple AI agents in the CLI.
It gives you one command to open a repeatable coding cockpit with agent panes, tests, logs, and shell helpers in the right layout and working directories.
Why it exists
If you already work with tools like Claude Code, Codex, Gemini CLI, Aider, test watchers, and logs, your terminal usually turns into a mess:
- too many panes to rebuild by hand
- prompts sent to the wrong place
- different repos and directories across panes
- no shared setup you can reuse every day
devmux fixes that by making your workflow reproducible.
What it does
- Launch named workspaces from
devmux.yaml - Create real tmux layouts:
duo,trio,quad,focus - Route prompts safely by pane role or pane name
- Reuse existing sessions with idempotent
start - Rebuild a workspace with
--recreate - Scaffold starter configs with
devmux init - Keep runtime behavior generic while still supporting AI-heavy workflows
Who it is for
devmux is best for developers who:
- already use tmux
- run 2 to 5 CLI agents or helper panes at once
- want one command to restore a known working setup
- want a simple, scriptable alternative to a full TUI dashboard
Requirements
- macOS or Linux
tmuxinstalled and available onPATH- Python 3.8+
Check tmux:
tmux -V
Install
Option 1: Install from PyPI
Use this after you publish devmux to PyPI:
python3 -m pip install devmux
Option 2: Install from GitHub right now
If you want people to try it before a PyPI release:
python3 -m pip install "git+https://github.com/olllayor/devmux.git"
Option 3: Install locally for development
git clone https://github.com/olllayor/devmux.git
cd devmux
python3 -m pip install -e ".[dev]"
Quick start
Generate a starter config:
devmux init --preset backend
Start the workspace:
devmux start backend
Create or reuse a session without attaching:
devmux start backend --detach
Resume the same workspace later:
devmux resume backend
Send a prompt to all agent panes in the current session:
devmux send "review the auth flow"
Target a specific role or pane:
devmux send "show me errors" --role logs
devmux send "run tests" --pane tests
devmux send "status" --all
List or kill sessions:
devmux ls
devmux kill backend
Config
Example devmux.yaml:
workspaces:
backend:
layout: trio
cwd: ~/projects/tapi
panes:
- name: planner
role: agent
command: "claude"
- name: builder
role: agent
command: "codex --approval auto"
- name: logs
role: logs
command: "docker compose logs -f"
Accepted layouts:
duotrioquadfocus
Accepted roles:
agentlogstestsshell
Legacy agents configs are still accepted and mapped to role: agent.
Commands
devmux init [--preset minimal|backend|full-stack] [--config PATH] [--force]
devmux start <workspace> [--config PATH] [--detach] [--recreate]
devmux attach <workspace>
devmux resume <workspace>
devmux ls
devmux kill <workspace>
devmux send "<prompt>" [--session NAME] [--all | --role ROLE | --pane NAME ...]
Typical workflows
Two-agent coding setup
workspaces:
minimal:
layout: duo
cwd: .
panes:
- name: claude
role: agent
command: "claude"
- name: codex
role: agent
command: "codex --approval auto"
Backend setup with logs
workspaces:
backend:
layout: trio
cwd: .
panes:
- name: planner
role: agent
command: "claude"
- name: builder
role: agent
command: "codex --approval auto"
- name: logs
role: logs
command: "docker compose logs -f"
Full-stack setup with tests and logs
workspaces:
full-stack:
layout: quad
cwd: .
panes:
- name: frontend
role: agent
command: "claude"
- name: backend
role: agent
command: "codex --approval auto"
- name: tests
role: tests
command: "npm test"
- name: logs
role: logs
command: "docker compose logs -f"
How to release it to the world
Use two distribution paths:
- GitHub for discovery, source, issues, releases, and docs.
- PyPI for the simplest install command:
python3 -m pip install devmux.
Recommended rollout order:
- Push this repo to GitHub with a clean README, license, and tagged release.
- Push a version tag like
v0.2.0; GitHub Actions creates the release and publishes to PyPI. - Share a short demo GIF/video showing
devmux init,devmux start, anddevmux send. - Post it in places where AI-heavy CLI devs already are: X, Reddit, Hacker News, tmux/devtools communities, Discord/Slack groups, and your own network.
The detailed publishing checklist is in RELEASING.md.
Development
Install dev dependencies:
python3 -m pip install -e ".[dev]"
Run tests:
python3 -m pytest
Scope
devmux v0.2 is intentionally focused:
- no TUI yet
- no status bar or health dashboard
- no deep agent-specific integrations
- no full pane history or recovery system
The goal is to be a reliable painkiller for launching and routing multi-agent CLI sessions.
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 devmux-0.2.1.tar.gz.
File metadata
- Download URL: devmux-0.2.1.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
176d5f70fd8e4909ffc426f40e688d154625e38d8fd1d355ef92ed58fd619280
|
|
| MD5 |
4133a705138a5f2e93393c76218f9312
|
|
| BLAKE2b-256 |
dfe61efbd272cca4acc58628f0a95cc7d46de40a1c0bc7525bba1b923a20d8cd
|
Provenance
The following attestation bundles were made for devmux-0.2.1.tar.gz:
Publisher:
publish.yml on olllayor/devmux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devmux-0.2.1.tar.gz -
Subject digest:
176d5f70fd8e4909ffc426f40e688d154625e38d8fd1d355ef92ed58fd619280 - Sigstore transparency entry: 1097274116
- Sigstore integration time:
-
Permalink:
olllayor/devmux@ccbb17b003dfade8a52db41b3e3f14977d208b1a -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/olllayor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ccbb17b003dfade8a52db41b3e3f14977d208b1a -
Trigger Event:
push
-
Statement type:
File details
Details for the file devmux-0.2.1-py3-none-any.whl.
File metadata
- Download URL: devmux-0.2.1-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b388a03f6e2c8f351dbe9dc786b41cfc8fd8e93b6cfde5c7daa090caba95465
|
|
| MD5 |
28ee527c4bc8bca3a520ceebcd1816ce
|
|
| BLAKE2b-256 |
bcb332826d6ae345a1cc1631f3f53180e06e08b7e1ce987069e5f09ab09eb942
|
Provenance
The following attestation bundles were made for devmux-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on olllayor/devmux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devmux-0.2.1-py3-none-any.whl -
Subject digest:
3b388a03f6e2c8f351dbe9dc786b41cfc8fd8e93b6cfde5c7daa090caba95465 - Sigstore transparency entry: 1097274119
- Sigstore integration time:
-
Permalink:
olllayor/devmux@ccbb17b003dfade8a52db41b3e3f14977d208b1a -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/olllayor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ccbb17b003dfade8a52db41b3e3f14977d208b1a -
Trigger Event:
push
-
Statement type: