Manuel Raynaud dbf8fece4e 🔖(release) major 6.0.0
Added

- 👷(ci) lint, typecheck, build and test the collaboration server (yhub) #2757
- 👷(ci) check the load-test tooling: swarm, canary, k6 and dashboards #2757
- 👷(ci) cancel the superseded runs of a pull request #2757
- ✨(backend) add mention endpoint with cooldown-limited email
  notification #2447
- 🚩(setting) add feature flag on Duplicate with Children #2721
- 💄(frontend) redesign 404 error standalone page #2696
- 💄(frontend) redesign 403 access denied page #2720
- ✨(frontend) duplicate with subdocuments #2584
- ✨(frontend) add markdown download option #2608
- ✨(frontend) turn pasted doc links into interlinks #2713
- ✨(helm) allow disallowing search engine indexing per instance #2694
- ✨(backend) expose the attachment max size in the config endpoint #2577
- ✨(frontend) warn before uploading an attachment over the size limit #2577
- ✨(loadtest) add a websocket load generator for the collaboration
  server #2556
- ✨(loadtest) add k6 scenarios for the page-open sequence and the heavy
  endpoints #2556
- ✨(loadtest) add browser canaries measuring what a user feels under
  load #2556
- ✨(loadtest) add the grafana dashboards of the load-test campaign, valkey
  included #2556
- 📝(documentation) add the load-testing guide #2556
- 🔧(helm) run grafana with those dashboards in the dev cluster, in place of
  the prometheus console #2556
- ✨(backend) measure the calls to yhub and to the converters, the database
  pool and the celery queue #2556
- ✨(backend) add a `LoadTest` configuration and its `loadtest` application,
  minting sessions for load tests #2556
- ✨(collaboration) add opt-in prometheus metrics to yhub, server and worker,
  protected by a bearer token #2556
- ✨(collaboration) report yhub errors to sentry, configured through
  `SENTRY_*` #2556
- ✨(backend) add opt-in prometheus metrics on `/metrics`, protected by a
  bearer token #2556
- ✨(helm) add a dedicated ingress for the prometheus metrics of the backend
  and of yhub #2556
- ✨(helm) add a ServiceMonitor and a PodMonitor per component whose metrics
  are enabled, and `backend.metrics.enabled` #2556
- 🔧(helm) scrape the metrics of the dev cluster with a trimmed
  kube-prometheus-stack and the ServiceMonitors of the chart #2556
- 🔧(helm) serve the example console of django-prometheus on the dev
  Prometheus #2556
- ✨(backend) add a service generating cached RS256 JWT tokens #2556
- ✨(backend) publish the JWT public key on a JWKS endpoint #2556
- 🔧(dev) generate the JWT signing key when bootstrapping the dev stack #2556
- ✨(collaboration) add an admin reset-connections endpoint on yhub #2556
- ✨(collaboration) add a create-ydoc endpoint on yhub #2556
- ✨(collaboration) soft-migrate legacy S3 documents into yhub #2556
- ✨(collaboration) replay legacy s3 version history into yhub #2556
- ✨(backend) add a service to call the yhub REST API #2556
- ✨(backend) call YHubService to seed initial document content #2556
- ✨(collaboration) add a get-ydoc endpoint on yhub #2556
- ✨(backend) duplicate a document through the collaboration server #2556
- ✨(backend) serve `documents/{id}/formatted-content/` from yhub #2556
- ✨(collaboration) notify the backend when the worker persists new
  content #2556
- ✨(collaboration) let a user read the document's editing history #2556
- ✨(frontend) fall back to http polling when the websocket cannot be
  opened. #2556
- 🔧(collaboration) make the version-history granularity configurable through
  `COLLABORATION_VERSION_GRANULARITY_MS` #2556
- ✨(frontend) keep a local copy of documents, so they open and stay editable
  offline #2556

Changed

- 🛂(backend) let users allowed to comment list each other's accesses #2447
- ♻️(collaboration) migrate the collaboration server from hocuspocus to
  yhub #2556
- 💥(y-provider) y-provider becomes converter-only #2556
- 💥(backend) move the resource server JWKS from `/api/{version}/jwks` to
  `/external_api/{version}/jwks` #2556
- 🔧(collaboration) adapt docker stack for development purpose #2556
- 🔧(helm) run a valkey for the backend and one for yhub in dev and
  feature #2556
- 💄(frontend) redesign 401 error standalone page #2716

Fixed

- 🐛(documentation) fix minio port and keycloak realm in the k8s guide #2751
- 🐛(collaboration) bound the calls yhub makes to the backend with a timeout,
  `YHUB_BACKEND_REQUEST_TIMEOUT_MS`, 5s by default #2753
- 🐛(backend) compensate document duplication failures #2755
- 🐛(frontend) open search results in a new tab with ctrl/cmd+click #2719
- 🐛(docker) pull minio images from pgsty #2739
- 🐛(backend) retry the duplicate of a document on a tree path collision #2726
- 🐛(frontend) keep caption and alignment when replacing an image #2730
- 🐛(backend) reset the collaboration connections on every access change #2725
- ⚡️(backend) coalesce and pace the resets of collaboration connections #2725
- 🐛(frontend) clear callout background on Backspace #2052
- 🐛(export) keep image aspect ratio in PDF columns #2670
- 🐛(frontend) fix redirect after deleting a document #2706
- 🐛(frontend) keep documents draggable with a mouse when zoomed #2727
- 📝(docs) fix markdown typo in installation README #2766
- 🐛(i18n) export locale correctly #2750
- 🐛(frontend) keep login and logout out of the service worker cache #2771
- 🐛(frontend) reduce PostHog volume from web vitals and opt_in spam #2701
- 🐛(frontend) stop reconnecting to the websocket based on the status
  code #2556
- 🐛(frontend) stop the service worker from caching the collaboration server's
  rest api #2556

Removed

- 🔥(backend) remove the unused `CollaborationService` #2556
- 💥(backend) remove the `documents/{id}/can-edit/` endpoint #2556
- 💥(backend) remove the `documents/{id}/content/` endpoint #2556
- 🔥(backend) remove the document version endpoints. #2556
- 🔥(backend) remove `Document.content` #2556

Security

- 🔒️(collaboration) stop read-only users from sharing their cursor #2556
2026-10-09 11:14:07 +02:00
2026-10-09 11:14:05 +02:00
2026-10-09 11:14:07 +02:00
2026-09-23 12:06:05 +02:00
2025-01-06 12:17:40 +01:00
2024-08-09 13:12:13 +02:00
2026-10-09 11:14:07 +02:00
2026-09-23 12:06:05 +02:00
2026-09-23 12:06:05 +02:00
2026-07-23 09:39:19 +00:00
2026-10-01 11:06:33 +02:00
2025-05-13 16:00:43 +02:00
2026-10-09 11:14:07 +02:00

Docs

PRs Welcome MIT License MIT License DPG Badge

Chat on Matrix • Documentation • Try Docs • Contact us

La Suite Docs: Collaborative Text Editing

Docs, where your notes can become knowledge through live collaboration.

Docs is an open-source collaborative editor that helps teams write, organize, and share knowledge together - in real time.

Live collaboration demo

What is Docs?

Docs is an open-source alternative to tools like Notion or Google Docs, focused on:

  • Real-time collaboration
  • Clean, structured documents
  • Knowledge organization
  • Data ownership & self-hosting

Built for public organizations, companies, and open communities.

Why use Docs?

Writing

  • Rich-text & Markdown editing
  • Slash commands & block system
  • Beautiful formatting
  • Offline editing
  • Optional AI writing helpers (rewrite, summarize, translate, fix typos)

Collaboration

  • Live cursors & presence
  • Comments & sharing
  • Granular access control

Knowledge management

  • Subpages & hierarchy
  • Searchable content

Presentations

  • Simple structure, based on delimiter (---)
  • Full screen option
  • PDF exports
  • Keyboard navigation
  • Start presention from a block
  • Presentation link

demo of slide mode in Docs

Export/Import

  • Import to .docx and .md
  • Export to .docx, .odt, .pdf

AI features

Docs has optional AI features. They're model agnostic and gateway agnostic. You can either run your own or just use your AI provider. The config only requires an API key and a URL.

V1: You select, AI replaces

This version features a simple select and replace workflow. Your selection is the context and the instruction for the model. The AI feedback replaces your selection and is designed is optimized for Docs formatting.

Demo of Docs AI v1

V2: AI toolbar, AI cursor (beta)

This version uses BlockNote AI integration. It features:

  • an AI toolbar at selection in which you can prompt, accept, reject and iterate AI feedback
  • an AI cursor, which interacts with the document, just as another collaborator in your document
  • document context is used on top of the selection

Demo of Docs AI v2

Interoperability

Docs comes with a resource server API and a server to server API which allows for awesome integrations.

A concrete example: Meet's transcriptions

If you're running a Meet instance, with simple config (DJANGO_SERVER_TO_SERVER_API_TOKENS) you can push your meeting transcript to Docs and give access to the user who requested it.

transcript in Docs screenshot

Try Docs

Experience Docs instantly - no installation required.

Self-hosting

Docs supports Kubernetes, Docker Compose, and community-provided methods such as Nix and YunoHost.

Get started with self-hosting: Installation guide

Warning

Some advanced features (for example: Export as PDF) rely on XL packages from Blocknote. These packages are licensed under GPL and are not MIT-compatible

You can run Docs without these packages by building with:

PUBLISH_AS_MIT=true

This builds an image of Docs without non-MIT features.

More details can be found in environment variables

Local Development (for contributors)

Run Docs locally for development and testing.

Warning

This setup is intended for development and testing only. It uses Minio as an S3-compatible storage backend, but any S3-compatible service can be used.

Prerequisites

  • Docker
  • Docker Compose
  • GNU Make

Verify installation:

docker -v
docker compose version

If you encounter permission errors, you may need to use sudo, or add your user to the docker group.

Bootstrap the project

The easiest way to start is using GNU Make:

make bootstrap FLUSH_ARGS='--no-input'

This builds the app-dev and frontend-dev containers, installs dependencies, runs database migrations, and compiles translations.

It is recommended to run this command after pulling new code.

Start services:

make run

Open https://localhost:3000

Default credentials (development only):

username: impress
password: impress

Frontend development mode

For frontend work, running outside Docker is often more convenient:

make frontend-development-install
make run-frontend-development

Backend only

Starting all services except the frontend container:

make run-backend

Tests & Linting

make frontend-test
make frontend-lint

Backend tests can be run without docker. This is useful to configure PyCharm or VSCode to do it. Removing docker for testing requires to overwrite some URL and port values that are different in and out of Docker. env.d/development/common contains all variables, some of them having to be overwritten by those in env.d/development/common.test.

Demo content

Create a basic demo site:

make demo

More Make targets

To check all available Make rules:

make help

Django admin

Create a superuser:

make superuser

Admin UI: http://localhost:8071/admin

Contributing

This project is community-driven and PRs are welcome.

Roadmap

Curious where Docs is headed?

Explore upcoming features, priorities and long-term direction on our public roadmap.

License 📝

This work is released under the MIT License (see LICENSE).

While Docs is a public-driven initiative, our license choice is an invitation for private sector actors to use, sell and contribute to the project.

Credits ❤️

Stack

Docs is built on top of Django Rest Framework, Next.js, ProseMirror, BlockNote.js, HocusPocus, and Yjs. We thank the contributors of all these projects for their awesome work!

We are proud sponsors of BlockNotejs and Yjs.


Gov ❤️ open source

Docs is the result of a joint initiative led by the French 🇫🇷 (DINUM) Government and German 🇩🇪 government (ZenDiS).

We are always looking for new public partners (we are currently onboarding the Netherlands 🇳🇱), feel free to contact us if you are interested in using or contributing to Docs.

Europe Opensource

Languages
Python 47.4%
TypeScript 44.4%
CSS 5.1%
Go Template 1%
JavaScript 0.8%
Other 1.2%