{"id":48755266,"url":"https://github.com/amoswzw/fluxtty","last_synced_at":"2026-05-08T02:39:45.505Z","repository":{"id":346530348,"uuid":"1190358201","full_name":"amoswzw/fluxtty","owner":"amoswzw","description":"A vim-modal terminal for AI development.","archived":false,"fork":false,"pushed_at":"2026-04-27T01:14:50.000Z","size":38546,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-27T03:20:48.056Z","etag":null,"topics":["ai-development","ai-terminal","terminal","vim-terminal"],"latest_commit_sha":null,"homepage":"https://amoswzw.github.io/fluxtty/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amoswzw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-24T07:54:36.000Z","updated_at":"2026-04-27T01:14:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/amoswzw/fluxtty","commit_stats":null,"previous_names":["wangzewang/fluxtty","amoswzw/fluxtty"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/amoswzw/fluxtty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amoswzw%2Ffluxtty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amoswzw%2Ffluxtty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amoswzw%2Ffluxtty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amoswzw%2Ffluxtty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amoswzw","download_url":"https://codeload.github.com/amoswzw/fluxtty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amoswzw%2Ffluxtty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32412890,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T05:20:56.964Z","status":"ssl_error","status_checked_at":"2026-04-29T05:19:54.749Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-development","ai-terminal","terminal","vim-terminal"],"created_at":"2026-04-13T01:21:31.091Z","updated_at":"2026-04-29T06:02:06.704Z","avatar_url":"https://github.com/amoswzw.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fluxtty\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src-tauri/icons/icon.png\" width=\"112\" height=\"112\" alt=\"fluxtty\" /\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eA vim-modal terminal workspace for AI development.\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  You don't just write code anymore — you supervise agents.\u003cbr/\u003e\n  fluxtty is a keyboard-driven workspace for running many AI sessions in parallel,\u003cbr/\u003e\n  with the modal efficiency that made vim indispensable.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/amoswzw/fluxtty/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/amoswzw/fluxtty/actions/workflows/ci.yml/badge.svg\" alt=\"CI\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/amoswzw/fluxtty/actions/workflows/codeql.yml\"\u003e\u003cimg src=\"https://github.com/amoswzw/fluxtty/actions/workflows/codeql.yml/badge.svg\" alt=\"CodeQL\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/amoswzw/fluxtty/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/amoswzw/fluxtty\" alt=\"Release\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-2f363d\" alt=\"Platform\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Tauri-2.x-24b47e\" alt=\"Tauri\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-4f8cff\" alt=\"License\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://amoswzw.github.io/fluxtty/\"\u003e\u003cstrong\u003eLive demo →\u003c/strong\u003e\u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;·\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://github.com/amoswzw/fluxtty/releases/latest\"\u003e\u003cstrong\u003eDownload latest release\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/fluxtty-preview.gif\" width=\"100%\" alt=\"fluxtty workspace preview\" /\u003e\n\u003c/p\u003e\n\n## The idea\n\nWhen 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.\n\n| Before | Now |\n| --- | --- |\n| Write code manually in an editor. | Agents write; you review, steer, and unblock. |\n| One terminal for the occasional command. | 8–12 sessions open in parallel: agents, servers, shells. |\n| Run tests yourself, read output, patch manually. | Monitor outputs, redirect agents, course-correct fast. |\n| Context-switch between editor, browser, terminal. | The terminal is the entire workspace. |\n\nfluxtty applies vim's modal philosophy to the whole terminal workspace:\n\n| Need | fluxtty answer |\n| --- | --- |\n| Watch many sessions at once | Waterfall rows keep all agents visible without squeezing into a tiny grid |\n| Move without touching the mouse | Normal mode: `h j k l` navigation, `/` fuzzy search, `n` new, `s` split, `q` close |\n| Type safely into any shell | Insert mode routes input to the active PTY — Normal mode never leaks keys into a running agent |\n| Use real terminal apps | Terminal mode gives xterm.js raw keyboard control for vim, htop, TUIs, and agent prompts |\n| Coordinate the workspace | Workspace AI can run, read, create, rename, group, pipeline, and dispatch across sessions |\n\n## Install\n\n### Homebrew on macOS\n\n```bash\nbrew tap amoswzw/tap\nbrew install --cask fluxtty\n```\n\n### Download\n\n**[Latest release](https://github.com/amoswzw/fluxtty/releases/latest)** — macOS, Linux, Windows\n\n| Platform | Package |\n| --- | --- |\n| macOS Apple Silicon | `fluxtty_*_aarch64.dmg` |\n| macOS Intel | `fluxtty_*_x64.dmg` |\n| Linux | `fluxtty_*_amd64.deb`, `.rpm`, `.AppImage` |\n| Windows | `fluxtty_*_x64-setup.exe` |\n\n### Build from source\n\nPrerequisites: [Rust](https://rustup.rs/) 1.77+, [Node.js](https://nodejs.org/) 18+, [Tauri v2 prerequisites](https://tauri.app/start/prerequisites/).\n\n```bash\ngit clone https://github.com/amoswzw/fluxtty\ncd fluxtty\nnpm install\nnpm run tauri build\n```\n\n```bash\nnpm run tauri dev   # development\n```\n\n## Modes\n\nfluxtty has one persistent input bar with a small set of explicit modes:\n\n| Mode | Enter | What happens |\n| --- | --- | --- |\n| **Normal** | default | Navigate panes and rows, scroll output, split, close, rename, search. No keystrokes reach the shell. |\n| **Insert** | `i` | Type into the active shell through the input bar. `Esc` returns to Normal. |\n| **AI** | `a` | Enter the Workspace AI prompt. Built-in parser with `model: none`; LLM-backed with any provider configured. |\n| **Terminal** | `Ctrl+\\` | Raw terminal input. xterm.js owns the keyboard until `Ctrl+\\` returns to Normal. |\n| **Find** | `/` | Fuzzy search across all panes by name, group, cwd, and status. |\n| **View** | `v` | Isolate the active row for focused watching. |\n\n`:` in Normal mode opens the same workspace command path inline.\n\n## Workspace commands\n\nBuilt-in commands available when `workspace_ai.model: none`:\n\n```text\nrun \u003ccmd\u003e in \u003csession\u003e\nrun \u003ccmd\u003e in group \u003cgroup\u003e\n\u003ccmd\u003e in all sessions\nrun X then run Y in \u003csession\u003e\nnew [name] [in \u003cgroup\u003e]\nrename \u003csession\u003e to \u003cname\u003e\nclose \u003csession\u003e | close idle | close group \u003cgroup\u003e\nsplit\nfocus \u003csession\u003e\ngroup \u003csession\u003e as \u003cgroup\u003e\nnote \u003csession\u003e \u003ctext\u003e\nread \u003csession\u003e\nclear \u003csession\u003e\nkill \u003csession\u003e\nlist | status | help\n!agent \u003cclaude|codex|aider|gemini|opencode|goose|cursor|qwen|amp|crush|openhands|none\u003e\n```\n\n`list`, `status`, `help`, `read`, `focus`, and `!agent` execute immediately. All workspace-changing commands are queued through a plan confirmation step before running.\n\n## Highlights\n\n### Waterfall layout\n\nRows 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.\n\n### Agent detection and completion\n\nDetected 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.\n\n### Session identity and auto-naming\n\nEvery 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.\n\n### Row notes\n\n`m` opens a note pane for the active row — branch names, review reminders, agent intent. Notes are included in workspace restore snapshots.\n\n### Hot-reload config\n\n`~/.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.\n\n## Configuration\n\n```yaml\n# ~/.config/fluxtty/config.yaml\n\nfont:\n  family: \"JetBrains Mono\"\n  size: 13.0\n\ncolors:\n  primary:\n    background: \"#0d1117\"\n    foreground: \"#e6edf3\"\n\ninput:\n  live_typing: true\n\nworkspace_ai:\n  model: none                    # or: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, ollama/llama3\n  always_confirm_broadcast: true\n  always_confirm_multi_step: true\n\nwaterfall:\n  row_height_mode: viewport\n  scroll_snap: false\n```\n\n## Keybindings\n\n| Key | Mode | Action |\n| --- | --- | --- |\n| `h` `j` `k` `l` | Normal | Move across panes and rows |\n| `i` | Normal, View | Insert mode for the active PTY |\n| `a` or `:` | Normal | Workspace AI / command prompt |\n| `/` | Normal | Fuzzy pane selector |\n| `v` | Normal | View mode for the active row |\n| `n` | Normal | New terminal row |\n| `s` | Normal | Split the active row |\n| `q` | Normal | Close the active pane |\n| `m` | Normal | Toggle the row note pane |\n| `r` | Normal | Rename the active pane |\n| `G` / `gg` | Normal | Jump to bottom / top of workspace |\n| `Ctrl+\\` | Any | Toggle raw Terminal mode |\n| `Esc` | Insert, AI, Find, View | Return to Normal mode |\n| `Tab` | Insert | Shell completion or agent slash-command completion |\n| `Cmd+,` / `Ctrl+,` | Any | Open settings |\n\n## Development\n\n```bash\nnpm install\nnpm run tauri dev    # dev with hot reload\nnpm test\nnpm run build\nnpm run tauri build  # production bundle\n```\n\n## Contributing\n\nIssues and pull requests are welcome. Keep changes focused, run the test suite, and include screenshots or recordings for UI behavior changes.\n\n## Inspiration\n\nThe waterfall layout idea — terminals stacking vertically, each filling the viewport as you scroll — was shamelessly stolen from [`infinite-scroll`](https://github.com/gaojude/infinite-scroll). I prefer the word \"inspired.\"\n\n---\n\n## License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famoswzw%2Ffluxtty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famoswzw%2Ffluxtty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famoswzw%2Ffluxtty/lists"}