# mi6

Tool for monitoring and managing coding agents

Features:
- **Informative**: monitor 40+ live [metrics](#metrics) per session
- **Versatile**: monitors any workflow, can be used alongside other tools
- **Customizable**: choose the columns, sorting, filtering, theming
- **Fast**: instant startup, low input latency, consumes little CPU / RAM
- **Compatible**: supports Claude Code and [many other tools](#compatibility)
- **Controllable**: intuitive + efficient [keyboard shortcuts](#keyboard-shortcuts)
- **QoL**: many small things

`mi6` makes it easy to monitor and manage many agentic sessions in parallel:
- double-click a session to change window focus to that session
- can see which sessions are 1. waiting on user input 2. working 3. idle
- shortcuts for focus, kill, open in terminal, go to issue/pr in github

## Table of Contents
1. [Installation](#installation)
2. [Usage](#usage)
    1. [Metrics](#metrics)
    2. [Keyboard Shortcuts](#keyboard-shortcuts)
    3. [Query Data Programmatically](#query-data-programmatically)
3. [Compatibility](#compatibility)
    1. [Framework Compatibility](#framework-compatibility)
    2. [Multiplexer Compatibility](#multiplexer-compatibility)
    3. [Terminal Compatibility](#terminal-compatibility)

## Installation

Install via script (macOS/Linux):
```bash
curl -sSL https://github.com/paradigmxyz/mi6/releases/latest/download/install.sh | sh
```

Install via brew:
```bash
brew install mi6
```

Install via cargo:
```bash
cargo install mi6
```

Install via source code:
```bash
git clone https://github.com/paradigmxyz/mi6/
cd mi6
cargo install --path crates/mi6
```

Upgrade to latest `mi6` version:
```bash
mi6 upgrade
```

Uninstall `mi6`:
```bash
mi6 uninstall
```

## Usage

Run `mi6` in terminal

### Metrics

`mi6` tracks 40+ live metrics for each agentic coding session including:
- **status**: working, idle, waiting for user input, dead
- **system resources**: CPU, memory, disk I/O (each including child processes)
- **git info**: branch, repo, worktree, issue, PR
- **token counts**: inputs, outputs, cache, and context size
- **operations**: compactions, messages, tool calls
- **metadata**: model, framework, session id, PID

### Keyboard Shortcuts

For the complete list of keyboard shortcuts, press `?` while running `mi6`

Session Operations
- `Enter`: switch window focus to selected session
- `K`: kill selected session
- `T`: open terminal in selected session's worktree / CWD

Menus
- `C`: config menu
- `c`: column customization
- `f`: filter menu
- `t`: theme menu
- `?`: help menu

Panels
- `p`: toggle projects panel
- `d`: toggle details panel

Navigation
- `k` / `j` / `↑` / `↓`: move up / down
- `g` / `G`: go to top / bottom
- `h` / `l` / `←` / `→`: move left / right between panels
- `Shift →` / `Shift ←`: horizontal scroll

Other
- `/`: use quick filter
- `a`: toggle dead sessions display
- `+` / `=` / `-`: increase / decrease refresh rate
- `q` / `Esc`: quit

### Query Data Programmatically

Query the data collected by `mi6` from the command line without the interactive TUI:
```bash
mi6 session <SESSION_ID_OR_PID> --json
```

Specify which fields to return with `--fields` (all fields printed by default):
```bash
mi6 session <SESSION_ID_OR_PID> --fields status,model,cpu --json
```

## Compatibility

`mi6` can utilize the extra capabilities of certain frameworks, multiplexers, and terminals. If one of these programs has capabilities that `mi6` is not yet utilizing, please file a GitHub issue.

Legend
- 🪝 Via hooks
- 📜 Via transcripts
- 🩺 Via process monitoring
- ❌ Not available

### Framework Compatibility

| | Support | Session Started | Access Request | Access Granted | User Prompt Sent | User Interrupt | Response Complete | Session Ended |
|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| | | → $\mathsf{\color{green}{\textbf{idle}}}$ | → $\mathsf{\color{blue}{\textbf{wait}}}$ | $\mathsf{\color{blue}{\textbf{wait}}}$ → $\mathsf{\color{orange}{\textbf{busy}}}$ | $\mathsf{\color{green}{\textbf{idle}}}$ → $\mathsf{\color{orange}{\textbf{busy}}}$ | $\mathsf{\color{orange}{\textbf{busy}}}$ → $\mathsf{\color{green}{\textbf{idle}}}$ | $\mathsf{\color{orange}{\textbf{busy}}}$ → $\mathsf{\color{green}{\textbf{idle}}}$ | → $\mathsf{\color{gray}{\textbf{done}}}$ |
| [**Claude**](https://docs.anthropic.com/en/docs/claude-code/hooks) | 🏆 | 🪝 | 🪝 | ❌ | 🪝📜 | ❌ | 🪝📜 | 🪝🩺 |
| [**Codex**](https://developers.openai.com/codex/config-advanced/) | ✅ | ❌ | ❌* | ❌ | 📜 | ❌ | 🪝📜 | 🩺 |
| [**Cursor**](https://cursor.com/docs/agent/hooks) | ✅ | 🪝* | ❌ | ❌ | 🪝 | ❌ | 🪝 | ❌ |
| [**Gemini**](https://geminicli.com/docs/hooks/) | ✅ | 🪝 | ❌ | ❌ | 🪝📜 | ❌ | 🪝📜 | 🪝🩺 |
| [**OpenCode**](https://opencode.ai/docs/plugins/) | 🏆 | 🪝 | 🪝 | ❌ | 🪝 | ❌ | 🪝 | 🪝🩺 |

### Multiplexer Compatibility

| | Support | Focus Window | Focus Tab | Focus Pane |
|---|:---:|:---:|:---:|:---:|
| [**tmux**](https://man7.org/linux/man-pages/man1/tmux.1.html) | 🏆 | ✅ | ✅ | ✅ |
| [**zellij**](https://github.com/zellij-org/zellij/pull/3747) | ✅ | ✅ | ❌ | ❌ |
| [**screen**](https://www.gnu.org/software/screen/manual/screen.html) | ✅ | ✅ | ✅ | ❌ |

### Terminal Compatibility

| | Support | Focus Window | Focus Tab | Focus Pane |
|---|:---:|:---:|:---:|:---:|
| [**iTerm2**](https://iterm2.com/documentation-scripting.html) | 🏆 | ✅ | ✅ | ✅ |
| [**Terminal.app**](https://support.apple.com/guide/terminal/welcome/mac) | ✅ | ✅ | ✅ | no panes |
| [**Kitty**](https://sw.kovidgoyal.net/kitty/remote-control/) | 🏆 | ✅ | ✅ | ✅ |
| [**WezTerm**](https://wezfurlong.org/wezterm/cli/cli/activate-pane.html) | 🏆 | ✅ | ✅ | ✅ |
| [**Ghostty**](https://github.com/ghostty-org/ghostty/discussions/2353) | ✅ | ✅ | ❌ | ❌ |
| [**Alacritty**](https://alacritty.org/) | ✅ | ✅ | no tabs | no panes |
| [**GNOME**](https://help.gnome.org/users/gnome-terminal/stable/) | ✅ | ✅ | ❌ | no panes |
| **All others** | ✅ | ✅ | ❌ | ❌ |

