libtmux-mcp¶
Terminal control for AI agents, built on libtmux and FastMCP.
This server maps tmux’s object hierarchy — sessions, windows, panes — into MCP tools. Some tools read state. Some mutate it. Some destroy. The distinction is explicit and enforced.
Warning
Pre-alpha. APIs may change. Feedback welcome.
With uvx installed:
$ claude mcp add tmux -- uvx libtmux-mcp
With uvx installed:
$ claude mcp add tmux -- uvx --exclude-newer P7D --exclude-newer-package libtmux-mcp=2099-01-01 libtmux-mcp
With uvx installed:
$ claude mcp add tmux -- uvx --no-config libtmux-mcp
With uvx installed:
$ claude mcp add tmux --scope user -- uvx libtmux-mcp
With uvx installed:
$ claude mcp add tmux --scope user -- uvx --exclude-newer P7D --exclude-newer-package libtmux-mcp=2099-01-01 libtmux-mcp
With uvx installed:
$ claude mcp add tmux --scope user -- uvx --no-config libtmux-mcp
With uvx installed:
$ claude mcp add tmux --scope project -- uvx libtmux-mcp
With uvx installed:
$ claude mcp add tmux --scope project -- uvx --exclude-newer P7D --exclude-newer-package libtmux-mcp=2099-01-01 libtmux-mcp
With uvx installed:
$ claude mcp add tmux --scope project -- uvx --no-config libtmux-mcp
With pipx installed:
$ claude mcp add tmux -- pipx run libtmux-mcp
With pipx installed:
$ claude mcp add tmux -- pipx run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ claude mcp add tmux -- pipx run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ claude mcp add tmux --scope user -- pipx run libtmux-mcp
With pipx installed:
$ claude mcp add tmux --scope user -- pipx run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ claude mcp add tmux --scope user -- pipx run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ claude mcp add tmux --scope project -- pipx run libtmux-mcp
With pipx installed:
$ claude mcp add tmux --scope project -- pipx run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ claude mcp add tmux --scope project -- pipx run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux -- libtmux-mcp
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux -- libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux -- libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux --scope user -- libtmux-mcp
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux --scope user -- libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux --scope user -- libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux --scope project -- libtmux-mcp
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux --scope project -- libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ claude mcp add tmux --scope project -- libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["libtmux-mcp"]
}
}
}
Config file: claude_desktop_config.json
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["--exclude-newer", "P7D", "--exclude-newer-package", "libtmux-mcp=2099-01-01", "libtmux-mcp"]
}
}
}
Config file: claude_desktop_config.json
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["libtmux-mcp"],
"env": { "UV_NO_CONFIG": "1" }
}
}
}
Config file: claude_desktop_config.json
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
Config file: claude_desktop_config.json
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: claude_desktop_config.json
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: claude_desktop_config.json
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
Config file: claude_desktop_config.json
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: claude_desktop_config.json
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: claude_desktop_config.json
With uvx installed:
$ codex mcp add tmux -- uvx libtmux-mcp
With uvx installed:
$ codex mcp add tmux -- uvx --exclude-newer P7D --exclude-newer-package libtmux-mcp=2099-01-01 libtmux-mcp
With uvx installed:
$ codex mcp add tmux -- uvx --no-config libtmux-mcp
With uvx installed:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "uvx"
args = ["libtmux-mcp"]
With uvx installed:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "uvx"
args = ["--exclude-newer", "P7D", "--exclude-newer-package", "libtmux-mcp=2099-01-01", "libtmux-mcp"]
With uvx installed:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "uvx"
args = ["libtmux-mcp"]
env = { UV_NO_CONFIG = "1" }
With pipx installed:
$ codex mcp add tmux -- pipx run libtmux-mcp
With pipx installed:
$ codex mcp add tmux -- pipx run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ codex mcp add tmux -- pipx run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "pipx"
args = ["run", "libtmux-mcp"]
With pipx installed:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "pipx"
args = ["run", "libtmux-mcp"]
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "pipx"
args = ["run", "libtmux-mcp"]
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ codex mcp add tmux -- libtmux-mcp
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ codex mcp add tmux -- libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ codex mcp add tmux -- libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "libtmux-mcp"
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "libtmux-mcp"
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
[mcp_servers.tmux]
command = "libtmux-mcp"
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With uvx installed:
$ gemini mcp add --scope user tmux uvx -- libtmux-mcp
With uvx installed:
$ gemini mcp add --scope user tmux uvx -- --exclude-newer P7D --exclude-newer-package libtmux-mcp=2099-01-01 libtmux-mcp
With uvx installed:
$ gemini mcp add --scope user tmux uvx -- --no-config libtmux-mcp
With uvx installed:
$ gemini mcp add --scope project tmux uvx -- libtmux-mcp
With uvx installed:
$ gemini mcp add --scope project tmux uvx -- --exclude-newer P7D --exclude-newer-package libtmux-mcp=2099-01-01 libtmux-mcp
With uvx installed:
$ gemini mcp add --scope project tmux uvx -- --no-config libtmux-mcp
With pipx installed:
$ gemini mcp add --scope user tmux pipx -- run libtmux-mcp
With pipx installed:
$ gemini mcp add --scope user tmux pipx -- run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ gemini mcp add --scope user tmux pipx -- run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ gemini mcp add --scope project tmux pipx -- run libtmux-mcp
With pipx installed:
$ gemini mcp add --scope project tmux pipx -- run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With pipx installed:
$ gemini mcp add --scope project tmux pipx -- run libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ gemini mcp add --scope user tmux libtmux-mcp
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ gemini mcp add --scope user tmux libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ gemini mcp add --scope user tmux libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ gemini mcp add --scope project tmux libtmux-mcp
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ gemini mcp add --scope project tmux libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then register:
$ gemini mcp add --scope project tmux libtmux-mcp
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["libtmux-mcp"]
}
}
}
Config file: .cursor/mcp.json (in repo)
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["--exclude-newer", "P7D", "--exclude-newer-package", "libtmux-mcp=2099-01-01", "libtmux-mcp"]
}
}
}
Config file: .cursor/mcp.json (in repo)
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["libtmux-mcp"],
"env": { "UV_NO_CONFIG": "1" }
}
}
}
Config file: .cursor/mcp.json (in repo)
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["libtmux-mcp"]
}
}
}
Config file: ~/.cursor/mcp.json
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["--exclude-newer", "P7D", "--exclude-newer-package", "libtmux-mcp=2099-01-01", "libtmux-mcp"]
}
}
}
Config file: ~/.cursor/mcp.json
With uvx installed:
{
"mcpServers": {
"tmux": {
"command": "uvx",
"args": ["libtmux-mcp"],
"env": { "UV_NO_CONFIG": "1" }
}
}
}
Config file: ~/.cursor/mcp.json
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
Config file: .cursor/mcp.json (in repo)
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: .cursor/mcp.json (in repo)
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: .cursor/mcp.json (in repo)
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
Config file: ~/.cursor/mcp.json
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: ~/.cursor/mcp.json
With pipx installed:
{
"mcpServers": {
"tmux": {
"command": "pipx",
"args": ["run", "libtmux-mcp"]
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: ~/.cursor/mcp.json
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
Config file: .cursor/mcp.json (in repo)
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: .cursor/mcp.json (in repo)
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: .cursor/mcp.json (in repo)
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
Config file: ~/.cursor/mcp.json
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: ~/.cursor/mcp.json
Install the packages first:
$ pip install --user --upgrade libtmux libtmux-mcp
Then use this config:
{
"mcpServers": {
"tmux": {
"command": "libtmux-mcp"
}
}
}
pip has no per-package cooldown override, so this snippet runs without cooldown enforcement. Switch to the uvx tab — it applies the cooldown to transitive deps via `--exclude-newer` while exempting libtmux-mcp itself via `--exclude-newer-package`.
Config file: ~/.cursor/mcp.json
Dependency cooldowns
Use the Configure cooldowns checkbox above to enable or disable. These settings choose how cooldown behaves once enabled.
What are cooldowns?
Cooldowns delay picking up newly uploaded packages so the community has time to spot supply-chain attacks before you install. Most package managers don't apply one by default — you opt in via a global setting in your tool's config.
Learn more at cooldowns.dev · Datadog Security Labs writeup.
Install, connect, get a first result. Under 2 minutes.
Every tool, grouped by intent and safety tier.
Four workflow recipes the client renders for the model.
Snapshot views of the tmux hierarchy via tmux:// URIs.
Readonly, mutating, destructive. Know what changes state.
Config blocks for Claude Desktop, Claude Code, Cursor, and others.
What you can do¶
Inspect readonly¶
Read tmux state without changing anything.
list_sessions · capture_pane · capture_since · snapshot_pane · get_pane_info · find_pane_by_position · search_panes · wait_for_text · wait_for_content_change · display_message
Act mutating¶
Create or modify tmux objects.
create_session · send_keys · paste_text · create_window · split_window · select_pane · select_window · move_window · resize_pane · pipe_pane · set_option
Destroy destructive¶
Tear down tmux objects. Not reversible.
Mental model¶
Object hierarchy — sessions contain windows, windows contain panes (Concepts)
Read vs. mutate — some tools observe, some act, some destroy (Safety tiers)
tmux is the source of truth — the server reads from it and writes to it, never caches or abstracts