claude d8ce7f9dc1
Build and Deploy Verso / deploy (push) Has been cancelled
feat: support svg package — install Inkscape and enable shell-escape
The LaTeX svg package converts .svg files to PDF at compile time by
shelling out to Inkscape (requires --shell-escape). Without Inkscape in
the image and the flag enabled, compilation fails with "Did you run the
export with Inkscape?".

- Dockerfile-base: add inkscape to the apt install block
- settings.js: expose OVERLEAF_LATEX_SHELL_ESCAPE env var → clsi.latexShellEscape
- LatexRunner.js: pass -shell-escape to latexmk when the setting is on
- deploy-verso-prod.yml: set OVERLEAF_LATEX_SHELL_ESCAPE=true (trusted-user instance)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 10:57:56 +00:00
2026-03-09 09:06:41 +00:00

Verso

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

Verso is a fork of Overleaf that adds first-class Quarto and Typst support alongside Overleaf's 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:

Root file Compiler Typical output
.qmd Quarto PDF (via Typst or LaTeX), or an HTML/RevealJS deck
.tex latexmk / TeX Live PDF
.typ Typst PDF

All three coexist on one server; no per-project configuration is required to pick the engine.


Features

  • Real-time collaboration — multiple people editing the same file at once, powered by Overleaf's operational-transformation engine, with live cursors and full project history.
  • Three compilers, auto-dispatched — Quarto, LaTeX and Typst projects live side by side; the runner is selected from the root file's extension.
  • Language-aware editor for all three:
    • LaTeX — syntax highlighting, command/environment/reference autocomplete, linting (inherited from Overleaf).
    • Quarto (.qmd) — Markdown highlighting plus Quarto-aware completions: code chunks (```{python}, {r}, {julia}, {ojs}…), callouts and fenced divs (::: {.callout-note}, columns, tabsets) and cross-references (@fig-, @tbl-, @sec-, @eq-).
    • Typst (.typ) — syntax highlighting and completions for the common functions and markup (#import, #let, #set, #show, #figure, #table, #cite, …).
  • Document outline — section headings are extracted into the sidebar outline panel for LaTeX, Quarto (#, ##, …) and Typst (=, ==, …).
  • Format at a glance — the project dashboard shows a per-project format badge (Quarto / Typst / LaTeX), and the compiler dropdown greys out engines that don't apply to the current root file.
  • Publish & share compiled output — publish the compiled result as a standalone page at /p/:token, with three independent access tiers (project members / any logged-in user / public). Works for both HTML/RevealJS decks (served live) and PDFs (embedded inline). HTML decks also get a one-click Present button in the toolbar.
  • Quarto Python cells — optional per-project virtual environment built from the project's requirements.txt, so Python code chunks run during render (gated to the project owner and invited collaborators).
  • Auto-compile — the preview refreshes automatically shortly after you stop typing.

Output formats

In the YAML frontmatter of a .qmd file:

format: typst     # → PDF preview, rendered via Typst (no LaTeX required)
format: pdf       # → PDF preview, rendered via LaTeX
format: revealjs  # → interactive HTML slideshow preview
format: html      # → a static HTML page

Typst ships inside Quarto, so format: typst needs no separate installation.

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

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 in your browser, then visit /launchpad on first run to create the admin account.

Build from source

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

# Build the application image
make build-community
File Purpose
server-ce/Dockerfile-base Base OS image — system deps, Quarto (with Typst) and a TeX Live (latexmk) toolchain
server-ce/Dockerfile Application image — Node services and the compiled 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 (.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 documents

Quarto (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}$$

Switch format: revealjs to format: typst (or pdf) for a PDF preview.

LaTeX (main.tex)

LaTeX works exactly as in Overleaf: a project whose root file is a .tex file compiles with latexmk/TeX Live, no setting required. The Example LaTeX project in the New project menu is a ready-made starting point.

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

Typst (main.typ)

A project whose root file is a .typ file compiles directly to PDF with Typst — fast, modern markup with a real scripting language. Verso drives the Typst bundled with Quarto, so no extra install is needed. Use the Blank Typst project entry in the New project menu to get started.

Publishing compiled output

From Share → Publish, Verso compiles the project and snapshots the result to a standalone page at /p/:token:

  • HTML / RevealJS decks are served as a live page (the Present toolbar button is a one-click shortcut to this).
  • PDF output is embedded inline; the raw file stays reachable at /p/:token/output.pdf.

Three stable links are issued, one per access tier — project members, any logged-in user, or anyone — and each can be copied or independently reset.

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 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. The main additions on top of upstream are:

  • Quarto and Typst compilers running alongside LaTeX, dispatched by the root file's extension.
  • Editor language support (highlighting, autocomplete, outline) for Quarto and Typst.
  • A per-project format badge on the dashboard and a root-file-aware compiler selector.
  • Publishing/sharing of compiled output (HTML decks and PDFs) via /p/:token with tiered access links, and a toolbar Present shortcut.
  • Optional per-project Python virtual environments for Quarto code execution.
  • Verso branding (name, logo, palette, loading animation).

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

Contributing

Contributions are welcome — 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, 20142026 (original code). Verso modifications © Aloïs Coquillard, 2026.

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%