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
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 |
brew tap amoswzw/tap
brew install --cask fluxttyLatest 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 |
Prerequisites: Rust 1.77+, Node.js 18+, Tauri v2 prerequisites.
git clone https://github.com/amoswzw/fluxtty
cd fluxtty
npm install
npm run tauri buildnpm run tauri dev # developmentfluxtty 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.
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.
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.
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.
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.
m opens a note pane for the active row — branch names, review reminders, agent intent. Notes are included in workspace restore snapshots.
~/.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.
# ~/.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| 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 |
npm install
npm run tauri dev # dev with hot reload
npm test
npm run build
npm run tauri build # production bundleIssues and pull requests are welcome. Keep changes focused, run the test suite, and include screenshots or recordings for UI behavior changes.
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."
MIT
