thcThought Control

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 | sh

macOS. 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 tomorrow
added 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 review
Review · 1 change by claude · oldest first
1 D8S2FX ◆ claude · Oct 3 10:42 · this device
+ hew72 [ ] Summarize the reading list
thc 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 
thc j: today's journal. A paragraph is a note; [ ] makes a task; due:tue, !high and #lisbon are read as you type.
01 why
01 · writing

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.

02 · agents

Agents as colleagues

--json everywhere, stable exit codes, idempotent keys, guarded writes. Every agent change is signed and waits in a review lane.

03 · the record

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.

04 · yours

Yours, locally

No account and no server. A vault is a folder: sync it with anything. Conflicts keep both versions, and you choose.

02 the loop
You and your agents both write to one append-only log. Replay turns it into what every screen shows. Other devices sync the same folder.youthc j · thc add◆ your agents--json · --keythe logappend-onlyone line per changenothing overwrittenToday, Tasks…replayed, liveyour other Macany folder syncan agent's change waitsfor your accept
03 agents

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=todo claims a task once; the second agent gets exit 4.
  • A team on one board. thc team up starts one agent per role; thc next hands out work in your order.
  • Taught once. thc setup claude --user installs a skill generated from the binary.

agents, in detail →

filed by agent
 [•] 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 
The review lane: what an agent changed, waiting for a or u.
for review
04 contexts

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.

views and contexts →

05 a look around
06 everything it does

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.

every feature, in detail →

07 how people use it

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.

08 start

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 | sh

macOS. 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.