A tmux plugin that creates a 3-pane IDE layout with a single keybinding. Turns any tmux window into a development workspace with your editor, an AI coding agent, and a terminal.
+----------------------------------------+-------------------+
| | |
| editor (nvim) | agent (opencode)|
| (top-left) | (right) |
| | (full height) |
| | |
|----------------------------------------| |
| terminal (bash) | |
| (bottom-left) | |
+----------------------------------------+-------------------+
Defaults to nvim as the editor and OpenCode as the right-side AI agent, but both are fully configurable. Works with any editor and any terminal-based tool.
git clone https://github.com/guysoft/tmux-ide ~/.tmux/plugins/tmux-ide
~/.tmux/plugins/tmux-ide/install.shThen inside tmux, press prefix + e to create the IDE layout.
git clone https://github.com/guysoft/tmux-ide ~/.tmux/plugins/tmux-ide && ~/.tmux/plugins/tmux-ide/install.shThis will:
- Symlink the plugin into
~/.tmux/plugins/tmux-ide/ - Create an
idecommand in~/.local/bin/for command-line usage - Add the plugin to
~/.tmux.conf(before tpack/TPM init if present) - Reload your tmux config
With tpack (Recommended)
tpack is a modern drop-in replacement for TPM with a TUI, written in Go. Install it via Homebrew (brew install tmuxpack/tpack/tpack) or see the tpack installation guide.
Add this line to your ~/.tmux.conf, before the tpack init line:
set -g @plugin 'guysoft/tmux-ide'
# Initialize tpack (keep at the very bottom)
run 'tpack init'Then press prefix + I to install.
With TPM
Add this line to your ~/.tmux.conf, before the TPM init line:
set -g @plugin 'guysoft/tmux-ide'
# Initialize TPM (keep at the very bottom)
run '~/.tmux/plugins/tpm/tpm'Then press prefix + I to install.
To also get the ide CLI command, run:
~/.tmux/plugins/tmux-ide/install.shClone the repo and source the plugin:
git clone https://github.com/guysoft/tmux-ide ~/.tmux/plugins/tmux-ideAdd to ~/.tmux.conf:
run-shell ~/.tmux/plugins/tmux-ide/tmux-ide.tmux~/.tmux/plugins/tmux-ide/install.sh --removePress prefix + e to transform the current tmux window into an IDE layout.
The layout uses the current pane's working directory as the project root:
- Editor opens in the project directory (nvim with your session auto-loaded if using a session plugin)
- Agent opens in the project directory (opencode continues the last session for that directory)
- Terminal opens in the project directory
- Window is renamed to the project directory name
If the window already has multiple panes, they are replaced.
The ide command (installed by install.sh) can be used directly:
# Create IDE layout in current directory
ide
# Create IDE layout for a specific project
ide ~/workspace/myproject
# Skip confirmation when replacing existing panes
ide --force ~/workspace/myproject# Open a new tmux window
# Ctrl+a c
# Navigate to your project
cd ~/workspace/myproject
# Press prefix + e to create IDE layout
# Ctrl+a e
# Or from command line:
ide ~/workspace/myprojectAll options are set in ~/.tmux.conf:
| Option | Default | Description |
|---|---|---|
@ide-key |
e |
Keybinding to trigger the IDE layout |
@ide-editor |
nvim |
Editor command to run in the top-left pane |
@ide-agent |
opencode -c |
Command to run in the right pane |
@ide-terminal |
(empty) | Command to run in the bottom-left pane (empty = plain shell) |
@ide-right-width |
30 |
Right pane width as a percentage |
@ide-bottom-height |
30 |
Bottom pane height as a percentage |
set -g @plugin 'guysoft/tmux-ide'
# No extra config needed, these are the defaultsset -g @plugin 'guysoft/tmux-ide'
set -g @ide-agent "claude"set -g @plugin 'guysoft/tmux-ide'
set -g @ide-editor "vim"
set -g @ide-agent "aider"set -g @plugin 'guysoft/tmux-ide'
set -g @ide-editor "hx"
set -g @ide-agent "goose"set -g @plugin 'guysoft/tmux-ide'
set -g @ide-right-width "40"
set -g @ide-bottom-height "25"This plugin works well with tmux-resurrect and tmux-continuum. After a tmux restart, the full IDE layout is restored:
| Component | How It's Restored |
|---|---|
| Layout | tmux-resurrect saves and restores pane geometry |
| Editor | tmux-resurrect restores nvim (in default process list). Use a session plugin like possession.nvim with autoload = 'auto_cwd' to auto-restore editor sessions |
| Agent | For OpenCode, use tmux-resurrect-opencode-sessions to restore the exact agent session |
| Terminal | tmux-resurrect restores the shell in the correct directory |
# Plugins
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'guysoft/tmux-resurrect-opencode-sessions'
set -g @plugin 'guysoft/tmux-ide'
# Auto-save and restore
set -g @continuum-restore 'on'
# Initialize tpack (keep at the very bottom)
run 'tpack init'Note: If using TPM instead of tpack, replace
run 'tpack init'withrun '~/.tmux/plugins/tpm/tpm'and addset -g @plugin 'tmux-plugins/tpm'to the plugins list.
tmux-ide exposes the nvim RPC socket as NVIM_IDE_SOCK, enabling AI agents to programmatically control nvim's debugger from outside. This is a key piece of the debug-reach feature that allows an agent to set breakpoints, launch debug sessions, and inspect state — all via RPC.
This feature requires all three repos working together:
| Component | Repo | Role |
|---|---|---|
| tmux-ide | guysoft/tmux-ide | Exposes NVIM_IDE_SOCK so agents can discover nvim's RPC socket |
| vscodium.nvim | guysoft/vscodium.nvim | Provides debug-rpc.lua module and the skill instructions |
| NvGuy | guysoft/NvGuy | Wires up nvim-dap, dap-ui, mason-nvim-dap, and the Run menu |
The socket is available to any process in the tmux session:
NVIM_IDE_SOCK=$(tmux show-environment NVIM_IDE_SOCK | sed 's/^NVIM_IDE_SOCK=//')
nvim --server "$NVIM_IDE_SOCK" --remote-expr "luaeval('vim.fn.getcwd()')"- tmux-resurrect-opencode-sessions - Preserves OpenCode sessions across tmux restarts
- tmux-resurrect - Save and restore tmux sessions
- tmux-continuum - Automatic save and restore
GPL-3.0. See LICENSE for details.