How requests are handled

A Pasture turn is a routing decision plus a reasoning loop. The important part is not only what it can do, but when it chooses a tool, asks for approval, or stays conversational.

Request lifecycle

StepWhat happens
1. IntakeA message arrives from the dashboard, WhatsApp, Telegram, a group, or an internal agent delegation.
2. RoutePasture picks the selected agent for that chat. Groups use the group assignment; internal delegation uses the allow list.
3. ContextThe agent loads identity, channel context, active goals, selected project data, recent conversation, and relevant memories.
4. IntentThe runtime decides whether the turn is chat-only or needs skills such as search, browse, GitHub, cron, memory, or agent-send.
5. ActThe agent calls allowed tools. Sensitive writes require explicit confirmation where the skill requires it.
6. ReplyThe coordinator synthesizes one human answer and sends it back to the original channel.

Decision rules

SituationHandling rule
Simple questionAnswer directly from current context. No tool call is needed unless the user asks for live, private, or stored information.
Live informationUse search or browser. Pasture should not rely on stale model knowledge for weather, news, websites, or current project state.
Past conversationUse memory/chat search only when the user explicitly asks about earlier conversations, logs, yesterday, or previous decisions.
Project workUse the project workflow: catalog check, health check, proposed mission/tasks, explicit approval, progress updates.
Specialist workUse agent-send when another linked agent owns the skills, persona, or context. The target gets a complete task brief.
External writeFor GitHub, Google, project mission creation, and similar writes, preview the change and wait for the user's approval when required.

Scenario walkthroughs

User asksPasture handles it by
Remind me every weekday at 8Create a recurring cron job with the user's timezone and attach the reply channel to the originating chat.
Open this site and find pricingNavigate in the local browser, extract visible content, scroll or screenshot if needed, then summarize with evidence.
What did we decide yesterday?Search chat/memory by date, read the matching snippet, and answer from that result instead of guessing.
Work on NextPostAILook up the project catalog. If missing, ask for name/description/setup notes. If ready, propose a mission and task list.
Ask backend to review this planMain sends the plan to the linked backend agent, receives its reply, and synthesizes it for the user.
Turn off the bedroom lightHome Assistant searches or resolves the friendly device name, calls the local Home Assistant instance, and replies without raw entity IDs.

Important boundaries

  • Internal agent messages never go to WhatsApp or Telegram; only the final synthesized answer is sent back.
  • Group chats can be restricted with skill deny lists, and agent-send is disabled in groups.
  • Memory is for durable facts and prior decisions, not for silently saving every private detail.
  • Dashboard Projects are a catalog; ongoing work belongs in Goals/Missions with subgoals and progress.

For channel-specific routing, continue to Channels.