Outline
A fast, real-time collaborative knowledge base for growing teams built on React, Node.js, and ProseMirror.
Outline is a self-hostable, real-time collaborative knowledge base that helps teams centralize documentation, reduce repetitive questions, and share knowledge across time zones. It combines a polished Markdown editor powered by ProseMirror with multiplayer collaboration via Yjs and Hocuspocus, giving teams the editorial feel of a modern writing tool alongside the structure of a wiki.
Built with TypeScript throughout, Outline runs on Node.js with a Koa backend, PostgreSQL for persistence, and Redis for queuing and real-time events. The frontend is a React 17 application bundled with Vite and managed by MobX stores, making state predictable even in complex collaborative editing scenarios. The plugin architecture powers integrations with Slack, Figma, Notion, GitHub, GitLab, Linear, and more — all shipped as discrete modules under the plugins/ directory.
Outline supports deployment via Docker Compose or direct Node.js, with database migrations managed by Sequelize and background tasks handled by a Bull job queue. Teams can connect through OAuth providers including Google, Azure, GitLab, OIDC, and Slack, with optional passkey (WebAuthn) authentication added in recent releases. Self-hosting is fully supported and documented, with the same codebase powering the hosted cloud version at getoutline.com.
With nearly 39,000 GitHub stars, an active release cadence (monthly major releases), and a 10-year commit history, Outline is one of the most mature and widely adopted open knowledge-base tools available for self-hosting.
What You Get
- Real-Time Collaborative Editor - A ProseMirror-based Markdown editor with live multiplayer presence, allowing multiple team members to write in the same document simultaneously with conflict-free merging via Yjs CRDTs.
- AI-Powered Search and Q&A - Full-text search across all collections with an AI question-answering layer that returns direct answers from your knowledge base rather than just a list of documents.
- Slack Integration with In-Channel Search - Search Outline documents, share document previews, and receive notifications about document updates directly inside Slack without leaving your workflow.
- Plugin-Based Integration Architecture - A modular plugins/ directory ships first-party integrations for Figma, GitHub, GitLab, Linear, Notion (import), Discord, Google Analytics, Matomo, Umami, Zapier, and more — all opt-in and self-contained.
- Granular Permissions and Guest Access - Control access at the collection, document, and user level with roles (admin, editor, viewer, guest), group-based permissions, and public share links with optional password protection.
- WebAuthn Passkey Authentication - Users can sign in with biometric authentication (Touch ID, Windows Hello) or hardware security keys in addition to standard OAuth providers including Google, Azure, GitLab, and OIDC.
- Diagrams.net and Mermaid Diagram Support - Embed and edit diagrams.net drawings and Mermaid diagrams inline within documents, with diagrams persisted as SVG and editable in place without leaving Outline.
- Revision History with Diff Comparison - Every document change is tracked; any revision can be previewed, diffed against another, or downloaded as Markdown or HTML, enabling full audit trails.
- Custom Domains and White-Label Branding - Host your knowledge base at a custom subdomain (e.g., docs.yourteam.com), apply your brand logo and colors, and present a fully branded experience to readers.
- Self-Hosted Docker Deployment - Official docker-compose.yml and Dockerfile configurations let teams deploy Outline on their own servers with PostgreSQL and Redis, with automated migration on startup.
Common Use Cases
- Engineering onboarding and runbook management - A platform engineering team uses Outline to centralize architecture decisions, runbooks, and API references so new hires can self-serve answers without interrupting senior engineers.
- Product and design documentation - A product team uses Outline collections to organize PRDs, design specs, and release notes, with Figma link unfurling and real-time co-editing for distributed teammates across time zones.
- Customer-facing help center - A SaaS company enables public sharing on selected collections to host a branded help center at docs.example.com, reducing support ticket volume for common questions.
- Security and compliance policy management - A security team drafts, reviews, and versions SOC 2 policies and incident response playbooks inside Outline using comment threads, revision history, and role-based access controls.
- Sales and customer success knowledge base - A go-to-market team maintains competitive battle cards, objection-handling scripts, and onboarding templates accessible to AEs and CSMs via a permission-controlled Slack-searchable wiki.
Under The Hood
Architecture Outline is a TypeScript monorepo with a clean three-way split: a React frontend in app/, a Koa API server in server/, and shared code including the ProseMirror-based editor in shared/. A discrete plugins/ directory contains first-party integrations — Slack, Figma, GitHub, Linear, Notion importer, passkeys, and more — each as a self-contained module that registers hooks with a PluginManager. Authorization is centralized in cancan-style policy files under server/policies/, keeping permission logic explicit and auditable. Background work flows through a Bull job queue with event-driven processor functions, decoupling side effects from request handling. The frontend uses MobX observable stores co-located with their scenes, keeping state management predictable even under the complexity of real-time collaborative editing.
Tech Stack The backend is Node.js 20–24 with Koa 3 as the HTTP framework, Sequelize 6 with PostgreSQL as the ORM and database, and Redis via ioredis for queuing, caching, and pub/sub. Real-time collaborative editing is powered by Yjs CRDTs synchronized over Hocuspocus (a Koa-based collaboration server), with y-prosemirror bridging the CRDT layer into the ProseMirror document model. The frontend is React 17 with MobX 4 for observable state management, styled-components 5 for component styling, and Radix UI primitives for accessible interactive elements. The build pipeline uses Vite (backed by rolldown) for the frontend and a custom esbuild script for the server. Testing runs on Vitest with jsdom for frontend and a real test database for server integration tests. Code quality is enforced by oxlint and Prettier with husky pre-commit hooks.
Code Quality With over 230 test files across server and frontend, Outline maintains comprehensive coverage of API routes, authentication flows, collaboration logic, and model business rules. Server tests use a real PostgreSQL test database with factory-generated fixtures via @faker-js/faker, ensuring integration tests catch schema and query regressions rather than just unit behavior. Error handling is explicit and typed: a custom error hierarchy maps business conditions to specific HTTP status codes, and Sentry integration separates user input errors from internal exceptions for clean alerting. Type safety is enforced end-to-end with TypeScript strict mode, typed environment variables (a custom Env class with validator decorators), and strict runtime validation using Zod and class-validator on API inputs. OxLint replaces ESLint for faster CI feedback, and prettier enforces consistent formatting across the entire repository.
What Makes It Unique
Outline’s use of Yjs CRDTs via Hocuspocus for collaborative editing is a genuine technical differentiator — it enables conflict-free concurrent edits without requiring operational transformation algorithms, and the y-prosemirror adapter ensures the CRDT state is always consistent with the rich-text document model. The fractional-index library powers smooth, reorder-friendly sidebar navigation without full tree re-renders. A unified action system (app/actions/) binds keyboard shortcuts, command palette entries, and context menu items to declarative action definitions, eliminating repetitive event handler boilerplate across the UI. The plugin architecture is genuinely modular: integrations are isolated modules that register themselves via PluginManager, meaning the core product has no direct dependencies on third-party service SDKs — they are loaded only when the corresponding plugin is enabled.
Self-Hosting
Outline is licensed under the Business Source License 1.1 (BSL 1.1), which is not an OSI-approved open-source license. The BSL grants you broad rights to copy, modify, and redistribute the code, including production use — with one specific restriction: you may not use Outline to provide a “Document Service,” defined as a commercial offering that lets third parties (other than your own employees and contractors) create teams and documents. In plain terms, you can self-host Outline freely for your organization’s internal use, but you cannot build a competing SaaS product on top of it. The current version (1.8.1) is scheduled to convert to the Apache License 2.0 on 2030-06-06, at which point all restrictions expire.
Running Outline yourself requires a meaningful infrastructure commitment. You need PostgreSQL (the primary data store), Redis (for queuing, caching, and real-time collaboration state), and an S3-compatible object store for file attachments. The official Docker Compose setup covers these dependencies, but in production you will need to manage database backups, Redis persistence, and storage reliability yourself. Outline performs database migrations on startup, so zero-downtime upgrades require care in multi-instance deployments — the codebase includes a distributed mutex lock on migrations to prevent race conditions in horizontal scaling scenarios. Email delivery requires SMTP configuration, and each OAuth provider (Google, Azure, GitLab, OIDC, Slack) must be set up separately with app credentials.
Compared to the hosted version at getoutline.com, self-hosting gives you full data sovereignty and cost control at scale, but you give up managed upgrades, automated backups, high-availability infrastructure, and direct support from the Outline team. The cloud plan adds priority support, SLAs, and features that depend on Outline’s own cloud infrastructure, such as AI-powered features and the subdomain-per-team routing that powers getoutline.com’s multi-tenant architecture. For teams with compliance requirements (GDPR, SOC 2, HIPAA) who need data residency in their own environment, self-hosting is the appropriate choice — but plan to allocate engineering time for ongoing maintenance, certificate management, and version upgrades.