Skip to main content

tinyleaf

Tinyleaf

PyPI version GitHub release CI License: AGPL v3 Documentation

中文版 | Documentation | Brand assets

Tinyleaf is a tiny, local-first TeX editor that runs in your browser.

It is built for people who want an Overleaf-like editing experience without running a full Overleaf stack. Install one Python package, point it at a LaTeX project, and edit from a clean web UI with PDF preview, compile logs, Git tools, search, outline, and multi-tab editing.

pip install tinyleaf

# Open one project. Docker-based TeX Live compilation is enabled by default.
tinyleaf /path/to/my-thesis

# Or use a local TeX installation instead.
tinyleaf /path/to/my-thesis --no-docker

# Launch the project registry.
tinyleaf

Why Tinyleaf?

Tinyleaf sits between a local editor and a full collaborative LaTeX platform:

  • Local-first — your projects stay on your filesystem
  • Self-hosted — run it on your laptop, workstation, lab server, or VPS
  • Small runtime — no database, no Node.js service, no Redis, no MongoDB
  • Browser UI — CodeMirror editor, PDF preview, file tree, Git panel, and settings
  • Flexible compilation — Dockerized TeX Live by default, or local latexmk with --no-docker
  • Single-user focused — designed for individual writing workflows, not a multi-user SaaS clone

Features

Editing

  • CodeMirror 6 editor with LaTeX syntax highlighting
  • Multi-tab editing with quick open (Ctrl+P)
  • Auto-pair \begin{...} / \end{...}
  • Project-wide search
  • LaTeX outline sidebar with recursive \input / \include support
  • \ref{}, \cite{}, and \label{} autocomplete from project symbols

PDF and compilation

  • PDF.js preview with live reload
  • Page navigation, zoom controls, and text search
  • Real-time compile logs over SSE
  • Clickable file.tex:line entries in compile output
  • SyncTeX forward/reverse search
  • Word/page statistics via texcount
  • Export project as ZIP

Projects and workflow

  • Single-project mode: open any directory directly
  • Multi-project registry stored at ~/.config/tinyleaf/projects.json
  • File tree with create, upload, rename, delete, and search
  • Git status, diff, commit, push, pull, and log from the UI
  • 7 UI themes with light/dark mode
  • English and Chinese UI

Installation

pip install tinyleaf

Tinyleaf has zero Python runtime dependencies beyond the standard library. The web editor assets are bundled with the package.

For compilation, choose one of:

Backend Command Requirements
Docker TeX Live tinyleaf /path/to/project Docker installed
Local TeX Live tinyleaf /path/to/project --no-docker latexmk available in PATH

Usage

usage: tinyleaf [-h] [-V] [--projects-dir DIR] [--config-dir DIR]
                [--docker | --no-docker] [--image IMAGE] [--port PORT]
                [--host HOST] [--no-browser]
                [project_path]

Common examples:

# Open a project and compile with Docker.
tinyleaf ~/papers/my-paper

# Use local latexmk instead of Docker.
tinyleaf ~/papers/my-paper --no-docker

# Bind to all interfaces on a server.
tinyleaf ~/papers/my-paper --host 0.0.0.0 --port 14159

# Start the multi-project registry view.
tinyleaf

Multi-project registry

When launched without a project_path, Tinyleaf opens a project registry. The registry maps project names to absolute paths anywhere on the filesystem.

From the project page you can:

  • Open Folder — register an existing directory
  • New Project — create a new project at a chosen location
  • Remove — unregister a project, optionally deleting files
  • Switch views — grid/list layout with persistent preferences

Keyboard shortcuts

Shortcut Action
Ctrl+S Save current file
Ctrl+Enter Compile
Ctrl+P Quick open
Ctrl+Shift+F Project search
Ctrl+Shift+C Git commit
Ctrl+Shift+P Git push
Ctrl+/ Shortcut help

Docker Compose

For a simple containerized setup:

docker compose up

Tinyleaf starts at http://localhost:14159.

Tinyleaf vs. Overleaf CE

Tinyleaf Overleaf CE
Primary use case Personal/local TeX editing Multi-user collaborative platform
Install pip install tinyleaf Docker Compose stack
Runtime services Python stdlib server MongoDB, Redis, Node.js, CLSI, etc.
Project storage Your filesystem Application-managed storage
Compilation Docker TeX Live or local latexmk CLSI service
Git workflow Built-in lightweight UI Git Bridge
Collaboration Single-user focused Multi-user

Tinyleaf is not trying to replace the full Overleaf collaboration model. It is for writers who want a fast, self-hosted browser editor for their own TeX projects.

Documentation

License

AGPL-3.0-or-later

Release files for tinyleaf 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tinyleaf 0.6.0
File Size Uploaded
tinyleaf-0.6.0.tar.gz 112.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tinyleaf 0.6.0
File Interpreter ABI Platform
tinyleaf-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 228.7 kB

Release files / tinyleaf-0.6.0.tar.gz

Download URL tinyleaf-0.6.0.tar.gz
Size 112.7 kB
Tags Source
SHA-256 checksum
How to use checksums
6f5b47df6cbe93274aced46d23878e2f7f071c3a00d1f75e0ddf2849d2f9b670
BLAKE2b-256 checksum
How to use checksums
d6c6f3656a97bac63ed25442e2dbb168bc9f4fa6a57a30cb3a9cb86095b7ddc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / tinyleaf-0.6.0-py3-none-any.whl

Download URL tinyleaf-0.6.0-py3-none-any.whl
Size 116.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9fa5a1756d1daee811fca2e514247f2562c23308348dbe4c496063336ef65970
BLAKE2b-256 checksum
How to use checksums
5310962d0cf2f41c855735fdcaa578738b9338e4f2c7dddbaa80b8948bd5ba95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.7.0

2 release files

This release

0.6.0 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page