tinyleaf
中文版 | 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
latexmkwith--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/\includesupport \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:lineentries 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)
| File | Size | Uploaded | |
|---|---|---|---|
| tinyleaf-0.6.0.tar.gz | 112.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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