A research workbench for macOS

Stop reading in one app and
writing in another.

lctrn is a native macOS workbench where your paper library, your manuscript, and an AI that has read both live in one window — instead of Zotero on one side and your editor and a chat window on the other.

Apple silicon·macOS 13+·the folder is the source of truth
lctrn — ~/lctrn · attention-survey
All Papers 1,284 · sorted by relevance
PaperAuthorsYearCitedTopicStateRelevance
Attention Is All You Need Vaswani et al. 2017137,402 nlp indexed 0.9841
Adam: A Method for Stochastic Optimization Kingma, Ba 2014198,553 methods indexed 0.9617
BERT: Pre-training of Deep Bidirectional Transformers Devlin et al. 201898,211 nlp indexed 0.9510
Language Models are Few-Shot Learners Brown et al. 202041,877 nlp indexed 0.9402
Deep Residual Learning for Image Recognition He et al. 2015241,089 vision running 0.8042
Denoising Diffusion Probabilistic Models Ho et al. 202018,233 vision indexed 0.9021
A Stylometric Inquiry into Hyperpartisan News Potthast et al. 2017412 corpus partial 0.6133
terminal— zsh · claude · attention-survey⌘J
~/lctrn/attention-survey claude "what's the lineage of attention here?"
◇ reading .sources/ · manuscript/ · references.bib…
◈ Claude Vaswani 2017 → Devlin 2018 → Brown 2020. Pinned all three and drafted a synthesis in §2 of the manuscript.
~/lctrn/attention-survey quarto render manuscript/index.qmd
✓ index.qmd → PDF · 0.04s
~/lctrn/attention-survey
lctrn — ~/lctrn · attention-survey
Manuscript manuscript/index.qmd saved
123456789101112131415161718
---
title: "Attention, Surveyed"
author: "You"
bibliography: ../../.lctrn/references.bib
---

# Introduction

Self-attention has become the default
primitive for sequence modeling
[@vaswani2017]. We trace its lineage
from alignment models [@bahdanau2015]
to large language models [@brown2020].

## Self-attention

```{r}
cites <- read_lib("attention")
2,406 words · PDF / HTML via Quarto
The split

Research already lives in two places. Writing it up shouldn't add a third.

You read and tag in a reference manager, then write and run analysis somewhere else entirely — copying citekeys across the gap by hand. lctrn collapses the two surfaces into one.

Today · three windows
A reference manager, an editor, and a chat window — none of which can see the others.
reference managerthe papers
code editorthe writing
ai chatno context
becomes
lctrn · one window
One workbench over one folder — library, manuscript, and an AI pointed at the same files.
lctrnpapers · writing · analysis
The workbench

Three surfaces, one source of truth.

A dense database of your papers, a writing surface that cites them directly, and a terminal that can read the whole pile — all driving off the same library folder.

01Library

A database, not a folder of PDFs

Drop in papers and get a sortable, filterable grid — metadata, tags, citations, relevance and a live local index. Search 1,284 papers in 0.04s.

02Write

Write the manuscript next to the sources

A Quarto manuscript that cites your library by @citekey. The AI drafts and synthesizes inline, leaving notes in the margin.

03Ask

Point Claude Code at the whole folder

An embedded terminal runs Claude Code in the project folder, so the model reads your papers, your notes and your draft — and edits the same files you see.

The connection

Everything points at one folder.

There's no database of record. lctrn is a GUI over a single library folder — and the AI is pointed at that same folder, so it reads and writes the exact files you see.

one pileEvery PDF lives in .sources/ and is registered once. Paste a file in by hand and the watcher reconciles the library live.
one .bibA single library-wide references.bib means every manuscript can cite every paper by relative path.
one contextThe terminal runs in the project folder, so the model reads your papers, your notes and your draft — and edits the same state.
How it works

From a pile of PDFs to a cited draft.

01

Point it at a folder

Pick a library root or let lctrn create ~/lctrn on first run.

02

Drop in papers

Add PDFs through the app or paste them straight into .sources/ — indexed live.

03

Start a project

Scaffold a manuscript, attach papers from the pile, and start writing.

04

Ask, cite, analyze

The terminal sees the same files — ask, cluster, and cite by @citekey.

Put the whole paper in one window.

Download the workbench and point it at a folder. Your library, your manuscript and the model start sharing the same ground truth.

Apple silicon · macOS 13+ · lctrn-0.0.1-arm64.dmg · unsigned build