Core Concepts
Typing indicators
When Reeve shows typing indicators and how to tune them
Typing indicators
Typing indicators are sent to the chat channel while a run is active. Use
agents.defaults.typingMode to control when typing starts and typingIntervalSeconds
to control how often it refreshes.
Defaults
When agents.defaults.typingMode is unset, Reeve keeps the legacy behavior:
- Direct chats: typing starts immediately once the model loop begins.
- Group chats with a mention: typing starts immediately.
- Group chats without a mention: typing starts only when message text begins streaming.
- Heartbeat runs: typing is disabled.
Modes
Set agents.defaults.typingMode to one of:
neverβ no typing indicator, ever.instantβ start typing as soon as the model loop begins, even if the run later returns only the silent reply token.thinkingβ start typing on the first reasoning delta (requiresreasoningLevel: "stream"for the run).messageβ start typing on the first non-silent text delta (ignores theNO_REPLYsilent token).
Order of βhow early it firesβ:
never β message β thinking β instant
Configuration
{
agent: {
typingMode: "thinking",
typingIntervalSeconds: 6
}
}You can override mode or cadence per session:
{
session: {
typingMode: "message",
typingIntervalSeconds: 4
}
}Notes
messagemode wonβt show typing for silent-only replies (e.g. theNO_REPLYtoken used to suppress output).thinkingonly fires if the run streams reasoning (reasoningLevel: "stream"). If the model doesnβt emit reasoning deltas, typing wonβt start.- Heartbeats never show typing, regardless of mode.
typingIntervalSecondscontrols the refresh cadence, not the start time. The default is 6 seconds.