Example Buzz agents

Three runnable Kaya agents for research, brainstorming, and deterministic workflows in Buzz

Kaya includes three small Buzz agents under packages/kaya-core-rs/kaya-acp/examples/buzz-agents. Copy one, edit its Kaya program, and point BUZZ_ACP_AGENT_ARGS at its job.yaml.

β€œLet me see how others do it” researcher

The researcher turns every channel request into a long-running generateResearch() task, waits on its correlated event with awaitEvent(), and then asks the conversational model to publish a useful synthesis.

let request = input()
let query = generateResearch(
  message: `Find concrete precedents for: {{request}}`,
  model: researchModel
)
let result = awaitEvent(eventQuery: query)

The complete prompt asks for primary sources, real examples, differences, and transferable lessons. It also treats retrieved material as untrusted evidence so a webpage cannot replace the agent's instructions.

The default job requests the logical alias deep-research-pro-preview-12-2025. Bind and grant that alias in the Rust tool server/client manifests; the deployment may map it to Gemini, Vertex, OpenAI, or a reviewed compatible endpoint. Provider credentials are named by the server manifest and are not read from the Kaya program. Restart the daemon after changing manifests or credential environment values.

For long silent research calls, start the harness with a larger idle timeout:

export BUZZ_ACP_IDLE_TIMEOUT=1800

Brainstorm partner

The brainstorming agent is deliberately simple:

while true {
  input()
  chat(maxToolSteps: 20)
}

Its system message does the interesting work: build on incomplete ideas, offer genuinely different directions, avoid premature project plans, ask at most one question, and converge only when the group is ready. It is a good base for personality and collaboration experiments because there is almost no control code in the way.

Workshop state machine

The workshop example combines a deterministic Kaya transition function with model-driven conversation:

frame --/explore--> explore --/shortlist--> shortlist --/commit--> committed
  ^                                                                    |
  +---------------------------- /reset --------------------------------+

Use ordinary messages to work within a state. Use /status to inspect it and /reset to return to framing. Invalid commands leave the state unchanged.

See the state-machine walkthrough for the implementation and test strategy.

Run any example

export BUZZ_ACP_AGENT_COMMAND='/absolute/path/to/kaya-acp'
export BUZZ_ACP_AGENT_ARGS='/absolute/path/to/example/job.yaml'
export BUZZ_ACP_MCP_COMMAND='/absolute/path/to/buzz-dev-mcp'
buzz-acp

Relay credentials remain in the Buzz harness environment. Model/provider credentials remain in kayad's environment or profile. Neither belongs in an example job.