lattice

NameLast commit messageLast commit date
.githubRelease v0.15.5 (#650)1 day ago
.huskyRefuse commits that grow a source file past 8,000 tokens (#436)2 weeks ago
design-systemLaunch polish: web-demo fixes, cold-load placeholder, public docs (#639)2 days ago
docsfix(overleaf): compile the writer's chosen main document and allow PDF notes as Overleaf comments (#656)1 day ago
evalsfix(agent): close quality relay race windows2 months ago
licensesComplete license notices: recover missing texts upstream, attribute CC BY icons, drop unlicensed buffers (#504)1 week ago
literature-workerrefactor(literature-worker): drop the dead Semantic Scholar branch (#69)1 month ago
patchesfix(editor): adopt Tiptap 3.33.0 with the @tiptap/react patch carried forward (#646)1 day ago
publicfix(pdf): run PDF.js on macOS 14's WebKit with window and worker polyfills (#508)1 week ago
research-envLaunch polish: web-demo fixes, cold-load placeholder, public docs (#639)2 days ago
scriptsfix(agent): stop repeated macOS Keychain prompts from Synara usage refreshes (#651)1 day ago
srcfix(overleaf): compile the writer's chosen main document and allow PDF notes as Overleaf comments (#656)1 day ago
src-taurifix(overleaf): compile the writer's chosen main document and allow PDF notes as Overleaf comments (#656)1 day ago
toolsAdopt Open Slide main 327dd09 ahead of its next release (#642)1 day ago
.env.examplerefactor: remove Lattice Shares and local semantic search, condense tests (#48)1 month ago
.gitattributesfeat(design-system): export the Paper design system and check it against the app (#567)4 days ago
.gitignoreRetro L2 + L9: bootstrap bun/knip fixes; CLAUDE.md rules become lint/build checks (#392)3 weeks ago
.no-mistakes.yamlAdd no-mistakes config that keeps the test step off the desktop app (#39)1 month ago
.oxlintrc.jsonfix(settings): share appearance, theme and build settings live across windows (#539)6 days ago
CLAUDE.mdRetro L2 + L9: bootstrap bun/knip fixes; CLAUDE.md rules become lint/build checks (#392)3 weeks ago
CODE_OF_CONDUCT.mdLaunch polish: web-demo fixes, cold-load placeholder, public docs (#639)2 days ago
CODING_STANDARDS.mdlint: forbid new useState, allowlisting the files that use it today (#510)1 week ago
components.jsonAdd shadcn/ui foundation (Tailwind v4, preflight-free)3 months ago
CONTRIBUTING.mdLaunch polish: web-demo fixes, cold-load placeholder, public docs (#639)2 days ago
index.htmlAdd permanent local browser access2 months ago
knip.jsonfeat(web-demo): run the real Lattice workspace in the browser for the website's /demo/ (#577)3 days ago
LICENSEchore: relicense Lattice under Apache-2.0 (#60)1 month ago
lingui.config.tschore: remove the icon lab playground and the manual Electron regression harness (#68)1 month ago
mise.tomlAdopt Open Slide main 327dd09 ahead of its next release (#642)1 day ago
NOTICEfeat(trellis): make the Trellis dockable-panel workspace the only layout (#61)1 month ago
package.jsonRelease v0.15.5 (#650)1 day ago
pnpm-lock.yamlfix(editor): adopt Tiptap 3.33.0 with the @tiptap/react patch carried forward (#646)1 day ago
README.mdLaunch polish: web-demo fixes, cold-load placeholder, public docs (#639)2 days ago
README.zh-CN.mdLaunch polish: web-demo fixes, cold-load placeholder, public docs (#639)2 days ago
rust-toolchain.tomlPin the Rust toolchain to 1.99.1 and install it from rust-toolchain.toml in CI (#397)3 weeks ago
THIRD_PARTY_NOTICES.mdfix(editor): adopt Tiptap 3.33.0 with the @tiptap/react patch carried forward (#646)1 day ago
tsconfig.jsonRetro L2 + L9: bootstrap bun/knip fixes; CLAUDE.md rules become lint/build checks (#392)3 weeks ago
tsconfig.node.jsonchore(lint): lint with Oxlint instead of ESLint (#251)4 weeks ago
vite.config.tsfix: close Overleaf sign-in races and terminal/PDF stalls, lazy-load the browser relay (#633)2 days ago
vitest.config.tsbuild(gate): pnpm gate:changed and test:invariants; perf:bench --against for a local red; bench failure screenshots kept; a pin bump skips the Rust cache warm (#346)3 weeks ago
README.md
Lattice

Lattice

A local-first LaTeX workspace for macOS, with your papers, your co-authors and an AI agent in the same window

Download Try it in your browser Website Watch the film Release notes Developer docs Issues 中文

Release CI License

Lattice with a LaTeX paper open: the Project tree and Papers library on the left, the source in the middle, the compiled PDF on the right

Why Lattice

A paper is more than a .tex file: it is the PDF you check, the papers you cite, the comments your co-authors leave and, now, an agent that edits with you. Lattice keeps all of them in one native Mac window. Your project stays an ordinary folder on disk, so it works offline, opens in any other editor and fits under Git; Overleaf is a sync target, not the place your paper lives.

Write

Source and PDF side by side, with completion and diagnostics as you type, SyncTeX jumps both ways and one-click builds with your own TeX Live. An outline rail follows your sections, \cite keys show their reference on hover, and six highlighters with meanings mark what still needs work. Start from a NeurIPS, ICML, ICLR, ACL, CVPR or AAAI template or one of two thesis classes, and Export for arXiv writes one ZIP that builds on its own. Dock any panel anywhere, keep Writing and Reading layouts, or save your own workspaces.

Revise

Annotations panel in round 2 with three proposals to review; the agent's rewrite of the abstract's opening line is open inline in main.tex with Accept, Reject and Try again

Select text to Proofread or Polish it in place, with a reason for each edit. Annotate the source or the PDF, then revise from your annotations in rounds: the agent proposes an edit for each one and you accept or reject it in place. Export review PDF writes the annotations you tick into a copy of the compiled PDF as standard PDF comments, so collaborators can read them in Preview, Acrobat or Zotero.

Bring your own agent

The Agent panel runs Claude Code or Codex, or another agent CLI on your Mac such as Cursor, OpenCode or Droid, signed in as you. Lattice comes with no model and no AI subscription of its own. The agent reads your project and papers, fixes build errors and edits files; every change shows as a diff you can review or undo.

Research

Papers library with nine papers on the left, Mamba: Linear-Time Sequence Modeling with Selective State Spaces open as a readable page in the middle, and the compiled draft on the right

Paper shown: Albert Gu and Tri Dao, “Mamba: Linear-Time Sequence Modeling with Selective State Spaces”, arXiv:2312.00752, CC BY 4.0.

Add papers by arXiv ID, DOI, title, link or BibTeX, and read each as a blog, the paper or the PDF beside your draft. Cite in one step, with the reference on hover. The library sorts, filters and groups by what you cite; Check references audits your bibliography against Crossref and shows each finding in a keyboard queue.

Collaborate with Overleaf

main.tex with Overleaf comment highlights and a co-author's live cursor, beside the Overleaf panel's Comments tab with three threads from demo co-authors, and Suggestions and Chat tabs

Two-way Overleaf sync with live presence, chat, comments and tracked changes. Your co-authors stay on Overleaf and their edits arrive as they type; nobody else needs Lattice. Comments read as conversations with one colour per person, and margin review sets comments and suggestions beside their lines.

Every format

The attention-map.tldr whiteboard open in the editor beside notes.md shown as a formatted Markdown document; the Project tree lists the same project's HTML page, spreadsheet and slides

Markdown notes edited in blocks, tldraw whiteboards, interactive HTML pages and spreadsheets with formulas live in the same project as the paper. Slides are React decks powered by Open Slide: edit them, comment on them, let the agent revise them, and present from Lattice. Import files… brings in anything else from your Mac.

History

History panel: the agent's rewrite of the abstract expanded to its diff with Restore this file, followed by a citation, your own edit and co-authors' saved versions, with the compiled PDF on the right

One timeline for saved versions, every edit from you or the agent, and Overleaf's history. Open any entry to see its diff and restore a file, or Compare… any two versions and export the PDF with the changes marked (via latexdiff from your TeX Live). The Git panel shows changes and pull requests when the project is a repository.

Install

Lattice runs on Apple Silicon Macs with macOS 14 or later, and builds with your own MacTeX or TeX Live. No TeX yet? Lattice notices at launch and offers to install BasicTeX for you.

  1. Download the .dmg from the latest release and drag Lattice into Applications.
  2. Open a folder, start from a template, or connect an Overleaf project. Guided tutorial in the project menu opens a sample paper for a one-minute tour.

Official builds are signed, notarized by Apple, and update themselves.

Contributing

To build from source, see CONTRIBUTING.md and the architecture docs. Bug reports and pull requests are welcome; please open an issue before a large refactor.

Acknowledgements

Lattice stands on many open-source projects. The major ones:

  • Open Knowledge (inkeep/open-knowledge) by Inkeep, the original basis of Lattice's earlier visual Markdown editor. Lattice has since replaced it with its own engine, but the editor began there, and we are grateful.
  • Trellis by Dan Fessler, the dockable panel layout of Lattice's workspace. Uses Trellis by DanFessler - github.com/DanFessler/trellis.
  • Synara by T3 Tools Inc. and Emanuele Di Pietro, the agent runtime behind Lattice's AI assistant.
  • Open Slide, which powers presentations.
  • Tiptap and CodeMirror, the rich-text and source editors.
  • PDF.js, the PDF viewer.
  • tldraw, the whiteboard.
  • Tauri, the desktop shell.

License

Lattice is licensed under the Apache License 2.0 (see also NOTICE), with the MIT-licensed Synara agent runtime by T3 Tools Inc. and Emanuele Di Pietro. Releases up to and including 0.1.341 were GPL-3.0-or-later and remain available under those terms. See third-party notices for component licenses and Synara integration notes for the runtime details.

Two components carry their own terms:

  • The whiteboard's tldraw SDK (tldraw, @tldraw/editor, @tldraw/driver) is source-available under the tldraw license, which requires a license key for production use. Release builds read that key from the VITE_TLDRAW_LICENSE_KEY repository secret at build time; it is not in this repository, so a build without the secret runs tldraw in its unlicensed, watermarked mode.
  • The workspace's panel layout, @danfessler/trellis (with @danfessler/trellis-react), is under its own non-commercial license with a commercial tier: see its license, the non-commercial terms and the commercial terms. Those terms apply to anyone using Lattice: the free tier covers non-commercial use only, so use at a company or a for-profit organization needs a Trellis license from its author. Uses Trellis by DanFessler - github.com/DanFessler/trellis.