Clark Chat is the conversation layer for CLARK: a persistent, type-aware chat system where work, learning, and automation all attach to continuous conversations.
This repository currently contains the product requirements and early project scaffolding for the next version of Clark Chat.
Traditional chat tools treat messages as isolated streams. Clark Chat treats a conversation as a durable, structured object with:
- A semantic type (for example: Job, Room, Task, Course)
- Reusable attached elements (for example: Members, Context, Files, AI)
- Persistent history and state across sessions
- A surface for humans and microservices to collaborate in the same thread
The objective is to make conversation the system of record for operations, learning, and automation.
This repo is in architecture + requirements phase:
- Primary source of truth:
chat-centric-requirements.md - Frontend folders (
src,dist) exist as placeholders - Tooling files for running the app locally are not yet committed in this workspace snapshot
If you are implementing the app, start from the requirements document first, then layer in frontend/runtime setup.
The requirements define three key concepts.
Conversation types describe what a conversation is in the business domain.
- Work groups:
Rooms,Locations,Stations,Tools - Work types:
Jobs,Tasks,Reviews - Work materials:
Inputs,Outputs - Learning contexts:
Classes,Courses,Teams
Elements are reusable capabilities attachable to any conversation type.
Members,Context,Purpose,Access,HistoryFiles,Qs & As,Choices,Web,TermsApps,AI,Instructions
Conversations are long-lived objects that:
- Persist even when users leave
- Restore context on rejoin
- Maintain history and relationships
- Support lifecycle transitions (active, archived, deleted)
At implementation time, Clark Chat is intended to follow this shape:
Clark Chat Client(s)
|
| XMPP over WebSocket
v
Prosody XMPP Server
|
+-- Human participants
+-- AI participants
+-- Typed conversation rooms
+-- Microservices attached by conversation type
This keeps messaging transport simple while enabling rich domain semantics above the transport layer.
Recommended implementation order:
- Define schemas for the 13 conversation types and 13 conversation elements.
- Implement conversation lifecycle + access control rules.
- Implement relationship and traceability model (especially Inputs -> Work -> Outputs).
- Implement search/indexing + notification events.
- Add microservice interface for read/write/subscribe on conversation elements.
- Build UI views around typed conversations rather than generic channels.
Until full app scaffolding is committed, use this workflow:
- Read
chat-centric-requirements.mdend to end. - Pick a requirement set (taxonomy, lifecycle, access, search, etc.).
- Propose a data model + API contract in a short design note.
- Implement incrementally with tests per requirement group.
- Keep docs in sync with behavior changes.
- Conversation-first: every capability attaches to a conversation.
- Type-aware behavior: conversation type drives policy and UX.
- Composable elements: features are reusable across types.
- Persistent context: history and state survive session boundaries.
- Service interoperability: humans and microservices share one model.
- Product requirements:
chat-centric-requirements.md