Repository navigation
refactor(agents): let Claude and Codex read the community through a host interface - #962
Merged
Merged
Conversation
This was referenced Oct 13, 2026
The Claude runtime read the channel, conversation, names and memory through the owner's app connection. It now asks an AgentReads port for them, which the app fills from that same connection (ownerReads), so its behavior is unchanged. A standalone host can give it reads made as the agent instead. The run part of the type (models, run and the hand-over deadline) moves to run.ts, which imports no views, and fromOwner moves next to the attestation check it uses, so the run code no longer imports the agents service. Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
The Codex runtime read the channel, conversation and memory through the owner's app connection, like Claude did. It now uses the same AgentReads port, filled by ownerReads in the app, so a standalone host can run it with reads made as the agent. The port's memory read takes a signal; each runtime keeps its own bound (Claude five seconds, Codex its turn). The run part of the type moves to run.ts, as Claude's did. Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz> Signed-off-by: Logan Johnson <loganj@squareup.com>
loganj
force-pushed
the
agent-host-reads
branch
from
October 13, 2026 16:44
143f4c5 to
d6928af
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖
Summary
Why
Buzz agents are AI assistants, such as Claude or Codex, that a person sets up in the Buzz desktop app. They answer when someone mentions them in a channel, and they can also watch for events and run on a timer. Today an agent runs only while its owner's desktop app is open, because the code that runs agents lives inside the app.
The goal of this stack is a small command-line program that runs an agent with the app closed. It must use the same code as the app, so the agent behaves the same wherever it runs. The app keeps working exactly as it does today.
Stack
Review in order. Each PR keeps the app working.
buzz-agent-host, the program that runs an agent with the app closed.Details
src/features/agents/reads.ts: theAgentReadsinterface (channel facts, conversation reads, profiles, names, memories, and which community the agent is in), plusownerReads, the app's implementation.ownerReadsis the existing code, moved.ctx.agents.relay(pubkey)). That object exists only inside the app. The interface lists only the reads an agent needs.src/bundled/claude-code/run.tsandsrc/bundled/codex/run.ts: the parts of each agent type that run an agent (model list, run, hand-over deadline), without its settings screens. A program with no user interface can load them. The app registers them with their screens as before.fromOwner, the check that only the owner or the owner's agents can give an agent instructions, moves next to the signature check it uses. The agents service still exports it.ownerReads.