Lorekeeper
Reading environment

Capture

lore capture files one thing — a thought or a URL — with enough context that it is still worth finding if you never come back to it.

A thought

lore capture brain "A lease is not a property: a consumer can lose its partition mid-batch"
Captured to ~/brain/inbox/20260925-153504-a-lease-is-not-a-property-a-consumer-can-lose.md
  id: 20260925-153504-a-lease-is-not-a-property-a-consumer-can-lose

The file lands in inbox/. Its name is its id: the local time it arrived, then a short slug of the text. The file holds exactly this:

---
id: 20260925-153504-a-lease-is-not-a-property-a-consumer-can-lose
created: 2026-09-25T15:35:04+00:00
---

A lease is not a property: a consumer can lose its partition mid-batch

It needs no processing to be useful. It says what it is and when it came, and lore search finds it as it is. Two captures in the same second do not collide: the second takes the next free -2, -3 suffix.

Text is never refused. Anything that is not a URL is a thought.

A URL

lore capture brain https://example.com/queue-semantics-talk
Captured to ~/brain/sources/url-e0d9f22837c9.md
  id: url-e0d9f22837c9

lore capture brain https://example.com/queue-semantics-talk/
Already captured as ~/brain/sources/url-e0d9f22837c9.md
  id: url-e0d9f22837c9
Nothing was written.

lore capture brain "https://example.com/queue-semantics-talk#questions"
Already captured as ~/brain/sources/url-e0d9f22837c9.md
  id: url-e0d9f22837c9
Nothing was written.

lore capture brain "https://example.com/queue-semantics-talk?utm_source=newsletter"
Captured to ~/brain/sources/url-99765686b616.md
  id: url-99765686b616

A URL lands in sources/, named for a stable source id computed from the URL. The URL is identified, never visited. lore makes no network call. The file:

---
id: url-e0d9f22837c9
created: 2026-09-25T15:35:05+00:00
url: "https://example.com/queue-semantics-talk"
---

https://example.com/queue-semantics-talk

Addresses that name the same thing are one source. A trailing slash or a #section anchor does not make a new page, so the second and third captures above report the file that already holds it and write nothing.

A tracking parameter does make a new source. Stripping query parameters by guesswork would merge two of your sources into one without telling you, and v0.1 will not risk that for any site it has no rule for.

The one site rule

YouTube is the only site with its own rule in v0.1 (rule set version 1). Every form of a video's address resolves to the video itself:

lore capture brain "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
Captured to ~/brain/sources/yt-dQw4w9WgXcQ.md
  id: yt-dQw4w9WgXcQ

lore capture brain https://youtu.be/dQw4w9WgXcQ
Already captured as ~/brain/sources/yt-dQw4w9WgXcQ.md
  id: yt-dQw4w9WgXcQ
Nothing was written.

The id prefix says which rule minted it: yt- for YouTube, url- for every other address.

What capture refuses

A source must be an http or https URL. Anything else that parses as a URL is refused, and the refusal says what to do instead:

lore capture brain ftp://example.com/talk
lore capture: "ftp://example.com/talk" uses the ftp: scheme. A source URL must be http or https.
Capture a source as an http or https URL, or capture what you want to say about it as text.
[exit 1]

Capture also refuses a directory that is not a brain, and a brain whose manifest it cannot trust. Nothing is written when it refuses. Troubleshooting lists each refusal.