Threadr is an Elixir-based conversation intelligence system for tenant-scoped chat ingestion, reconstruction, QA, and operator-managed bot runtimes.
The current implementation is centered on:
- Phoenix and LiveView for the control plane and analyst UI
- Ash and AshPostgres for public-schema and tenant-schema resources
- NATS JetStream and Broadway for normalized event delivery and ingest
- tenant-scoped chat persistence, relationship inference, and reconstruction
- ML boundaries for embeddings, extraction, semantic QA, graph QA, and conversation-grounded QA
This repository is no longer organized around the older Python or JupyterBook-style implementation ideas. The active product surface lives under elixir/threadr.
Threadr ingests public chat activity from platforms such as IRC and Discord, normalizes it into tenant-scoped events, and persists:
- actors, aliases, and alias observations
- channels, messages, mentions, and relationships
- context events such as edits, deletes, reactions, presence, nick changes, joins, parts, quits, and topic changes
- message links, reconstructed conversations, memberships, and pending items
- embeddings, extracted entities, extracted facts, and dialogue acts
On top of that data, Threadr provides:
- analyst-facing QA, history, dossier, and graph surfaces
- actor-centric and conversation-grounded retrieval
- periodic conversation summaries, cluster review, and relationship recompute
- control-plane APIs and LiveViews for tenant and bot management
- elixir/threadr: main Phoenix application, event pipeline, ML boundaries, tests, and operational docs
- k8s/threadr: control-plane and operator manifests
- openspec: active and archived spec changes
- cmd: supporting bot and operator binaries
The main app README is here:
Typical local development starts with:
cd elixir/threadr
./tools/dev_server.shIf you explicitly want the older local-only compose stack instead of the default Kubernetes-backed dev flow:
cd elixir/threadr
./tools/dev_server.sh --use-composeUseful entrypoints:
cd elixir/threadr
mix precommit
THREADR_RUN_INTEGRATION=true mix test test/threadr/messaging/smoke_test.exs
mix threadr.smoke.ingest --tenant-name "Acme Threat Intel" --mentions bob,carolThe integration smoke test exercises the JetStream plus Broadway plus PostgreSQL path end to end. The main app README covers the broader operator, Discord, and deployment smoke flows.
Join us on Discord:
