fluxtty
A vim-modal terminal for AI development.
Links
README
From the repo.
fluxtty
English · Español · 简体中文 · Français · Deutsch · Italiano
A vim-modal terminal workspace for AI development.
You don't just write code anymore — you supervise agents.
fluxtty is a keyboard-driven workspace for running many AI sessions in parallel,
with the modal efficiency that made vim indispensable.
Live demo → · Download latest release
The idea
When AI writes the code, your job shifts from typing to directing. You need a workspace built for that — not an editor with a terminal bolted on.
| Before | Now |
|---|---|
| Write code manually in an editor. | Agents write; you review, steer, and unblock. |
| One terminal for the occasional command. | 8–12 sessions open in parallel: agents, servers, shells. |
| Run tests yourself, read output, patch manually. | Monitor outputs, redirect agents, course-correct fast. |
| Context-switch between editor, browser, terminal. | The terminal is the entire workspace. |
fluxtty applies vim's modal philosophy to the whole terminal workspace:
| Need | fluxtty answer |
|---|---|
| Watch many sessions at once | Waterfall rows keep all agents visible without squeezing into a tiny grid |
| Move without touching the mouse | Normal mode: h j k l navigation, / fuzzy search, n new, s split, q close |
| Type safely into any shell | Insert mode routes input to the active PTY — Normal mode never leaks keys into a running agent |
| Use real terminal apps | Terminal mode gives xterm.js raw keyboard control for vim, htop, TUIs, and agent prompts |
| Coordinate the workspace | Workspace AI can run, read, create, rename, group, pipeline, and dispatch across sessions |
Install
Homebrew on macOS
brew tap amoswzw/tap
brew install --cask fluxtty
Download
Latest release — macOS, Linux, Windows
| Platform | Package |
|---|---|
| macOS Apple Silicon | fluxtty_*_aarch64.dmg |
| macOS Intel | fluxtty_*_x64.dmg |
| Linux | fluxtty_*_amd64.deb, .rpm, .AppImage |
| Windows | fluxtty_*_x64-setup.exe |
Build from source
Prerequisites: Rust 1.77+, Node.js 18+, Tauri v2 prerequisites.
git clone https://github.com/amoswzw/fluxtty
cd fluxtty
npm install
npm run tauri build
npm run tauri dev # development
Modes
fluxtty has one persistent input bar with a small set of explicit modes:
| Mode | Enter | What happens |
|---|---|---|
| Normal | default | Navigate panes and rows, scroll output, split, close, rename, search. No keystrokes reach the shell. |
| Insert | i | Type into the active shell through the input bar. Esc returns to Normal. |
| AI | a | Enter the Workspace AI prompt. Built-in parser with model: none; LLM-backed with any provider configured. |
| Terminal | Ctrl+\ | Raw terminal input. xterm.js owns the keyboard until Ctrl+\ returns to Normal. |
| Find | / | Fuzzy search across all panes by name, group, cwd, and status. |
| View | v | Isolate the active row for focused watching. |
: in Normal mode opens the same workspace command path inline.
Workspace commands
Built-in commands available when workspace_ai.model: none:
run <cmd> in <session>
run <cmd> in group <group>
<cmd> in all sessions
run X then run Y in <session>
new [name] [in <group>]
rename <session> to <name>
close <session> | close idle | close group <group>
split
focus <session>
group <session> as <group>
note <session> <text>
read <session>
clear <session>
kill <session>
list | status | help
!agent <claude|codex|aider|gemini|opencode|goose|cursor|qwen|amp|crush|openhands|none>
list, status, help, read, focus, and !agent execute immediately. All workspace-changing commands are queued through a plan confirmation step before running.
Highlights
Waterfall layout
Rows stack vertically; horizontal splits live inside a row. With few rows, fluxtty divides the space evenly. With many rows, each row becomes a full-height workspace slice you scroll through.
Agent detection and completion
Detected agents: claude, codex, aider, gemini, opencode, goose, cursor, qwen, amp, crush, openhands. When a pane is running an agent, the mode indicator reflects it and Tab switches to that agent's slash-command completions.
Session identity and auto-naming
Every pane tracks name, group, cwd, status, last command, exit code, tmux session, alternate-screen state, and agent type. New panes are named from cwd, then auto-renamed when significant commands take over. Manual renames stay pinned.
Row notes
m opens a note pane for the active row — branch names, review reminders, agent intent. Notes are included in workspace restore snapshots.
Hot-reload config
~/.config/fluxtty/config.yaml hot-reloads on save. Covers window, font, colors, cursor, shell, tmux, keybindings, input behavior, Workspace AI provider and model, waterfall sizing, persistence, and session defaults.
Configuration
# ~/.config/fluxtty/config.yaml
font:
family: "JetBrains Mono"
size: 13.0
colors:
primary:
background: "#0d1117"
foreground: "#e6edf3"
input:
live_typing: true
workspace_ai:
model: none # or: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, ollama/llama3
always_confirm_broadcast: true
always_confirm_multi_step: true
waterfall:
row_height_mode: viewport
scroll_snap: false
Keybindings
| Key | Mode | Action |
|---|---|---|
h j k l | Normal | Move across panes and rows |
i | Normal, View | Insert mode for the active PTY |
a or : | Normal | Workspace AI / command prompt |
/ | Normal | Fuzzy pane selector |
v | Normal | View mode for the active row |
n | Normal | New terminal row |
s | Normal | Split the active row |
q | Normal | Close the active pane |
m | Normal | Toggle the row note pane |
r | Normal | Rename the active pane |
G / gg | Normal | Jump to bottom / top of workspace |
Ctrl+\ | Any | Toggle raw Terminal mode |
Esc | Insert, AI, Find, View | Return to Normal mode |
Tab | Insert | Shell completion or agent slash-command completion |
Cmd+, / Ctrl+, | Any | Open settings |
Development
npm install
npm run tauri dev # dev with hot reload
npm test
npm run build
npm run tauri build # production bundle
Contributing
Issues and pull requests are welcome. Keep changes focused, run the test suite, and include screenshots or recordings for UI behavior changes.
Inspiration
The waterfall layout idea — terminals stacking vertically, each filling the viewport as you scroll — was shamelessly stolen from infinite-scroll. I prefer the word "inspired."
License
MIT
Collected info
- ★ 8 stars
- Language: TypeScript
- Source updated: 9/14/2026
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.