A notebook in your terminal, shared with your agents. Write in plain text and capture from anywhere. Your agents use the same thc commands you do and sign everything they touch. It all lives on your machine, in an append-only log you can read, sync and rewind.
$curl -fsSL https://github.com/brancusi/thought-control-releases/releases/latest/download/install.sh | shmacOS. Puts thc, the Thought Control command, on your PATH, makes your first vault, starts the background daemon and sets up agent skills. Every download is checked before it's installed.
$ thc add "Call the landlord about the deposit due:fri !high #lisbon"added m2xp6 [ ] Call the landlord about the deposit #lisbon due fri · !high · in today's journal$ THC_ACTOR=claude thc todo "Summarize the reading list" --due tomorrowadded hew72 [ ] Summarize the reading list due tomorrow · ◆ claude · in today's journal$ thc q 'status:open due<=+7d' --fields short,due --json | jq -c .items[{"short":"hew72","due":"2026-10-04"},{"short":"m2xp6","due":"2026-10-09"}]$ thc reviewReview · 1 change by claude · oldest first1 D8S2FX ◆ claude · Oct 3 10:42 · this device+ hew72 [ ] Summarize the reading listthc review accept 1 · thc review revert 1$
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ─────────────────────────────────────────────────━━━━━━━━━────────────────────────────────────────── § Journal › Sat 03 Oct SAT 03 OCT 2026 · TODAY WED 30 THU 01 • FRI 02 • [SAT 03 •] SUN 04 MON 05 TUE 06 ───────────────────────────────────────────────────────────────────────────────────────────── · Morning: slept well, 30 min run #health [ ] Call dentist to reschedule #health due fri · !high · Dentist appointment [[Health]] tue 14:00 [ ] Pay rent tue 09:00 · ↻ monthly · Mom's birthday, call her oct 15 10:00 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow Booked the flat in Lisbon. It faces the river, and the light in the mornings is extraordinary. [ ] Call the landlord about the deposit due:tue !high #lisbon▮ due tue · !high ✓ ──────────────────────────────────────── also today ───────────────────────────────────────── [ ] Water plants ¶ Home · today · ↻ 3d [ ] Replace furnace filter ¶ Home · today · ↻ 3mo! [x] Renew passport #admin § fri oct 02 · done 10:41 § sat 03 oct · 53 words · autosaved ⌃T task ⌃O open ⌃P ⌃N day Esc done F1 keys thc 0.9.65
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ─────────────────────────────────────────────────━━━━━━━━━────────────────────────────────────────── § Journal › Sat 03 Oct SAT 03 OCT 2026 · TODAY WED 30 THU 01 • FRI 02 • [SAT 03 •] SUN 04 MON 05 TUE 06 ───────────────────────────────────────────────────────────────────────────────────────────── · Morning: slept well, 30 min run #health [ ] Call dentist to reschedule #health due fri · !high · Dentist appointment [[Health]] tue 14:00 [ ] Pay rent tue 09:00 · ↻ monthly · Mom's birthday, call her oct 15 10:00 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow Booked the flat in Lisbon. It faces the river, and the light in the mornings is extraordinary. [ ] Call the landlord about the deposit due:tue !high #lisbon▮ due tue · !high ✓ ──────────────────────────────────────── also today ───────────────────────────────────────── [ ] Water plants ¶ Home · today · ↻ 3d [ ] Replace furnace filter ¶ Home · today · ↻ 3mo! [x] Renew passport #admin § fri oct 02 · done 10:41 § sat 03 oct · 53 words · autosaved ⌃T task ⌃O open ⌃P ⌃N day Esc done F1 keys thc 0.9.65
Plain text, with structure
A page is a buffer you just type into. Markdown markers make tasks, lists and headings; the marker is the truth. No modes, no forms. The editor runs on caretline.
Agents as colleagues
--json everywhere, stable exit codes, idempotent keys, guarded writes. Every agent change is signed and waits in a review lane.
Nothing is ever overwritten
One JSON line per change, per device. Undo anything, see any note's history, ask what a page looked like last Tuesday.
Yours, locally
No account and no server. A vault is a folder: sync it with anything. Conflicts keep both versions, and you choose.
You steer them.
They steer you.
The log keeps score.
Claude Code, Codex and your own scripts use the same thc you do. Every write carries its author, ◆ claude, and waits in the review lane until you press a or u. Only a person can accept.
- Guarded writes.
--expect status=todoclaims a task once; the second agent gets exit4. - A team on one board.
thc team upstarts one agent per role;thc nexthands out work in your order. - Taught once.
thc setup claude --userinstalls a skill generated from the binary.
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ────────────────────────────────────────────────────────────────────━━━━━━━───────────────────────── Log · to review 1 oldest first r all changes ▌ 10:41 ◆ claude HC1Q73 created edx71 Summarize unread newsletters into [[Reading List]] + in § today · due tomorrow · #reading to review · 1 by claude ● live a accept u undo A accept all r all changes ? keys
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ────────────────────────────────────────────────────────────────────━━━━━━━───────────────────────── Log · to review 1 oldest first r all changes ▌ 10:41 ◆ claude HC1Q73 created edx71 Summarize unread newsletters into [[Reading List]] + in § today · due tomorrow · #reading to review · 1 by claude ● live a accept u undo A accept all r all changes ? keys
See only what you're cleared here for.
A context lays a saved view over everything you see: only #work while you're at work. The header names it the whole time it's on, so nothing is withheld without you knowing. It stays on this device and is never synced. C in the app, or thc context work.
- [ ] Review the migration PR #work
- Call the landlord about the deposit
- [ ] Send the invoice #work
- Book the dentist
- [x] Fix the flaky login test #work
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ───────────────━━━━━━━────────────────────────────────────────────────────────────────────────────── Today 2 ▌ 23dea [ ] Replace furnace filter today · ↻ 3mo! · ¶ Home xtews [ ] Water plants today · ↻ 3d · ¶ Home Next 7 days 7 edx71 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow · ◆ claude fk5x2 [ ] Draft Q4 OKRs mon · due Oct 10 (in 7d) · !high · ¶ Q4 Planning ykwkc [ ] Collect last quarter's metrics due tue · ¶ Q4 Planning 1x3db [ ] Pay rent tue 09:00 ◎ · ↻ monthly qz8ze · Dentist appointment [[Health]] tue 14:00 pa3e6 [ ] Review draft with the team due fri · ¶ Q4 Planning ny82x [ ] Call dentist to reschedule #health due fri · !high Done today 1 k00ht [x] Renew passport #admin 10:41 today · 12 open · 2 inbox ● live x done a add w agenda space leader ? keys thc 0.9.65
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ───────────────━━━━━━━────────────────────────────────────────────────────────────────────────────── Today 2 ▌ 23dea [ ] Replace furnace filter today · ↻ 3mo! · ¶ Home xtews [ ] Water plants today · ↻ 3d · ¶ Home Next 7 days 7 edx71 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow · ◆ claude fk5x2 [ ] Draft Q4 OKRs mon · due Oct 10 (in 7d) · !high · ¶ Q4 Planning ykwkc [ ] Collect last quarter's metrics due tue · ¶ Q4 Planning 1x3db [ ] Pay rent tue 09:00 ◎ · ↻ monthly qz8ze · Dentist appointment [[Health]] tue 14:00 pa3e6 [ ] Review draft with the team due fri · ¶ Q4 Planning ny82x [ ] Call dentist to reschedule #health due fri · !high Done today 1 k00ht [x] Renew passport #admin 10:41 today · 12 open · 2 inbox ● live x done a add w agenda space leader ? keys thc 0.9.65
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ─────────────────────────────────────────────────━━━━━━━━━────────────────────────────────────────── § Journal › Sat 03 Oct SAT 03 OCT 2026 · TODAY WED 30 THU 01 • FRI 02 • [SAT 03 •] SUN 04 MON 05 TUE 06 ───────────────────────────────────────────────────────────────────────────────────────────── · Morning: slept well, 30 min run #health [ ] Call dentist to reschedule #health due fri · !high · Dentist appointment [[Health]] tue 14:00 [ ] Pay rent tue 09:00 · ↻ monthly · Mom's birthday, call her oct 15 10:00 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow Read back through [[Q▮ ┌──────────────────────────────────────┐ ───────────────────│¶ Q4 Planning │────────────────────────────────── [ ] Water plants └──────────────────────────────────────┘ ¶ Home · today · ↻ 3d [ ] Replace furnace filter ¶ Home · today · ↻ 3mo! [x] Renew passport #admin § fri oct 02 · done 10:41 § sat 03 oct · 31 words · autosaved ↑↓ choose Enter link Esc close thc 0.9.65
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ─────────────────────────────────────────────────━━━━━━━━━────────────────────────────────────────── § Journal › Sat 03 Oct SAT 03 OCT 2026 · TODAY WED 30 THU 01 • FRI 02 • [SAT 03 •] SUN 04 MON 05 TUE 06 ───────────────────────────────────────────────────────────────────────────────────────────── · Morning: slept well, 30 min run #health [ ] Call dentist to reschedule #health due fri · !high · Dentist appointment [[Health]] tue 14:00 [ ] Pay rent tue 09:00 · ↻ monthly · Mom's birthday, call her oct 15 10:00 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow Read back through [[Q▮ ┌──────────────────────────────────────┐ ───────────────────│¶ Q4 Planning │────────────────────────────────── [ ] Water plants └──────────────────────────────────────┘ ¶ Home · today · ↻ 3d [ ] Replace furnace filter ¶ Home · today · ↻ 3mo! [x] Renew passport #admin § fri oct 02 · done 10:41 § sat 03 oct · 31 words · autosaved ↑↓ choose Enter link Esc close thc 0.9.65
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ───────────────━━━━━━━────────────────────────────────────────────────────────────────────────────── Today 2 ▌ 23dea [ ] Replace furnace filter today · ↻ 3mo! · ¶ Home xtews [ ] Water plants today · ↻ 3d · ¶ Home Next 7 days 7 edx71 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow · ◆ claude fk5x2 [ ] Draft Q4 OKRs mon · due Oct 10 (in 7d) · !high · ¶ Q4 Planning ykwkc [ ] Collect last quarter's metrics due tue · ¶ Q4 Planning 1x3db [ ] Pay rent tue 09:00 ◎ · ↻ monthly qz8ze · Dentist appointment [[Health]] tue 14:00 pa3e6 [ ] Review draft with the team due fri · ¶ Q4 Planning ny82x [ ] Call dentist to reschedule #health due fri · !high Done today 1 k00ht [x] Renew passport #admin 10:41 ─ space ──────────────────────────────────────────────────────────────────────────────────────────── f +find t +toggle r review lane q quit g +go v +views e $EDITOR ? every key n +new space commands E $EDITOR page a about · what's new space… ⌫ back Esc cancel
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ───────────────━━━━━━━────────────────────────────────────────────────────────────────────────────── Today 2 ▌ 23dea [ ] Replace furnace filter today · ↻ 3mo! · ¶ Home xtews [ ] Water plants today · ↻ 3d · ¶ Home Next 7 days 7 edx71 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow · ◆ claude fk5x2 [ ] Draft Q4 OKRs mon · due Oct 10 (in 7d) · !high · ¶ Q4 Planning ykwkc [ ] Collect last quarter's metrics due tue · ¶ Q4 Planning 1x3db [ ] Pay rent tue 09:00 ◎ · ↻ monthly qz8ze · Dentist appointment [[Health]] tue 14:00 pa3e6 [ ] Review draft with the team due fri · ¶ Q4 Planning ny82x [ ] Call dentist to reschedule #health due fri · !high Done today 1 k00ht [x] Renew passport #admin 10:41 ─ space ──────────────────────────────────────────────────────────────────────────────────────────── f +find t +toggle r review lane q quit g +go v +views e $EDITOR ? every key n +new space commands E $EDITOR page a about · what's new space… ⌫ back Esc cancel
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ─────────────────────────────────━━━━━━━──────────────────────────────────────────────────────────── q› status:open sort:due 12 tasks ▌ edx71 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow · ◆ claude ykwkc [ ] Collect last quarter's metrics due tue · ¶ Q4 Planning pa3e6 [ ] Review draft with the team due fri · ¶ Q4 Planning ny82x [ ] Call dentist to reschedule #health due fri · !high fk5x2 [ ] Draft Q4 OKRs mon · due Oct 10 (in 7d) · !high · ¶ Q4 Planning qn6jb [ ] Schedule annual physical due Oct 13 (in 10d) · ¶ Health xtews [ ] Water plants today · ↻ 3d · ¶ Home 23dea [ ] Replace furnace filter today · ↻ 3mo! · ¶ Home 1x3db [ ] Pay rent tue 09:00 ◎ · ↻ monthly xhb6p [ ] Refill prescription Oct 15 (in 12d) · !med · ↻ monthly · ¶ Health 6cvvf [ ] Fix leaky kitchen faucet !low · ¶ Home zb4ha [ ] Read The Pragmatic Programmer, ch. 1-3 ¶ Reading List saved 1 open 2 this week 3 waiting 4 by claude 5 ready f then 1-5 tasks · status:open sort:due ● live f filter , sort x done space leader ? keys thc 0.9.65
[•] personal Today Inbox 2 Tasks Pages Journal Search Log 1 Sat Oct 3 · 10:41 ─────────────────────────────────━━━━━━━──────────────────────────────────────────────────────────── q› status:open sort:due 12 tasks ▌ edx71 [ ] Summarize unread newsletters into [[Reading List]] due tomorrow · ◆ claude ykwkc [ ] Collect last quarter's metrics due tue · ¶ Q4 Planning pa3e6 [ ] Review draft with the team due fri · ¶ Q4 Planning ny82x [ ] Call dentist to reschedule #health due fri · !high fk5x2 [ ] Draft Q4 OKRs mon · due Oct 10 (in 7d) · !high · ¶ Q4 Planning qn6jb [ ] Schedule annual physical due Oct 13 (in 10d) · ¶ Health xtews [ ] Water plants today · ↻ 3d · ¶ Home 23dea [ ] Replace furnace filter today · ↻ 3mo! · ¶ Home 1x3db [ ] Pay rent tue 09:00 ◎ · ↻ monthly xhb6p [ ] Refill prescription Oct 15 (in 12d) · !med · ↻ monthly · ¶ Health 6cvvf [ ] Fix leaky kitchen faucet !low · ¶ Home zb4ha [ ] Read The Pragmatic Programmer, ch. 1-3 ¶ Reading List saved 1 open 2 this week 3 waiting 4 by claude 5 ready f then 1-5 tasks · status:open sort:due ● live f filter , sort x done space leader ? keys thc 0.9.65
Writing
Plain text that becomes notes. Just type; thc keeps the structure.
Capture
One line from any shell. Dates, tags and priority parsed on the way in.
Views
Seven views, one key each. Today is a query you can rewrite.
Queries
A small query language for everything. Ask it what it means, or how it was.
Vaults
One vault per project. Each with its colour, its settings, its agents.
Agents
The CLI is the API. Every write signed, every change reviewable.
History
An append-only log. Undo anything, rewind a note, ask how it was.
Sync
Any synced folder works. Every device writes its own file, so nothing collides.
Live
A background service keeps every window current, without touching your cursor.
Reminders and repeats
Alerts at a time or before a deadline. Repeats that count from the date or from done.
Screenshots and files
Paste a screenshot into a note. See it inline. Agents can read it.
The mouse
Everything you can see, you can click. The keys still do the same.
Keys
One table behind every key, hint and help screen. Press Space and read.
Issues
A task that opens as a document. A board in sections. Claims agents can't race.
Themes
Ember, or redacted and newsprint; dark or light, in truecolor, 256 or 16 colours. ASCII if you like.
Install and update
One line to install. Verified updates from the terminal, in place.
A developer's day log
Write the day as it happens. Tasks fall out of the prose and turn up in Today.
An agent's task board
A project vault with an issues board. Agents claim, work and finish; you review.
Project vaults for a team
A vault per project in a shared folder. Each person sees every vault in their own Today.
Research notes with links
Pages that link to each other, backlinks for free, and queries over everything.
Capture from scripts and cron
Your scripts write to the same notebook you do, safely, and you see it in the Log.
A bug tracker with screenshots
File a bug with a screenshot in it, see the image in the terminal, let an agent read it.
Take control.
One line to install, then thc j and start typing. The first ten minutes walk you through the rest.
$curl -fsSL https://github.com/brancusi/thought-control-releases/releases/latest/download/install.sh | shmacOS. Puts thc, the Thought Control command, on your PATH, makes your first vault, starts the background daemon and sets up agent skills. Every download is checked before it's installed.