toolactiveAGPL-3.0

Limn

Point at a spot in the PDF, reach the source line — a pin-based revision loop for people and agents on LaTeX manuscripts.

PythonLaTeXSyncTeXPDF.js

Revising a LaTeX manuscript means going back and forth between the PDF and the source. A reviewer sees the problem on the page; whoever edits has to find the same spot in the .tex files. Limn closes that loop for people and agents alike: point at the spot in the PDF, and the note lands on the source line it came from.

The Limn viewer on a sample paper: three open pins, each with the source line it reaches (L18, L20, L30).
The Limn viewer on a sample paper: three open pins, each with the source line it reaches (L18, L20, L30).

How it works

Drag over a spot in the PDF and write what should change. Limn turns it into a pin: the .tex file and line range — recovered with SyncTeX and cross-checked against the text — plus your note.

People and agents, one loop

Agents read the pins as a short work list (pins.md, about 35 tokens per pin instead of a 1,500-token screenshot), edit the source, and close each pin with what they changed. A person confirms — or replies with what is wrong, which sends the pin back. Co-authors on the same private network pin too, and every pin records who left it.

  • A single Python server with no dependencies beyond the standard library, and a browser viewer that renders the PDF as vectors (bundled PDF.js)
  • Several documents per manuscript as tabs — manuscript, response letter, view-only reviewer PDFs, figure documents
  • Figure documents: for figures drawn by code, a drag names the element and the script lines that drew it
  • Rebuilds on demand or when the upstream branch moves (--git-pull)
  • Threads, questions, @mentions, assignees, review before done, and a diff view per pin
  • One long-running instance per manuscript as a systemd user unit, shared with tailscale serve

Getting started

Requires Python 3.10+, uv, a TeX distribution with SyncTeX (latexmk/pdflatex) and Poppler (pdftoppm, pdfinfo).

uv tool install git+https://github.com/dartworklabs/limn@v0.4.22
limn version

To review on your own machine, start one server with local authentication and open http://127.0.0.1:18300/:

limn serve --manuscript ~/papers/paper2 --main main.tex --port 18300 --auth local

Never expose Limn without an identity provider in front of it. Collaboration over a tailnet, instances, the agent procedure and the security model are covered in the README and SECURITY.md.

License

AGPL-3.0-only. Commercial licenses are available from Dartwork.

Dartwork

AI Software Development, Numerical Analysis, Engineering R&D

© 2026 Dartwork Co., Ltd. All rights reserved. Seoul