claude e0a4938a78
Build and Deploy Verso / deploy (push) Successful in 11m9s
CI: make Yarn Classic fallback cache a tmpfs (fresh per build)
#74 corrupted the persistent fallback cache again despite serialising the
fetch, so the cause isn't a write race: BuildKit evicts part of that persistent
cache mount between builds (the first build after each id bump always passed,
later ones failed). Mount /usr/local/share/.cache/yarn as tmpfs so it's clean
every build and nothing can be half-evicted; the Berry cache stays persistent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 15:15:38 +00:00
2026-03-09 09:06:41 +00:00

Verso

A collaborative real-time editor for Quarto and LaTeX presentations and documents.

Verso is a fork of Overleaf that adds first-class Quarto support alongside Overleaf's existing LaTeX toolchain. It keeps Overleaf's real-time collaboration infrastructure and runs three compilers side by side, chosen automatically from the root file's extension: .qmd builds with Quarto (PDF via Typst, or HTML via RevealJS), .tex with latexmk/TeX Live, and .typ straight through Typst. All three coexist on one server.


Features

  • Real-time collaboration — multiple users editing the same .qmd file simultaneously, powered by Overleaf's operational-transformation engine
  • Three compilers.qmd builds with Quarto, .tex with latexmk/TeX Live, and .typ with Typst. The runner is chosen by the root file's extension, so Quarto, LaTeX and Typst projects live side by side
  • Two output formats — set format: typst in the YAML frontmatter for a PDF preview, or format: revealjs for an interactive HTML presentation rendered in an iframe
  • Document outline — headings (#, ##, ###) are extracted and shown in the sidebar outline panel
  • Math, code, tables — standard Quarto/Pandoc Markdown features all work
  • Auto-compile — the preview refreshes automatically 2.5 s after you stop typing
  • Project history — full change history inherited from Overleaf

Output formats

In the YAML frontmatter of your .qmd file:

format: typst     # → PDF preview via Typst (no LaTeX required)
format: revealjs  # → HTML slideshow preview

Typst is bundled with Quarto — no separate installation is needed.

Quick start

With Docker

docker run -d \
  -p 80:80 \
  -v ~/verso_data:/var/lib/overleaf \
  --name verso \
  registry.alocoq.fr/verso:latest

Then open http://localhost in your browser. On first run, visit /launchpad to create an admin account.

Build from source

# Build the base image (installs Quarto + TeX Live)
cd server-ce
make build-base

# Build the application image
make build-community

The two Dockerfiles are:

File Purpose
server-ce/Dockerfile-base Base OS image — installs system deps, Quarto, and a TeX Live (latexmk) toolchain
server-ce/Dockerfile Application image — installs Node services, compiles 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)
              └── /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

Key services:

Service Role
web HTTP API, React frontend, auth, project management
real-time WebSocket layer, live cursor and edit sync
document-updater Operational transformation, Redis pub/sub
clsi Compiler — runs quarto render (.qmd), latexmk (.tex) or typst (.typ) and serves output
docstore Document text storage (MongoDB)
filestore Binary file storage (S3 or local)
project-history Change history and version tracking

Writing a Quarto document

Minimal working example (main.qmd):

---
title: My Presentation
author: Your Name
date: today
format: revealjs
---

## Slide one

Write **Markdown** here.

## Mathematics

$$\int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}$$

For PDF output, change format: revealjs to format: typst.

Note on display math: put $$...$$ on a single line. Multi-line display math blocks can cause YAML parse errors in some Quarto versions.

Writing a LaTeX document

LaTeX still works exactly as in Overleaf. A project whose root file is a .tex file (e.g. main.tex) compiles with latexmk/TeX Live instead of Quarto — the engine is chosen from the root file's extension, no setting required. The Example LaTeX project in the New project menu is a ready-made starting point; Blank LaTeX project gives you an empty main.tex.

The bundled TeX Live is a minimal scheme-basic install. Documents needing extra packages may not build out of the box yet — see server-ce/Dockerfile-base for how to switch to a fuller TeX Live scheme.

Writing a Typst document

A project whose root file is a .typ file compiles directly to PDF with Typst — fast, modern markup with a real scripting language. No extra install is needed: Verso drives the Typst that ships inside Quarto (quarto typst compile). Use the Blank Typst project or Example Typst project entries in the New project menu to get started.

Environment variables

Verso inherits all of Overleaf's environment variables (prefixed OVERLEAF_). The most commonly needed ones:

Variable Default Description
OVERLEAF_APP_NAME Verso Name shown in the UI
OVERLEAF_MONGO_URL mongodb://mongo/sharelatex MongoDB connection string
OVERLEAF_REDIS_HOST localhost Redis host
OVERLEAF_SITE_URL Public URL (used in emails)
OVERLEAF_ADMIN_EMAIL Email 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 with the following changes:

  • LaTeX/CLSI compiler replaced by Quarto (PDF via Typst, HTML via RevealJS)
  • Default project template changed from main.tex to main.qmd
  • Document outline parser extended to read Markdown headings
  • Compiler selector in the UI replaced with a single "Quarto" option
  • Brand colours updated to Quarto's palette; name changed from Overleaf to Verso
  • TeX Live removed from the base Docker image; Quarto installed instead

All other infrastructure — real-time collaboration, history, auth, file storage, project management — is unchanged from Overleaf.

Contributing

Contributions are welcome. Please open an issue or pull request on the Verso repository.

The upstream Overleaf contribution guidelines are in CONTRIBUTING.md.

License

GNU Affero General Public License v3 — see LICENSE.

Copyright © Overleaf, 20142025 (original code).
Verso modifications © Aloïs Coquillard, 2026present.

S
Description
Quarto presentation editor based on the Overleaf framework
Readme AGPL-3.0 310 MiB
Languages
JavaScript 62.6%
TypeScript 29.5%
SCSS 2.9%
Java 2.1%
Pug 0.8%
Other 1.9%