Orimora is a self-hosted team knowledge base built with SvelteKit. It combines a collaborative rich-text editor (TipTap / ProseMirror, Yjs), structured collections and tags, full-text search, comments, notifications (in-app / email / web push), passkey login, group-based permissions, encrypted off-site backups, and a versioned REST API + MCP surface for tools and automation.
- Editor — TipTap with real-time collaboration (Hocuspocus), revision history, slash commands
- Collections & tags — Document tree with icons/ordering, plus flat tags (incl. access-controlled restricted tags)
- Search — PostgreSQL full-text search plus fuzzy matching
- Comments — Inline threads on selected text
- Notifications — In-app, email, and web push (independent per-channel toggles)
- Templates — Reusable document starting points
- Gamification — Optional points, badges, streaks, and a team leaderboard
- Security — Passwordless login with WebAuthn passkeys; idle-session timeouts
- Permissions — Groups, fine-grained capabilities, collection + tag ACLs
- REST API —
/api/v1/documents with Bearer kb_ API keys (tags, filters, incremental sync)
- MCP — HTTP endpoint
/api/mcp for Cursor and Claude Desktop, plus an OAuth 2.1 flow for the Claude mobile app and claude.ai Custom Connectors
- AI assistant — Bring-your-own LLM (encrypted at rest)
- Backups & DR — Encrypted, off-site backups (age + rclone) with a restore runbook
- Integrations — Webhooks, publishing channels (Git mirror / pull / webhook), Obsidian sync
| Layer | Technology |
|---|
| App | SvelteKit, Svelte 5, adapter-node |
| Data | PostgreSQL 16+, Drizzle ORM |
| Cache / queues | Redis, BullMQ |
| Real-time | Yjs, Hocuspocus WebSocket (/collab) |
| Auth | HTTP-only sessions + OAuth; API keys for automation |
More detail: Architecture and Database migrations.
Source layout and license information are in the GitHub repository linked from the site header.