waterfall terminal · modal input · workspace AI

A vim-modal terminal
for AI development.

You don't just write code anymore — you direct agents. fluxtty is a keyboard-driven workspace for supervising many AI sessions at once, with the modal efficiency that made vim indispensable.

no sessions New Split Settings Help
NORMAL

You used to write code.
Now you supervise agents.

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

  • Write code manually in an editor.
  • One terminal for the occasional command.
  • Run tests yourself, read output, patch manually.
  • Context-switch between editor, browser, terminal.

Now

  • Agents write; you review, steer, and unblock.
  • 8–12 sessions open in parallel: agents, servers, shells.
  • Monitor outputs, redirect agents, course-correct fast.
  • The terminal is the entire workspace.

Every primitive built for supervising agents at scale.

Not a terminal skin. The core is row-based layout, session identity, explicit modes, and PTY-safe input routing — built to handle 10 open agents without losing track of any of them.

ROW

Waterfall rows

Rows stack vertically. Horizontal splits live inside a row. When there are many rows, the workspace scroll becomes the layout.

MODE

Modal input bar

Normal, Insert, AI, Terminal, Find, and View modes are explicit states. The input bar changes label, prompt, and key routing with the current mode.

FIND

Pane selector

/ opens fuzzy search over pane name, group, cwd, and status. Arrow keys or j/k move; Enter focuses the pane.

PTY

xterm.js panes

The panes are real xterm.js terminals backed by Tauri and portable-pty, with raw terminal mode for TUIs and full-screen apps.

TAB

Shell and slash completion

Tab completes commands and paths through the Rust backend. Agent panes switch slash completion to the detected agent's command list.

AI

Agent detection

Detected agents include claude, codex, aider, gemini, opencode, goose, cursor, qwen, amp, crush, and openhands.

ID

Session identity

Panes track name, group, cwd, status, last command, last exit code, tmux session, alternate-screen state, and agent type.

CMD

Workspace commands

The action layer supports run, read, pipeline, broadcast, groups, new, rename, close, split, focus, note, clear, kill, paste, and agent-send.

NOTE

Row notes and restore

m opens the row note pane. Row notes and layout are included in the workspace snapshot when restore is enabled.

YML

Hot-reload config

Window, font, colors, cursor, shell, tmux, input, Workspace AI, waterfall, persistence, and session defaults live in YAML.

One mode. One purpose. No ambiguity.

Each mode has a color, a label, and a distinct routing rule. The input bar shows exactly where your keystrokes go — to the workspace, to a shell, to an agent, or to raw xterm.

NORMAL

Default workspace control. Move with h j k l, create with n, split with s, close with q, rename with r, note with m, search with /.

INSERT

Line editor to PTY. Press i to type into the active pane. Tab completes shell paths or detected agent slash commands. Esc returns to Normal.

AI

Workspace command input. Press a for the Workspace AI prompt. With model: none, exact built-in commands are parsed; with a model configured, responses can emit structured action blocks.

TERMINAL

Raw xterm control. Press Ctrl+\ when vim, htop, a TUI, or an agent prompt should own the keyboard directly.

VIEW

Focused row watching. Press v to isolate the active row while preserving the same pane and mode model.

Direct your workspace in plain language.

Press a and describe what you want done. The built-in parser handles common actions without a model. Set workspace_ai.model to route natural language to any LLM — Anthropic, OpenAI, Gemini, or local Ollama.

Built-in parser examples
a run npm test in frontend
a run cargo test in group backend
a npm test in all sessions
a run cargo test then run npm test in api-agent
a new api in backend
a rename api to api-agent
a close idle
a close group scratch
a focus frontend
a group api-agent as backend
a note api-agent check migration output
a read tests
a clear db
a kill api-agent
a list
a !agent claude
Immediate parser actionslist, status, help, read, focus, and !agent run immediately.
Changing parser actionsRun, new, rename, close, close-group, split, group, note, clear, and kill are queued through the shared confirmation flow.
LLM action blocksConfigured models can emit structured actions including agent-send, run-await, and pipeline.

AI proposes. You execute.

Workspace-changing actions are queued into a plan that you review before anything runs. A single y executes; anything else aborts. You stay in control.

Plan preview
AI plan (3 actions):
  create new session "api" in group "backend"
  run "cargo test" in group "backend"
  rename "api" -> "api-agent"

execute? y/N

Up in two commands.

Grab the latest release for macOS, Linux, or Windows — or build from source with Tauri. Config lives in a single YAML file.

Homebrew
brew tap amoswzw/tap
brew install --cask fluxtty
Build
git clone https://github.com/amoswzw/fluxtty
cd fluxtty
npm install
npm run tauri build
Config
~/.config/fluxtty/config.yaml

input:
  live_typing: true
workspace_ai:
  model: none

Learn it in 30 seconds.

All shortcuts follow vim conventions. Any binding can be remapped in config.yaml.

Move panes and rowsh j k l
Insert modei
AI modea
View modev
Find pane/
Inline command:
New terminaln
Split rows
Close paneq
Row notem
Raw terminalCtrl+\
SettingsCmd+, / Ctrl+,