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.