Skip to main content
Assuming reasoning is enabled, you can control the perspectives representations are built from. This page covers:
  1. Default Behavior — Honcho reasons over every message written to a peer
  2. Observer-Observed Model — How peers build representations of other peers
  3. Querying with Target — Accessing perspective-specific representations
  4. Use Cases — When to use directional representations

Default: Reasoning On

When observe_me=true (the default), Honcho forms one representation per peer, reasoning over every message written to that peer across all sessions. You can retrieve a subset of conclusions from a peer’s representation using representation():
This is sufficient for most applications—Honcho reasons over every message written to the peer, storing conclusions that any part of your system can retrieve.

Observer-Observed Representations

When you enable observe_others=true at the session level, peers begin forming directional representations of other peers they interact with. These representations are scoped to what that observer has actually witnessed.

How It Works

Each peer has one representation, but that representation can contain reasoning about:
  • Itself (when Honcho observes the peer with observe_me=true)
  • Other peers (when the peer observes others with observe_others=true)
These are stored as separate (observer, observed) pairs in Honcho’s internal collections:

Information Segmentation

This enables sophisticated scenarios where different agents have different knowledge based on what they’ve actually witnessed. Example: Bob and Charlie tell different things to Alice in separate sessions.
With observe_others=true enabled on Alice:
  • Alice’s representation of Bob only includes Session 1 (she heard Bob say he had pancakes)
  • Alice’s representation of Charlie only includes Session 2 (she heard Charlie’s claim about Bob lying)
  • Honcho’s representation of Alice reasons over both sessions

Querying with Target

The target parameter controls which representation you retrieve:

Code Examples

Chat Endpoint with Target

The target parameter also works with the chat endpoint:
The target parameter only returns meaningful results if the observer peer has observe_others=true and has actually participated in sessions with the observed peer. Otherwise, the representation will be empty or non-existent.

When to Use Directional Representations

Use Cases Where This Matters

  1. Multi-agent games: NPCs should only know what they’ve witnessed, not omniscient game state
  2. Information asymmetry scenarios: Different agents have access to different information
  3. Perspective-dependent agents: Agent behavior depends on their unique understanding of other agents
  4. Privacy-segmented systems: Users should only see representations based on their interactions

Use Cases Where Default Is Sufficient

  1. Single-user applications: Only one user, so perspective doesn’t matter
  2. Centralized knowledge systems: All agents should share the same understanding
  3. Simple chatbots: No multi-agent interaction or information segmentation needed
Most applications don’t need directional representations. Start with the default Honcho-observes-all behavior and only enable observe_others when you need information segmentation between agents.

Architecture: How It’s Stored

Under the hood, Honcho stores representations as (observer, observed) pairs in internal collections:
  • Collection: A unique (observer, observed, workspace) tuple containing documents
  • Documents: Individual conclusions and artifacts (deductive, inductive, abductive conclusions, summaries, peer cards) with session scoping
When you retrieve with target, Honcho fetches documents from the specific (observer, observed) collection. When you retrieve without target, it fetches from the (peer, peer) collection—the peer’s self-representation. This architecture enables:
  • Efficient querying: Each perspective is isolated and can be queried independently
  • Session filtering: Within a collection, documents can be filtered by session
  • Scalability: Adding more observers doesn’t degrade query performance

Semantic Search Parameters

Both representation() and chat() support semantic filtering to retrieve a subset of relevant conclusions. You can optionally filter by session to retrieve only conclusions from specific session context:

When Representations Update

Directional representations update automatically through the reasoning pipeline when:
  1. A message is created in a session
  2. The message sender has observe_me=true (or session-level equivalent)
  3. Other peers in the session have observe_others=true
The pipeline respects scoping—Honcho’s representations reason over messages across all sessions, while directional representations only reason over messages from sessions where the observer was an active participant.

Peer Join Order Matters

Reasoning tasks are scheduled at the time a message is created, based on which peers are in the session at that moment. Honcho does not retroactively schedule reasoning for peers that join later. This means:
  • If Peer C joins a session after messages from Peer A and Peer B have already been sent, Peer C will not receive reasoning tasks for those earlier messages—even if Peer C has observe_others=true.
  • Peer C will only begin observing new messages sent after they join the session.
  • Similarly, if a peer leaves a session, they stop being included as an observer for any messages sent after their departure.
There is no retroactive reasoning. If your application needs an observer peer to reason about prior conversation history, add the peer to the session before messages are sent. Alternatively, use peer.chat() to include conversation history in the agent’s context whether or not those messages were previously reasoned over.
Conclusions are cached for fast retrieval. Use representation() to retrieve stored conclusions for dashboards and analytics. Use peer.chat() when you need query-specific reasoning with natural language.