Advanced: tmux and agmsg¶
tmux and agmsg are optional. A normal multi-agent dispatch does not require either one: ithyno can run workers as one-shot processes in isolated Git worktrees.
| Feature | Use it when | What it changes |
|---|---|---|
| Parallel execution | You want isolated worktrees or concurrent changes | Where each change is edited |
| tmux | You want the Manager terminal to survive dashboard reloads and temporary disconnects | Wraps only the Manager terminal in a persistent session |
| agmsg | Workers need persistent shells and explicit messages between agents | Uses tmux panes and an agmsg team for workers; implies tmux |
Start with parallel execution alone. Add tmux or agmsg only when you need the behavior described below.
Use tmux for the Manager terminal¶
tmux keeps the Manager CLI inside a project-scoped terminal session. Reloading the dashboard or reconnecting the terminal attaches to that session instead of starting a second Manager.
tmux does not configure worker roles, enable multi-change dispatch, or provide agent-to-agent messages.
Install tmux¶
brew install tmux
tmux -V
sudo apt update
sudo apt install tmux
tmux -V
sudo dnf install tmux
tmux -V
sudo pacman -S tmux
tmux -V
Native Windows does not include tmux, and ithyno does not install a Windows
replacement automatically. The Install action in Prerequisites therefore
opens manual guidance instead of installing it. Use the latest
psmux, which provides a tmux.exe
compatibility command.
Install with WinGet:
winget install marlocarlo.psmux
Alternatively, download the installer or architecture-matching portable
archive from psmux Releases.
For a portable install, extract it and add the directory containing
tmux.exe to your User PATH.
Open a new PowerShell window and verify:
where.exe tmux
tmux -V
Completely restart the Electron app, or reload the VS Code window, after
changing PATH. Also restart the ithyno server before reopening the Manager
terminal. An already running process does not inherit later environment
changes, and ithyno caches its first tmux detection result.
Enable it¶
- Open Settings → Prerequisites and confirm that tmux is detected.
- Open Settings → Execution.
- Enable Wrap Manager terminal in tmux.
- Select the refresh button in the upper-right corner of the Manager terminal to restart it inside tmux.
This writes the following setting to agents.yaml at the project root:
tmux: true
Each project receives a separate derived tmux session name. Ithyno also passes the current dashboard endpoint and session credentials into the session when it creates or reattaches it, so a recovered Manager uses the current project context.
To stop using tmux, disable the toggle and restart the Manager from the refresh
button in the upper-right corner of its terminal. If tmux is enabled but cannot
be found on PATH, ithyno displays a warning and does not start the Manager.
Install tmux or disable the setting, restart ithyno, and then reopen the Manager
terminal.
Use agmsg for persistent workers and messaging¶
agmsg adds a shared local team inbox and launches workers in tmux panes. The Manager waits for an explicit stage-completion message from each worker before judging the artifact and advancing the change.
Use agmsg when you need one or more of these behaviors:
- a Worker should remain available in a live shell;
- workers must send explicit completion messages to the Manager;
- several agent CLIs need a shared local messaging channel.
Do not enable agmsg only to run multiple changes. Parallel execution and
dispatch-multi already provide that without agmsg.
Install agmsg prerequisites¶
- tmux must be installed; enabling agmsg turns tmux wrapping on implicitly;
- the agent CLIs must already be installed and authenticated;
- agmsg itself consists of Bash scripts and uses the
sqlite3command.
macOS normally provides sqlite3. Confirm it before installing agmsg:
sqlite3 --version
If it is unavailable, install it with Homebrew:
brew install sqlite
sudo apt update
sudo apt install sqlite3
sudo dnf install sqlite
sudo pacman -S sqlite
Windows requires three separate prerequisites before ithyno will install agmsg:
- Install Git for Windows. This supplies the
real Git Bash used to run agmsg's
.shfiles. Do not use the Windowsbash.exeWSL launcher as a substitute. - Download the architecture-matching sqlite-tools for Windows archive
from the official SQLite download page.
Extract it and add the directory containing
sqlite3.exeto your UserPATH. - Install psmux as described in the tmux section above.
tmux.exemust be visible from native PowerShell, not only from a manually configured Git Bash session.
Open a new PowerShell window and verify all three commands:
where.exe git
where.exe sqlite3
where.exe tmux
sqlite3 --version
tmux -V
& 'C:\Program Files\Git\bin\bash.exe' -lc 'sqlite3 --version'
If Git for Windows was installed to another directory, adjust the last
path. Ithyno derives Git Bash from git --exec-path; it deliberately does
not trust a bare bash command because that may resolve to WSL. For a
non-standard installation, set the Windows user environment variable
GIT_BASH to the absolute path of Git Bash, for example
D:\\Apps\\Git\\bin\\bash.exe, and restart ithyno. AGMSG_BASH is also
accepted by agmsg's Codex delivery hook.
Completely close and restart ithyno after changing PATH. Then open
Settings → Prerequisites → Refresh. The agmsg installer remains blocked
until both Git Bash and sqlite3 are detected. tmux is checked separately
before terminal wrapping.
Install agmsg¶
- Open Settings → Prerequisites.
- Find agmsg and select Install if it is missing.
- Wait until installation completes, then select Refresh and confirm that agmsg is shown as installed.
- Restart the Manager terminal so it can recognize the newly installed agmsg command and skill.
The ithyno installer copies its bundled, compatible agmsg tree to
~/.agents/skills/agmsg/. It preserves the local database on later updates.
If the packaged copy is unavailable, install from the
agmsg project with npx agmsg, restart
ithyno, and refresh Prerequisites.
Configure agmsg for the project¶
- In Settings → Agmsg (multi-agent messaging), select Configure.
- Enable agmsg and enter a team name unique to the project, such as
my-project. - Leave Storage path empty to use agmsg's default local SQLite database, unless every participating process has been configured to use the same custom path.
- Save the configuration.
- Open Agents, edit each worker that should use agmsg, and save it again. The UI updates those workers to the agmsg-backed execution mode.
- Restart the Manager terminal before dispatching.
The project setting is stored in agents.yaml:
agmsg:
team: my-project
Because agmsg implies tmux, you do not also need tmux: true unless you want
tmux to remain enabled after removing the agmsg configuration.
Supported worker commands¶
Ithyno currently maps these worker commands to agmsg agent types:
| Worker command | agmsg type |
|---|---|
claude |
claude-code |
codex |
codex |
copilot |
copilot |
gemini |
gemini |
antigravity |
antigravity |
opencode |
opencode |
cursor |
cursor |
An unmapped command cannot be launched through agmsg. Use the command shown in the table or disable agmsg for that worker.
When an agmsg-enabled worker is saved, ithyno synchronizes its supported
long-form CLI options into ~/.agmsg/config/spawn_options.yaml. Model selection
is passed separately when dispatch starts. Edit worker options in ithyno rather
than maintaining the generated entry by hand.
Disable agmsg¶
- Open Settings → Agmsg (multi-agent messaging) → Configure.
- Turn off Enable and save.
- Open Agents, edit and save each worker again so the UI restores normal one-shot execution.
- Disable Wrap Manager terminal in tmux separately if you do not want to keep Manager session persistence.
- Restart the Manager terminal.
Disabling the project integration does not uninstall agmsg or delete its local message database.
Troubleshooting¶
| Symptom | Check |
|---|---|
| tmux is enabled but the Manager does not start | Confirm tmux -V works in the environment that launched ithyno, then restart ithyno. To run without tmux, disable the setting first. |
| A previous Manager uses an old dashboard endpoint | Restart the Manager from the active dashboard so the tmux session receives the current ITHYNO_BASE and session token. |
| Worker still runs as a one-shot process after enabling agmsg | Edit and save that worker from Agents, then dispatch again. |
| Dispatch reports an unknown agmsg type | Use one of the mapped commands listed above. |
| Manager waits after a worker finishes | Check the team name and worker pane; the worker must send its stage-completion message to the same team. |
| Windows shows agmsg as installed but spawning fails | agmsg detection does not include tmux. Confirm Git Bash and sqlite3, then check tmux.exe separately and restart the app. |
Return to Set Up Multiple Agents and Dispatch a Change for the standard workflow.