| Crates.io | atmd |
| lib.rs | atmd |
| version | 0.1.0 |
| created_at | 2026-01-25 19:26:23.743903+00 |
| updated_at | 2026-01-25 19:26:23.743903+00 |
| description | ATM daemon - session registry and broadcast server for Claude Code monitoring |
| homepage | |
| repository | https://github.com/damelLP/agent-tmux-monitor |
| max_upload_size | |
| id | 2069391 |
| size | 277,436 |
⚠️ Warning: This software was vibe coded by Claude while the author nodded along approvingly. It works surprisingly well, but if it summons a daemon (the other kind), you're on your own.
Real-time monitoring for Claude Code agents across tmux sessions.
Know what your AI agents are doing, before they hit limits.

Agent Tmux Monitor provides a centralized, real-time dashboard for monitoring multiple Claude Code sessions. If you're running several Claude Code agents across tmux windows, ATM gives you instant visibility into:
curl -sSL https://raw.githubusercontent.com/damelLP/agent-tmux-monitor/main/scripts/install.sh | sh
This downloads pre-built binaries, installs them to ~/.local/bin, and configures Claude Code hooks automatically.
If you have Rust installed:
# From source
cargo install atm
# Or with pre-built binaries (faster)
cargo binstall atm
Then configure the hooks:
atm setup
Download the latest release for your platform from GitHub Releases
Extract and install:
tar xzf atm-<target>.tar.gz
cd atm-*
cp atm atmd atm-hook ~/.local/bin/
chmod +x ~/.local/bin/atm*
Configure Claude Code hooks:
atm setup
# Check binaries are installed
which atm atmd
# Check daemon status
atmd status
Launch ATM:
atm
(The daemon starts automatically if it's not already running)
Start using Claude Code - sessions will automatically appear as you work.
| Key | Action |
|---|---|
j / ↓ |
Move selection down |
k / ↑ |
Move selection up |
Enter |
Jump to selected tmux session |
Tab |
Toggle between panels |
q |
Quit |
? |
Show help |
# Start daemon in background
atmd start -d
# Start daemon in foreground (for debugging)
atmd start
# Check daemon status
atmd status
# Stop daemon
atmd stop
# Launch with default settings
atm
# Pick mode - select a session and exit (useful for scripting)
atm --pick
# Show version
atm --version
# Show help
atm --help
Run ATM in a tmux popup for quick session switching without leaving your current window:
# Add this to your ~/.tmux.conf
bind-key a display-popup -E -w 80% -h 60% "atm --pick"
Now press <prefix>-a to pop up ATM, select a session, and jump directly to it. The popup closes automatically after selection.
Tip: Adjust -w (width) and -h (height) percentages to your preference.
ATM integrates with Claude Code via hooks. The atm setup command automatically adds these to ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [{
"matcher": "*",
"hooks": [{ "type": "command", "command": "atm-hook" }]
}],
"PostToolUse": [{
"matcher": "*",
"hooks": [{ "type": "command", "command": "atm-hook" }]
}],
"StatusLine": [{
"hooks": [{ "type": "command", "command": "atm-hook" }]
}]
}
}
The daemon listens on a Unix socket at /tmp/atm.sock. This can be customized via environment variable:
ATM_SOCKET=/path/to/custom.sock atmd start -d
ATM consists of three components:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude Code │────▶│ atmd │◀────│ atm │
│ (+ hooks) │ │ (daemon) │ │ (TUI) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ atm-hook script │ Unix socket │ Real-time
│ reports events │ /tmp/atm.sock │ display
▼ ▼ ▼
atm-hook sends registration to daemonsocat - For Unix socket communication (install via package manager)jq - For JSON parsing in hook scripts (install via package manager)Install on Ubuntu/Debian:
sudo apt install socat jq
Install on macOS:
brew install socat jq
Install on Arch Linux:
sudo pacman -S socat jq
Check if another instance is running:
atmd status
# If stuck, manually remove socket
rm /tmp/atm.sock
Verify hooks are configured:
cat ~/.claude/settings.json | jq '.hooks'
Check that atm-hook is in PATH:
which atm-hook
Test hook manually:
echo '{"hook_type": "StatusLine"}' | atm-hook
Start or restart the daemon:
atmd start -d
This shouldn't happen with normal usage. If it does:
atmd status)atmd stop && atmd start -d)~/.local/state/atm/atm.log# Stop daemon
atmd stop
# Remove hooks and binaries
atm uninstall
# Or manually:
rm ~/.local/bin/atm ~/.local/bin/atmd ~/.local/bin/atm-hook
# Remove hooks from ~/.claude/settings.json
Contributions are welcome!
# Clone repository
git clone https://github.com/damelLP/agent-tmux-monitor.git
cd agent-tmux-monitor
# Build
cargo build --release
# Run tests
cargo test --all
# Binaries are in target/release/
./target/release/atmd start -d
./target/release/atm
agent-tmux-monitor/
├── Cargo.toml # Workspace root, defines both binaries
├── crates/
│ ├── atm-core/ # Shared domain types and logic
│ ├── atm-protocol/ # Wire protocol definitions
│ ├── atm/ # TUI application
│ └── atmd/ # Daemon server
├── scripts/
│ ├── install.sh # Installation script
│ └── atm-hook # Claude Code hook script
└── docs/ # Documentation
MIT License - see LICENSE for details.