Show HN: Gwae – infinite-scroll terminal multiplexer for AI agent fleets Developer hongnoul released gwae, an open-source infinite-scroll terminal multiplexer for running fleets of CLI AI coding agents, installable via curl or Homebrew on macOS. Gwae adds a heads-up display over OSC 133 with Running, Idle, and Failed agent states, a smart jump (⌥+g) that cycles Idle panes with Failed ranked first, a spawn-directory picker (⌥+d), an agent harness picker (⌥+Shift+;), and a caffeinate toggle (⌥+w) to keep long jobs awake. The tool is developed and tested only on macOS, with Windows contributions welcomed and Linux users pointed to the niri scrolling window manager that inspired it. Lightweight, Lightspeed Tested with Ghostty https://github.com/ghostty-org/ghostty and Jcode https://github.com/1jehuang/jcode on MacBook Pro M4 Developed and tested on macOS only. Contributions for Windows are welcome. Linux users: I recommend niri https://github.com/YaLTeR/niri , the scrolling window manager that inspired gwae. curl -fsSL https://hongnoul.github.io/gwae/install.sh | bash or with Homebrew: brew install hongnoul/tap/gwae Official docs are still WIP. | Feature | Default | What it does | |---|---|---| | Heads-up display | hold ⌥ | Live agent status minimap over standard OSC 133 with Running, Idle, and Failed states | | Smart jump | ⌥+g | Cycles through Idle panes with Failed states ranked first | | Hatchery | ⌥+d | Opens the spawn-directory picker to choose where the next pane process starts | | Agent selector | ⌥+Shift+; | Opens the harness picker to spawn a specific agent instead of your default choice | | Drag to copy | drag | Left-drag selects and copies on release via pbcopy with OSC 52 fallback for remote sessions | | Caffeinate | ⌥+w | Toggles the macOS caffeinate assertion so a long-running job never sleeps mid-task | When to use gwae and how it compares vs tmux and herdr https://github.com/hongnoul/gwae/blob/main/docs/when-to-use.md : running several CLI coding agents at once, tmux panes shrinking into slivers, or wanting niri's scrolling layout in the terminal. ⌥ + / opens the cheat sheet. Vim-style movement, like a tiling WM: h left · j down · k up · l right Paste this into an agent pane: You are teaching me gwae, a scrolling terminal multiplexer. I am inside a gwae pane talking to you. I am a beginner: assume I know nothing beyond typing in a terminal. Walk me through each step below one at a time. For each step, tell me exactly what to press, what I should see, and how to confirm it worked. Wait for my confirmation before moving on. If something does not work, stop and help me fix it before continuing. Do not skip ahead and do not dump all steps at once. 0. Fix the modifier key first. Nothing below works without this. Have me press ⌥+/ . If the cheat sheet opens, it works; press Esc to close it. If a special character types instead, tell me to set Option to act as Meta in my terminal Terminal.app: Preferences, Profiles, Keyboard, Use Option as Meta Key; iTerm2, Ghostty, WezTerm have the equivalent , then retry. Do not proceed until ⌥+/ opens the cheat sheet. 1. Open a pane: have me press ⌥+Enter once. Confirm a new shell pane appears to the right. 2. Move: have me press ⌥+h and ⌥+l to move between the two panes. Confirm the focus ring follows. Then have me press ⌥+k and ⌥+j. Mention click-to-focus only after these work. 3. Open more: have me press ⌥+Enter until there are 6 panes. If I get lost, remind me ⌥+h/l moves between panes. Point out the viewport scrolling right while every pane keeps its width. 4. Reshape: have me press ⌥+r to cycle the focused column's width, then ⌥+b to split below. Mention ⌥+f full width and ⌥+Shift+h/j/k/l move pane in all four directions only after these work. 5. Agents: have me press ⌥+; to spawn an agent first press offers what is installed and remembers it . Confirm Cmd+V pastes text into the pane native terminal paste . Mention ⌥+Shift+; picker , ⌥+d spawn directory , and gwae run "claude" CLI start after. 6. History: have me press ⌥ plus the up and down arrows to scroll the focused pane's history add Shift for a bigger jump . Then have me press ⌃+⇧+K and ⌃+⇧+J for the three-line transcript scroll, noting it goes to the agent itself inside agent panes. Left and right arrows always type into the pane, never scroll. Confirm history moves without moving focus. 7. Stuck panes: have me hold ⌥ for the dashboard » working, needs input, ✗ failed , then ⌥+g to jump to the neediest pane. Mention clicking a tile focuses it. 8. Help and quit: show ⌥+/ cheat sheet , ⌥+q close pane , ⌥+Shift+q quit; last pane exiting quits gwae . Mention ⌥+w keep-awake last. 9. Health: only now, have me type exit in panes until one shell is left, then run gwae doctor in it and confirm exit 0. If anything fails, run gwae init. Mention ~/.config/gwae/gwae.toml all keys optional, live-reloads only here, at the end. git clone https://github.com/hongnoul/gwae cd gwae cargo build cargo test --workspace | Metric | Method | gwae | herdr 0.9.1 | tmux 3.7c | |---|---|---|---|---| | Echo p50 | Keystroke to visible echo in a real PTY harness, median | 0.34 ms | 0.48–0.50 ms | 0.36–0.37 ms | | Echo p90 | Keystroke to visible echo in a real PTY harness, 90th pct | 0.36–0.38 ms | 0.54 ms | 0.42–0.43 ms | | Spawn p50 | New pane request to first painted frame, median | 0.48–0.52 ms | 0.63–0.70 ms | 4.1–4.7 ms | if you are an ai agent driving gwae, read docs/agents.md https://github.com/hongnoul/gwae/blob/main/docs/agents.md before spawning panes.