Skip to content

Streams

A stream is a real-time, multi-subscriber, typed object bus. It is the connective tissue of every Wheelhouse topology.

Every stream supports:

  • Pub/sub — any number of publishers and subscribers
  • Persistence — objects stored in a local append log; no objects lost on restart within the configured retention limit
  • Compaction — periodic summarization via cron jobs (daily, weekly, monthly); summaries committed to git
  • Git backup — compaction summaries form an auditable, versioned history

Streams carry typed objects. Core types shipped with Wheelhouse:

TypeDescription
TextMessagePlain text message
FileMessageFile or binary payload
SkillInvocationRequest to execute a skill
SkillResultResult or error from a skill execution
SkillProgressProgress signal from a long-running skill
CronEventScheduled trigger from a cron job
TopologyShutdownSystem event published before a clean topology stop

Custom surfaces can register their own types (e.g. biotech.MoleculeObject). The wheelhouse.* namespace is reserved.

Stream messages from human users carry a user_id field referencing a registered User — enabling attribution, auditing, and GDPR-compliant data management.

Currently implemented: local (WAL-backed, in-process).

Multi-provider support (elasticsearch, weaviate) with historical query and semantic search is planned for Phase 2.

streams:
- name: main
retention: "30d" # optional duration string; omit to keep forever

A stream without a compaction cron generates a lint warning at wh deploy lint time — objects will accumulate without bound.