grove

Chat and terminal

Every chat in Grove is a real terminal. The agent CLI — Claude Code, Codex, or opencode — runs as an actual PTY child rendered with xterm.js, so you get the full interactive surface of the agent you chose: slash commands, multi-line edits, real scrollback. There is no separate "bubble" chat renderer; a chat and an agent terminal are the same machinery.

Per-task chats

A task can hold any number of chats, each with its own agent. Start one from the task's hover card (one button per provider), from Cmd+N, or from the new-tab picker. Each chat's metadata and transcript live under the task's chats/ folder — conversations are part of the task, not app state.

A chat opens as a floating popover by default. It can be expanded into a full editor tab when you want more room — or split into its own pane — or minimized to the bar at the bottom of the window. None of those transitions touch the agent process: every terminal session has exactly one live host that survives being moved, so promoting a popover to a tab doesn't break the agent's connection.

Agent providers

Grove launches whichever agent a chat is configured for. Each provider declares its own capabilities, config format, and resume behavior:

  • Claude Code — resumes its own session across close/reopen; self-heals if the transcript directory was wiped.
  • Codex — resumes when its session file confirms the id.
  • opencode — always opens fresh.

Agents are exec'd directly as the PTY child — no shell wrapper, no rc-file noise. They read their instruction file (CLAUDE.md / AGENTS.md) from the working directory like they would in your own terminal.

Chats auto-name themselves

The chat pill follows the agent's terminal title — as the agent moves between subtasks, the label updates to whatever it's currently working on. The pill also tints when a turn finishes while you're focused elsewhere, and badges the task's open-comment count.

The workspace chat

Not everything belongs to a task. A workspace chat runs at the repo root with a Grove-provided system prompt, has the full MCP tool surface, and can create tasks — useful as a dispatcher: describe the work, let the agent split it into tasks with their own worktrees.

Standalone terminals

Grove also hosts plain terminals — floating bubbles (Cmd+T), tabs inside editor panes — running your real shell. They share the chat's backend machinery, and they survive task switches: the PTY and scrollback keep running; expanding a minimized terminal puts you exactly where you left off.

Scrolling that doesn't fight you

Output auto-follows while you're at the bottom. Scroll up to read something and Grove leaves the viewport alone; scroll back down (or type) and follow re-arms. This sounds obvious — it's surprisingly hard to get right with a terminal grid, and it's handled.

See also

  • Task rail — where tasks and their chats live.
  • Comments — the structured channel that complements chat for review.
  • MCP — the tools every agent chat gets.