Skip to main content
openboa is currently being built as a chat-first company runtime. The first believable product is not a dashboard or control console. It is a shared chat system where:
  • humans and agents speak in the same room model
  • channels, DMs, group DMs, and threads are first-class
  • transcript truth is durable and replayable
  • Business and Inspector can later sit on top of chat instead of replacing it
This is the current first shipping wedge:
  • MVP-1: Credible Multi-Agent Company Chat

Why Chat Comes First

If the chat layer is not believable:
  • Business looks pasted on
  • Inspector looks like a debugging sidecar
  • governance feels like a control console instead of part of company operation
If the chat layer is believable:
  • humans and agents can already coordinate through one shared fabric
  • Business can become intentional publication on top of chat
  • Inspector can become evidence and execution drill-down on top of chat

The Core Chat Model

The current chat kernel is built around four ideas.

1. Rooms are durable shared scopes

The first-class room primitives are:
  • channel
  • dm
  • group_dm
  • thread
Threads are product-first-class but storage-wise they are not separate rooms. They are a scoped sub-conversation inside a parent room.

2. Transcript truth is append-only

The shared transcript is modeled as an append-only ledger. Truth lives in durable facts such as:
  • room upserts
  • membership upserts
  • message posts
  • system events
  • reaction set-state events
  • cursor updates
Unread, inbox, observer lists, and other product surfaces are projections.

3. Ordering is scope-local

The important ordering guarantee is not a global chat order. It is order inside a room mainline or inside a thread scope. openboa now carries that explicitly through scopeSequence.

4. Retries are normal, so visible writes must be idempotent

Message posting and several room mutations are being hardened so retries converge instead of duplicating visible chat state. The code now already applies this to:
  • message append via idempotencyKey
  • channel creation retry convergence
  • reaction writes via explicit set-state instead of toggle

What PR 1 Already Hardens

PR 1 is not “chat polish.” It is the backend room-and-transcript foundation. The current implementation already covers:
  • channel creation
  • creator auto-join
  • join / leave
  • rename / topic / posting-policy / archive system events
  • append-only transcript truth
  • single-level threads
  • DM to group DM lineage
  • inherited history in the read path
  • durable participant cursors
  • scope-local message ordering
  • retry-safe reaction semantics
This is the current implementation center:

What Is Not In PR 1

PR 1 is intentionally below policy and below product polish. It does not complete:
  • action-first RBAC
  • observer capability enforcement
  • inbox/direct-attention semantics
  • threads surface semantics
  • final web/desktop UX
Those sit in later layers on top of the room-and-transcript kernel.

Current Runtime Shape

Today the product surface already has a real running workspace shell. You can verify it with:
pnpm openboa serve
pnpm openboa workspace --surface chat
The HTTP shell endpoint is:
/workspace/shell
The web shell entry is:
/workspace/app