Quick Start¶
Install the development environment¶
uv sync --extra serve --extra test --extra docs
uv run chatevent --tree
uv run chatevent --tree-brief
If you only need the API/UI, install at least the serve extra:
Run the Observatory¶
Open:
The current server demo is exposed at:
Confirm default paths¶
You do not need to pass --db for normal use. ChatEvent resolves ChatArch home through ChatEnv and stores runtime state under its chatevent/ directory:
Read the effective paths:
If legacy ~/.chatevent/events.db exists and the new ChatArch-internal database does not, the first default startup copies the legacy database to ~/.chatarch/chatevent/events.db without deleting the old file.
Refresh behavior¶
The Observatory currently uses frontend polling, not WebSocket/SSE.
- It runs
loadAll()immediately after the page loads. - It automatically refreshes every 5 seconds.
- The Refresh button triggers an immediate manual refresh.
- Search input refreshes after an approximately 260ms debounce.
- Source and event-kind filter changes refresh immediately.
Each refresh requests these endpoints in parallel:
The delay from a platform action to the UI is therefore:
- Platform delivery time: webhook delivery is normally seconds; Zulip event queues depend on the running capture pass; API cursors depend on the configured reconciliation interval.
- The next 5-second frontend poll; click Refresh to check immediately.
Record one event¶
Minimal event:
{
"id": "issue:owner/repo:42",
"source": "gitea",
"kind": "issue.opened",
"occurred_at": "2026-08-18T12:00:00Z",
"capture_mode": "webhook"
}
Inspect the platform action catalog¶
The same action catalog appears in the Observatory's Platform actions panel.