Skip to main content
observe lets your bot listen to a group without answering β€” every message lands in the transcript, but the agent only runs when it’s @mentioned.

Quick Start

1

Simple Usage

Write the agent that answers when addressed.
Behind the scenes: run this agent through the Telegram bot with group_policy: observe.
2

Gateway YAML (the real switch)

group_policy: observe is the whole change. Add session_scope: per_chat for shared group memory.

How It Works

Unmentioned messages are recorded as passive user turns; the agent only runs on an @mention and sees the full recent conversation.

Policy Options

Every group_policy value and when to pick it.

Interaction Flow

What the group sees versus what the transcript actually holds under observe + per_chat.
The bot stayed silent for the first two messages but still captured them, so the @mention answers with full awareness.

Compatibility

Only Telegram honours observe today. Other adapters gate solely on mention_required and fall back to their default group handling.

Best Practices

Without per_chat, passive turns are keyed under each individual sender’s own session β€” useful for solo group DMs but not shared. Add session_scope: per_chat so every message lands on the shared per-chat transcript that a later @mention reads from.
observe records unmentioned messages without running the agent β€” no LLM tokens spent, no risk of an accidental reply. respond_all + NO_REPLY runs the agent on every message and then chooses silence, which is more expensive and less safe.
DMs always run the agent regardless of group_policy. observe only changes how unmentioned group messages are handled.
Every unmentioned message is stored. In busy or sensitive channels, lower max_history or enable compaction to summarise older turns.

Per-Chat Session Scope

Share one transcript across a group with sender attribution

Bot Intentional Silence

Let the agent choose not to reply with NO_REPLY