Abstract
Scribe is an offline editor for LaTeX and Python, for whatever you are writing: a paper, a thesis, notes for a course, a lab report or a talk. Run the notebook and its figures and numbers land in the PDF, already up to date. It takes notes with mathematics during a lecture, reads and highlights the papers you cite, and checks your work before you hand it in. It runs on your own computer, with or without an internet connection, and it costs nothing.1 No paid tier, no trial, and no account to make.
Introduction
Scientific writing is rarely just text. A thesis chapter, a paper or a report has figures that come out of a script and numbers that come out of an experiment, and the two drift apart the moment one of them changes. Scribe keeps them together: the notebook and the document live in one project, and a compile brings every figure and every number up to date.3 Only notebooks that changed since they last ran are run again; everything else is reused, so a compile stays quick.
Everything happens on your computer. There is no account, no upload and no compile queue, and it works the same on a train with no signal. Start from a template for an article, a thesis, an IEEE or ACM paper, slides or lecture notes, or bring a project over from Overleaf.
The sections below show what that looks like, recorded from the app itself.
Notebooks feed the document
Figures are notebook cells marked [figure: loss]; numbers leave the notebook with nbval("acc", 0.96, err=0.003). In the LaTeX, \nbfig{loss} and \nbval{acc} bring them in, typeset with their uncertainty. Change the code, and the next compile reruns only what went stale.
Notes with mathematics
Notes are Markdown files whose maths renders as you write, fast enough for a lecture. Inside a formula, // becomes a fraction, ;a becomes α and -> an arrow; Tab steps through the blanks and out again. Notes link to each other with [[name]], collect #tags, and gather every definition and theorem for revision.
Try it
The note on the left takes the same shortcuts as Scribe's notes. Type $ for a formula and $ again straight away for a displayed one; inside a formula, // makes a fraction, ;a an α, -> an arrow, and Tab moves on to the next blank and out.
Reading the papers you cite
Attach a reference's PDF and read it in Scribe. Select a sentence and press Highlight: the quote goes into your note on that paper, with a link that opens the PDF at its page.
Revision
A line starting Q: with its answer on a line starting A: is a card. Review asks the cards that are due and spaces them out by how well you knew them; they also export to Anki.
Tables without the ampersands
Put the cursor in a table and edit it as a grid: set each column's alignment, add rows and columns, or paste a block straight from a spreadsheet. Scribe writes back aligned LaTeX, keeping booktabs rules and \multicolumn.
When it doesn't compile?
Errors come with a line in plain words: which package a command needs, where the unclosed brace is, which citation has no entry. Turn on Compile as you type and the PDF follows your writing.
Start from a template
New Project offers these, each a complete project that compiles as it is. Figure 7 shows their first pages, compiled by Scribe; open one to see the whole PDF.
(a) Lecture notes
(b) Article with a notebook
(c) Plain article
(d) Thesis
(e) IEEE conference paper
(f) ACM conference paper
(g) Slides
Everything else
The rest of Scribe, briefly, in Table 1.4 Tables here are set the way the booktabs package sets them: three horizontal rules and no vertical ones.
| Feature | What it does |
|---|---|
| Version history | Every save keeps a version; see what changed and restore it, no git needed. |
| Check before submitting | Missing citations and labels, unreferenced figures, stale results, what arXiv would reject. |
| Zotero | \cite{ completes from your library and adds the entry to the bibliography. |
| Import from Overleaf | Open a project from its zip download or git link. |
| Templates | An article with a notebook, a thesis, IEEE and ACM papers, slides, lecture notes. |
| LaTeX in one click | No TeX installed? Scribe fetches Tectonic, about 20 MB. |
| DOI and arXiv | Add a reference by its DOI or arXiv number. |
| Sketches | Draw a diagram into a note, with pen pressure on a tablet. |
| Code in notes | Fenced code highlighted in its language, with a copy button. |
| SyncTeX | Double-click the PDF to reach its source, or highlight text there to find it. |
| Export for submission | One plain-LaTeX zip a journal can compile, with every value written in. |
| Git, terminal, Vim | A git panel, a real terminal, and Vim keys if you want them. |
Compared with Overleaf
Overleaf is very good at what it is for: writing together, in a browser, from anywhere. Scribe is for writing on your own computer, with your code next to your text and nothing in between. Table 2 puts them side by side, with Overleaf's free plan as it stood in October 2026.
| Scribe | Overleaf, free plan | |
|---|---|---|
| Price | Free, every feature | Free; paid plans from $98 a year (students) or $199 (Standard) |
| Time allowed per compile | No limit: it runs on your computer | 10 seconds |
| Without an internet connection | Works | Doesn't: it runs in the browser |
| History | A version at every save, kept | The last 24 hours |
| Collaborators | Through git | One per project, editing live |
| Git | Built in | Paid plans |
| Python figures and numbers in the text | Yes | No |
| Notes with maths, revision cards | Yes | No |
| Nothing to install | No, it's an app | Yes |
Under the hood
Scribe is a native desktop app: a Rust core with a TypeScript interface, built on Tauri 2. The whole app is about 13 MB. Nothing runs on a server, and your work stays plain files in a folder you choose.
- Rust core.
- Files, compiling, notebooks, git and the terminal run in Rust. Every path is checked to stay inside the project, and saves are atomic, so a crash never leaves half a file.
- Vim keys.
- Normal, insert and visual modes in the editor and in notebook cells, with
:w,:qand:wq. Absolute or relative line numbers, multiple cursors, rectangular selection. - The editor.
- CodeMirror 6, with completion that knows your labels, citations, figures and notebook values, project-wide search, and the macOS spell checker.
- TeX.
- Tectonic, or TeX Live through
latexmk. SyncTeX works both ways between source and PDF; the build goes tobuild/, out of your way. - PDF and maths.
- pdf.js with a selectable text layer, so text in the PDF can be found in the source. KaTeX typesets formulas in notes and in the live preview.
- Python.
- Notebooks are plain
.pyfiles with# %%cells, or.ipynb. A kernel per project keeps state between cells; figures are saved as vector PDF. - Git and a terminal.
- Commit, push and diff from a panel, and a real terminal running your own shell on a pseudo-terminal.
- Offline and private.
- Everything works without a connection. No account, no telemetry; the network is used only when you ask: looking up a DOI or arXiv ID, installing Tectonic, or fetching a TeX package for the first time.
Remark 1. On an Apple M5 Mac with TeX Live, the four-page example paper in these demos, with two figures, a table and a bibliography, compiles in 1.4 seconds from scratch and in half a second after an edit.
# notebooks/experiment.py
# %% [figure: loss]
fig, ax = plt.subplots()
ax.plot(epochs, loss)
nbval("acc", 0.960, err=0.003, unit=r"\percent")
% main.tex
\nbfig{loss}
Accuracy reaches \nbval{acc}. % → 96.0 ± 0.3 %
| Keys | Does | Keys | Does |
|---|---|---|---|
| ⌘↵ | Compile | ⇧⌘P | Every command, by name |
| ⇧⌘↵ | Run the notebooks | ⌘P | Go to a file |
| ⇧↵ | Run a cell | ⇧⌘F | Search the project |
| ⌥⌘N | Quick note | ⌥⌘T | Today's note |
Questions
Set out the way Scribe sets revision cards.
Q: Is it really free? What's the catch?
A: There isn't one. Scribe runs on your computer, so it costs nothing to keep going, and it will stay free for everyone.
Q: Does it work without internet?
A: Yes. Writing, compiling, notebooks and notes all work offline. Only looking up a reference by DOI, and fetching a TeX package the first time it's used, need a connection.
Q: Do I need to install LaTeX first?
A: No. If none is found, one click installs Tectonic, about 20 MB. If you already have TeX Live, Scribe uses it.
Q: Do I need Python?
A: Only for notebooks. Papers, a thesis, notes and slides need nothing but LaTeX.
Q: Can I bring my Overleaf projects?
A: Yes: open the zip from Overleaf's Download menu, or paste the project's git link.
Q: Can I write with other people?
A: Through git, with commit, pull and push in a panel. Writing together live, in the same document at the same time, is on its way. coming soon
Q: Where do my files live?
A: In a folder you choose, as plain .tex, .bib, .py and .md files. Nothing is locked inside Scribe.
Q: Which systems does it run on?
A: macOS today. Windows and Linux are coming; see Getting Scribe.
Why it exists
I wrote Scribe after finishing my thesis. While writing the papers that followed, I found that the tools available didn't suit the way I work, so I decided to build my own, and to give it away.
Georgios Kiritsis
AGetting Scribe
Scribe is free on every platform. Pick yours:
- Install Scribe, open it, and start a project from a template, or import one from Overleaf.
- If there is no LaTeX on your computer, press Install LaTeX. Python is only needed for notebooks.
Free for everyone, forever.
BCiting Scribe
If Scribe helped with your work, citing it helps other people find it. Listing 2 is a BibTeX entry for \cite{kiritsis2026scribe}.
@misc{kiritsis2026scribe,
author = {Kiritsis, Georgios},
title = {Scribe: an offline editor for {LaTeX} and {Python}},
year = {2026},
note = {Version 1.0.0},
howpublished = {\url{https://georgekiritsis.github.io/scribe-website/}}
}