A suite of sovereign, self-hosted tools for online communities. Episkopos puts ownership back in the hands of the people who use it — no platform lock-in, no data extraction, no compromises.
Based on Stoat, an open-source chat platform.
Part of the Episkopos suite — sovereign tools for communities.
This repository is the development hub and source of truth for:
- Bug Reports
- Feature Requests
- UX Feedback
- Security Reports
|
|
The Sacred Vessel of Communication Real-time chat platform built for communities that refuse to rent their conversations from corporations. Self-hosted, federated-ready, and fully open source. |
|
|
Draw Back the Veil Community knowledge browser that surfaces collective wisdom. Browse, search, and preserve the conversations and decisions that define your community. |
|
|
The Quiet Side Gate Migration and synchronisation tool that lets communities leave legacy platforms on their own terms. Export, transform, and import — no data left behind. |
| Landing site | episkopos.community |
| GitLab | work.episkopos.community/episkopos |
| GitHub mirror | github.com/episk-pos |
| Contact | contact@episkopos.community |
| Repository | Product | Description |
|---|---|---|
| censer-web | Censer | Web client (SolidJS + Vite) |
| censer-backend | Censer | API server (Rust) |
| censer-flutter | Censer | Mobile client (Flutter) |
| censer-sdk-dart | Censer | Dart SDK |
| unveil | Unveil | Knowledge archive (Elixir + Phoenix) |
| postern | Postern | Migration tool (TypeScript) |
Check real-time service health at status.episkopos.community.
Use GitHub Issues in this repository.
- Open
New issue - Choose a template
- Fill all required sections
Available templates:
Bug ReportFeature RequestUX FeedbackSecurity Issue
- Search existing issues to avoid duplicates.
- Confirm behavior on the latest available build.
- Collect evidence:
- Reproduction steps
- Screenshots or video
- Environment details (OS, client, version)
- Logs or error messages
Good bug reports include:
- Clear summary of the problem
- Exact reproduction steps
- Expected vs actual behavior
- Frequency, severity, and workaround
- Environment + evidence
Use the Bug Report template.
Strong feature requests include:
- User problem being solved
- Desired outcome
- Proposed solution
- Alternatives considered
- Scope and impact
- Acceptance criteria
Use the Feature Request template.
Use UX Feedback when reporting friction, confusion, or usability issues that may not be strict bugs.
Helpful UX submissions include:
- Current experience and pain points
- Suggested improvement
- Why it matters to users
- Supporting examples and references
Use Security Issue for vulnerabilities.
If the report includes sensitive exploit details, do not post proof-of-concept details publicly. Provide impact and reproduction at a safe level so maintainers can coordinate remediation.
Maintainers will generally:
- Validate scope and request missing information
- Apply labels (
type,priority,severity,area,status) - Deduplicate and link related issues
- Move accepted issues into planning/in progress
Higher-quality issue submissions reduce triage turnaround time.
A full local development environment lives in dev/. It runs the entire Censer backend (powered by Stoat: Delta, Bonfire, Autumn, January) and infrastructure (MongoDB, Redis, MinIO, RabbitMQ, Maildev) locally, with the frontend Vite dev server running natively for fast HMR.
Two modes are available:
- Kind/K8s (default) — Full Kubernetes cluster via Kind + Tilt. Best for production-parity testing.
- Docker Compose — Lighter alternative, no Kind cluster needed. Good for quick iteration and CI.
Both modes use the same ports, same images, and same Tilt UI.
All modes:
- Docker
- just
- Rust / Cargo (or use
--prebuiltto skip)
Kind/K8s mode (adds):
Compose via Tilt (adds):
Plain Compose mode: Docker only (no Tilt, Kind, or kubectl needed).
cd dev/
# --- Kind/K8s mode (default) ---
just setup # Check prerequisites, create Kind cluster
just up # Start everything (Tilt UI opens)
# --- Docker Compose via Tilt ---
just up-compose # Same Tilt UI, Docker Compose backend
# --- Plain Docker Compose (no Tilt) ---
just compose-up # Start all services
just compose-seed # Seed test data
just compose-down # Stop everythingIf the backend (censer-backend/) or frontend (censer-web/) directories aren't cloned as siblings, the Tilt UI will show clone buttons to set them up automatically.
| Command | Description |
|---|---|
| Kind/K8s mode | |
just setup |
Check prerequisites, create Kind cluster |
just up |
Start the full dev stack via Tilt + Kind |
just up-prebuilt |
Start with pre-built images (no Rust needed) |
just down |
Stop Tilt (cluster stays intact) |
just nuke |
Delete the Kind cluster entirely |
| Docker Compose mode | |
just up-compose |
Start dev stack via Tilt + Compose |
just up-compose-prebuilt |
Compose + pre-built images |
just compose-up |
Plain docker compose up (no Tilt) |
just compose-down |
Stop Compose services |
just compose-seed |
Seed test data (Compose mode) |
| Shared | |
just test |
Run frontend E2E tests against the stack |
just status |
Show cluster, pods, and Tilt resources |
just logs <service> |
Tail logs for a service (e.g., delta) |
All services use the 14xxx range to avoid conflicts with other dev stacks (Fray.run, execos, etc.) that may run concurrently.
| Port | Service |
|---|---|
| 5173 | Frontend (Vite dev server, local) |
| 5174 | Flutter frontend (web, local) |
| 14702 | Delta (API) |
| 14703 | Bonfire (WebSocket) |
| 14704 | Autumn (file server) |
| 14705 | January (embed proxy) |
| 14717 | MongoDB (debug) |
| 14672 | RabbitMQ management UI (debug) |
| 14080 | Maildev web UI (debug) |
| 14009 | MinIO API (debug) |
| 14001 | MinIO console (Compose only) |
┌─────────────────────────────────────────────────┐
│ Host │
│ ┌───────────────┐ ┌──────────────────┐ │
│ │ Vite dev :5173│ │ Flutter dev :5174│ │
│ └───────────────┘ └──────────────────┘ │
│ │
│ ┌─ Kind cluster (kind-censer) ──────────────┐ │
│ │ namespace: censer │ │
│ │ │ │ Kind/K8s
│ │ delta:14702 bonfire:14703 │ │ mode
│ │ autumn:14704 january:14705 │ │
│ │ │ │
│ │ redis mongodb minio rabbitmq maildev │ │
│ └───────────────────────────────────────────┘ │
│ — or — │
│ ┌─ Docker Compose ──────────────────────────┐ │
│ │ │ │
│ │ delta:14702 bonfire:14703 │ │ Compose
│ │ autumn:14704 january:14705 │ │ mode
│ │ │ │
│ │ redis mongodb minio rabbitmq maildev │ │
│ └───────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
Backend binaries are built on the host with cargo build --release, then packaged into thin Docker images. In Kind mode, images are loaded into the cluster via kind load. In Compose mode, images are built directly by docker compose build.



