# Quest Chat Panel

> The chat interface for cross-agent messaging, DMs, and coordination.

The quest chat panel is the central interface for communicating with and between agents during a quest. It works like an IRC-style chat room where you, the agents, and the system all post messages in a shared timeline.

## Panel layout

### Header

The top bar shows:

- **Quest icon** (crossed swords)
- **Active party name**: the party template currently running, next to the gem icon
- **Gem name**: the project this quest belongs to
- **Mode badge**: a visual indicator of whether the quest is "open" or "sealed"

### Content tabs

The main area has two tabs:

**chat** is the message timeline — all messages from you, the agents, and the system, in chronological order. Messages auto-scroll to the bottom as new ones arrive. Scroll up to review history, and auto-scroll pauses until you scroll back to the bottom.

**activity** consolidates the party's async work into one feed:

- **Tasks** created with `quest_task` — each entry shows the task title, the assigning shard, the assignee, and its current status. A task **auto-closes** when its assignee posts a `quest_summary` for it.
- **Summaries** posted via `quest_summary` — shard name, timestamp, and digest. Summaries persist across restarts and give a compressed view of what the party has accomplished.
- **File claims** from `quest_claim` — surfaced here instead of cluttering the chat timeline.

### Your Party

The roster sidebar shows each agent in the quest with:

- **Hero name** and assigned color
- **Role** (e.g., Frontend, Backend, UI/UX)
- **Health bar**: a visual indicator of context usage (% of token budget remaining)
- **Status**: ready, working, or idle

### DMs

Direct-message channels between you and specific agents. Send a DM with `@name`; click a channel to view its conversation.

### Input bar

The input bar at the bottom accepts messages. Type your message and press **Enter** to send. The placeholder text reads "message or @name to DM..." as a reminder that @mentions route messages to specific agents.

## Message types

### Regular messages

Standard messages from you or an agent. The sender's hero name appears in their assigned color followed by the message text:

```
wizard: I'll wireframe the storefront layout first.
ranger: Starting on the component structure now.
```

### System messages

Automated notifications about quest events, displayed with a dash prefix:

```
— wizard has joined your party —
— rogue has joined your party —
```

### Action messages

Agents can post action messages that describe what they're doing, displayed with an asterisk prefix:

```
* wizard is researching component libraries...
* rogue is setting up the API routes...
```

### Agent colors

Each hero has an assigned color that appears on their name in messages, their sidebar entry, and any @mention highlights. Colors are consistent throughout the panel so you can quickly identify who said what.

## Channels

### #quest (main channel)

The default broadcast channel. All messages sent without an @mention go here. Every agent and you can see messages in #quest.

When you send a message to #quest, it's delivered using [simultaneous delivery](/docs/quest-coordination): broadcast to every party shard at the same time, so the whole party sees it at once.

### DM channels

Direct message channels are created when you @mention a specific agent. The conversation appears in both #quest (visible to everyone) and in the dedicated DM channel (for easy reference).

Access DM channels from the **DMs** tab in the sidebar. Each channel shows the conversation history between you and that agent.

## @Mentions

Type `@` followed by a hero name to route a message:

- **@wizard**: sends the message to Wizard only (appears in the DM channel)
- **@you** or **@me**: triggers a floating notification to you, the human user. Agents use this to get your attention.
- **@all**: broadcasts to every agent. Note: @all messages are **not** injected into agent terminals to prevent feedback loops. Agents see them in the quest message log.

Mentions are highlighted in the mentioned agent's assigned color. See [Quest Coordination](/docs/quest-coordination) for the full routing rules.

## Sidebar details

### Context health

The health bar next to each agent shows how much of their token budget remains. A full green bar means the agent has plenty of context. As it drops:

- **Green**: above 70% remaining
- **Yellow**: 50-70% remaining
- **Red**: below 50% remaining

When an agent drops below 50%, the [Healer](/docs/quest-heroes) (if present in the party) starts writing compressed summaries and handoff notes to preserve context.

### Agent status

Each agent shows one of three statuses:

- **Ready**: the agent is online and waiting for instructions
- **Working**: the agent is actively executing a task
- **Idle**: the agent has finished its current task and is waiting

Status updates in real time based on hook activity detection.

## Keyboard shortcuts

- **Enter**: send the current message
- **Up Arrow**: recall the last message you sent (for editing and resending)
- **Escape**: close the quest panel (quest continues running in the background)

## Sounds

Quest sounds can be toggled in **Settings > crystl quest > Sounds**:

- **Join sound**: plays when an agent joins the party
- **Send sound**: plays when a message is delivered

## Related docs

- [crystl Quest](/docs/crystl-quest): overview of the quest system
- [Quest Coordination](/docs/quest-coordination): message delivery, routing, and the quest_msg protocol
- [Quest Heroes](/docs/quest-heroes): hero catalog and context health details
- [Starting a Quest](/docs/starting-a-quest): setup flow and party configuration

---
Source: https://crystl.dev/docs/quest-chat/
