Quarto Slides (RevealJS) projects compile to output.html, not output.pdf, so the existing "Download PDF" button was meaningless for them. Replace it with a two-option dropdown matching the editor's PdfHybridDownloadButton: - Desktop (ActionsCell): icon button opens a dropup with "Download standalone HTML" and "Download PDF slides" - Mobile (ActionsDropdown): two separate dropdown items with the same choices and per-format spinner while the export is in progress Both use the same /project/:id/presentation-export/:format endpoint and show a loading modal (with error reporting) during the server-side render, exactly as the editor toolbar does. Non-RevealJS projects continue to show the compile-and-download-PDF button unchanged. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
A collaborative, real-time editor for LaTeX, Quarto and Typst — self-hosted.
What is Verso?
Verso is a fork of Overleaf that extends its collaborative editing infrastructure to support Quarto and Typst projects alongside LaTeX. Think of it as Overleaf, but not limited to LaTeX.
Verso vs Overleaf
Overleaf is the gold standard for collaborative LaTeX editing. Verso keeps everything that makes Overleaf great — real-time co-editing, operational-transformation history, auth, project management, file storage — and adds:
- Quarto and Typst compilers running alongside TeX Live, dispatched
automatically from the root file's extension (
.qmd→ Quarto,.typ→ Typst,.tex→latexmk). - Language-aware editor for Quarto and Typst (syntax highlighting, completions, document outline) — not just LaTeX.
- Publish & share compiled output (
/p/:tokenwith tiered access links) — a feature absent from Overleaf Community Edition. - Lumière theme — a redesigned project dashboard and editor chrome with a card-based grid, thumbnails, and a teal gradient identity.
- Full i18n — French, German, Italian, and Spanish UI translations on top of Overleaf's English base.
- Completely free and self-hosted; no Overleaf subscription required.
Verso vs Quarto
Quarto is a command-line tool: you install it locally, write
.qmd files in any text editor, and run quarto render in a terminal. It is
excellent for solo authors with full control over their environment.
Verso wraps Quarto in a collaborative web editor:
- No local install — Quarto, Typst, TeX Live and Python run on the server.
- Real-time collaboration — multiple people edit the same
.qmdsimultaneously with live cursors and conflict-free merging. - Not just Quarto — LaTeX and Typst projects live in the same workspace, under the same auth and history system.
- Publish in one click — RevealJS decks and PDFs are served at a stable link without leaving the browser.
Verso is not a replacement for Quarto's CLI — it is a platform that makes Quarto accessible as a shared, always-on service.
Verso vs Typst.app
Typst.app is a cloud-hosted web editor for Typst. It is polished and fast, but it is a proprietary SaaS product and only supports Typst.
Verso differs in that:
- It is self-hosted and open-source (AGPL v3) — you control your data.
- It supports three languages (Typst, LaTeX, Quarto) in one instance.
- Real-time collaboration is powered by operational transformation (the same engine as Overleaf), not CRDTs, which means it handles concurrent edits gracefully for long documents.
- It ships with a full project history and version-restore workflow.
If you only need Typst and want a lighter, Typst-focused alternative, have a look at Collabst — an open-source, self-hosted collaborative Typst editor that is independent of the Overleaf codebase and shows a lot of promise.
Features
- Real-time collaboration — multiple editors, live cursors, full project history and version restore.
- Three compilers, auto-dispatched by root file extension:
Root file Compiler Typical output .qmdQuarto PDF (via Typst or LaTeX), HTML, or RevealJS .texlatexmk/ TeX LivePDF .typTypst PDF - Language-aware editor for all three — syntax highlighting, completions, and a document outline panel for LaTeX, Quarto and Typst.
- Format badge on the project dashboard; compiler dropdown greys out inapplicable engines.
- Publish & share — compile and snapshot to
/p/:tokenwith three independent access tiers (project members / any logged-in user / public). HTML/RevealJS decks are served live; PDFs are embedded inline. A Present toolbar button links directly to the published deck. - RevealJS thumbnails — the first slide of a presentation is rendered as a preview card in the project list.
- Quarto Python cells — optional per-project virtual environment built from
requirements.txt, so Python code chunks execute during render. - Visual formatting toolbar — bold, italic, headings and inline code shortcuts for Quarto (
.qmd) and Typst (.typ) files, in addition to Overleaf's existing LaTeX toolbar. - Lumière theme — card-based project dashboard with PDF/slide thumbnails, a teal gradient identity, dark editor chrome, and an XS compact list view.
- i18n — French, German, Italian and Spanish UI translations.
- Auto-compile — preview refreshes automatically after you stop typing.
Releases
Alpha 1
The initial public release. Established Verso as an Overleaf fork with first-class multi-language support:
- Quarto (
.qmd) and Typst (.typ) compilers running alongside TeX Live, dispatched automatically by root file extension — no per-project configuration. - Language-aware editor for Quarto: Markdown highlighting, code-chunk completions
(
{python},{r},{julia},{ojs}…), callout and fenced-div completions, cross-reference completions (@fig-,@tbl-,@sec-…). - Language-aware editor for Typst: syntax highlighting and completions for functions, imports, math and markup.
- Document outline panel for all three languages (LaTeX
\section, Quarto#, Typst=). - Format badge on the project dashboard; compiler selector greys out inapplicable engines for the current root file.
- Publish & share compiled output — HTML/RevealJS decks and PDFs hosted at
/p/:tokenwith tiered access links (project / logged-in / public), each independently resettable. - Quarto Python code-cell execution via an optional per-project
requirements.txtvirtual environment. - Verso branding: name, logo and Kubernetes production deploy workflow.
Alpha 2
Refinements to the Typst editor and the format badge system:
- Quarto format sub-types — the project badge now distinguishes Quarto PDF
from Quarto Slides, reading the frontmatter
format:to pick the right label. - Python packages for collaborators — Quarto Python package installation extended to all users who have write access to the project, not only the owner.
- Typst syntax highlighting overhaul — complete grammar rewrite covering:
function calls and named argument keys, multi-line display math,
#{…}code blocks, content blocks,show-rule bodies,let-value bindings, and keyword vs identifier disambiguation. - Typst visual formatting — bold and italic toolbar buttons and keyboard
shortcuts (
Ctrl+B,Ctrl+I), plus underline, small-caps and hyperlink buttons, matching the Quarto and LaTeX toolbar experience.
Alpha 3 (in progress)
- Lumière theme — redesigned project dashboard with a card grid, PDF/slide thumbnails, parallax hover effects, a teal gradient identity and a dark editor chrome. Includes an XS compact list view and a tile zoom slider.
- Full i18n — French, German, Italian and Spanish translations covering the complete UI (login, dashboard, editor, settings, emails).
- Visual editors for Quarto and Typst — bold, italic, headings and inline code
shortcuts in the toolbar for
.qmdand.typfiles. - RevealJS thumbnails — first-slide PNG preview rendered in project cards.
- Upload reliability — streaming response fix so large file uploads on slow connections no longer time out at the proxy layer.
Security model — trusted environments only
Caution
Verso is designed for closed groups of trusted users (a lab, a class, a small team). All three compilers can execute arbitrary code on the server:
- LaTeX with shell-escape enabled can run system commands.
- Quarto Python cells execute Python code directly.
- Typst's scripting layer is sandboxed by design, but runs server-side.
There is no per-project sandbox or resource isolation beyond what the operating system provides. Exposing Verso to the public internet with open registration is not recommended. If you need to host a collaborative LaTeX/Typst editor for untrusted users or at scale, look at Overleaf's non-Community offerings, which include proper sandboxing and enterprise access controls.
Quick start
With Docker
docker run -d \
-p 80:80 \
-v ~/verso_data:/var/lib/overleaf \
--name verso \
registry.alocoq.fr/verso:latest
Open http://localhost, then visit /launchpad on first run to create the admin
account.
Build from source
cd server-ce
make build-base # base OS image: system deps, Quarto, Typst, TeX Live
make build-community # application image: Node services + compiled frontend
| File | Purpose |
|---|---|
server-ce/Dockerfile-base |
Base image — system deps, Quarto (with Typst) and TeX Live |
server-ce/Dockerfile |
App image — Node services and the compiled React frontend |
Architecture
Verso is a microservices monorepo (Yarn workspaces). All services run inside a
single container managed by runit, with nginx as the front router.
browser ──→ nginx:80
├── / ──────────────────→ web:4000 (main app, React UI)
├── /socket.io ──────────→ real-time:3026 (WebSocket, OT engine)
├── /p/:token ───────────→ web (published output)
└── /project/*/output/* → clsi-nginx:8080 (compiled output files)
web → document-updater → Redis pub/sub → real-time → browser
web → CLSI (quarto render / latexmk / typst) → output files → nginx → browser
| Service | Role |
|---|---|
web |
HTTP API, React frontend, auth, project & sharing management |
real-time |
WebSocket layer, live cursors and edit sync |
document-updater |
Operational transformation, Redis pub/sub |
clsi |
Compiler — runs quarto render, latexmk or typst and serves output |
docstore |
Document text storage (MongoDB) |
filestore |
Binary file storage (S3 or local) |
project-history |
Change history and version tracking |
Environment variables
Verso inherits all of Overleaf's environment variables (prefixed OVERLEAF_).
The most commonly needed:
| Variable | Default | Description |
|---|---|---|
OVERLEAF_APP_NAME |
Verso |
Name shown in the UI |
OVERLEAF_NAV_TITLE |
— | Instance name/version shown in the top bar |
OVERLEAF_MONGO_URL |
mongodb://mongo/sharelatex |
MongoDB connection string |
OVERLEAF_REDIS_HOST |
localhost |
Redis host |
OVERLEAF_SITE_URL |
— | Public URL (used in emails and published links) |
OVERLEAF_SITE_LANGUAGE |
en |
Default UI language (e.g. fr) |
OVERLEAF_ENABLE_PROJECT_PYTHON_VENV |
false |
Allow Quarto Python cells to use a project requirements.txt |
OVERLEAF_ADMIN_EMAIL |
— | Email shown on the launchpad for the first admin account |
See the Overleaf Server documentation for the full list.
Relation to Overleaf
Verso is a fork of Overleaf Community Edition. Everything that Overleaf CE provides — real-time collaboration, operational-transformation history, auth, project management, binary file storage — is inherited unchanged. The Verso-specific additions are listed in the Features section and tracked across releases above.
Verso is not affiliated with Overleaf Ltd.
Supporting the ecosystem
Verso is not accepting contributions or donations at this time. If you find it useful and want to support the broader ecosystem it builds on:
- Support Overleaf — Verso is built on Overleaf's infrastructure. The best way to support their work is to use or subscribe to Overleaf and encourage your institution to do the same.
- Support Typst — Typst GmbH is the company behind the Typst compiler. Using Typst.app or sponsoring the Typst project on GitHub helps sustain the language itself.
- Support RevealJS — Verso uses Reveal.js for HTML presentations. Consider sponsoring the RevealJS project on GitHub.
License
GNU Affero General Public License v3 — see LICENSE.
Copyright © Overleaf, 2014–2026 (original code).
Verso modifications © Aloïs Coquillard, 2026.