grove

Multi-window

Grove supports multiple top-level OS windows. The two big use cases: side-by-side viewing — two workspace worktrees, or code next to a browser — and tearing a tab off into its own window by dragging it out of the tab strip.

The model

  • Each window is a full, independent Grove surface pointed at one vault: its own panes, panels, selection, terminals, and browser tabs. Layout persists per window.
  • Two windows can point at the same vault — that's the side-by-side case.
  • New Window is in the app menu (Cmd+Shift+N); macOS dock-reopen restores your last vault.

One window owns a workspace

Grove enforces a cross-window lock: one worktree is never driven from two windows at once. If a workspace is active in another window, the rail tells you which one rather than letting two agents' surfaces fight over the same files.

Tear-off

Drag a tab out of the tab strip and it becomes its own window:

  • File tabs migrate cleanly — same buffer, same state.
  • Terminal and agent-chat tabs carry their live session with them — the running process and scrollback survive the move.
  • Browser tabs recreate the page at the same URL (history doesn't carry).

Shared underneath

The heavyweight services — language servers, the comment store, the diff watcher, the MCP server, the IDE bridge — are single shared instances across all windows. Opening a second window doesn't double your memory for rust-analyzer.

Current limitations

  • One vault per window.
  • Window size and position aren't persisted — only the layout inside each window is.
  • Chats aren't window-locked the way workspaces are.