Keep writing notes. Build more from them.
blk/txt is a notes app that turns the dated notes and logs you already keep into searchable blocks, which you can also count and open. The same entries can rebuild a ticket's history or back up a summary with what you wrote. A week opens into its days and a day into its notes, and every count along the way opens onto the entries it was taken from. Importing your files leaves the originals as they were.
Dated work notes held a timeline, and I had not read it yet.
I wrote down what happened at work one dated entry at a time, with the ticket reference in the line. I wanted to search them. Then I found the same entries could rebuild a ticket's history, show an issue coming back, and back up a project summary with the entries behind it.
A ticket's history comes back in date order.
Every entry that names a ticket is listed with the sentence around it, so the timeline is already in what you wrote.
An issue that keeps returning shows its dates.
Counting how often a ticket or a phrase appears is a query over your entries, and the count opens onto the entries it counted.
A summary can carry the entries behind it.
You pick the entries and export them as one file that opens without an account, with the figures and their sources beside them.
Your dated files become blocks you can search.
You keep writing dated plain text, and blk/txt splits it into blocks and picks out the identifiers in them. Access logs, syslog, and JSON lines can be imported beside your notes.
- 01 · source
Your files stay the source.
Dated blocks in any
.txt,.md, or.logfile are read where they are, and importing them leaves the files unchanged. - 02 · parse
Rules you can read find the entities.
Tickets, tags, mentions, and metrics are picked out by rules you can change. Before you save a change, a preview shows which matches would change and says when the scan was cut short.
- 03 · index
One index covers search and imports.
You can search everything you imported and see what each import added or skipped. The search index can be rebuilt from your source text.
- 04 · read
The same account on the web and your phone.
Browse your notes in the web app and the mobile app, and connect your own tools through the JSON API.
You teach each type what counts and what does not.
blk/txt recognises date headers and common identifiers such as ticket IDs, tags, mentions, environments, and web links. You can add your own types, mark a value as a false match, and preview the effect before you save. Lines you keep starting with the same word and a colon, in at least five blocks, are offered back with examples and counterexamples, and nothing is added unless you press add.
Your taught examples are checked against every later change, and a change that would break one needs your confirmation. A note that only says "the thing broke again" can still be found by its words, but it gives blk/txt no identifier to connect it to the same problem elsewhere.
Start from the incidents research support journal or agents preset and adjust its rules. You can export what you taught as a file with no note content in it, and import someone else's after a preview.
A group of notes opens into the smaller groups inside it.
You can go from a count to the sentences behind it by opening blocks instead of writing a search. Notes that agents post from other machines land in the same account and open the same way. A quiet stretch also says how many of its days had no writing at all, so a gap in a subject is told apart from a gap in your notebook, and agent notes and logs do not count as writing.
Notes without a recorded time keep their date.
blk/txt never guesses an hour, so a view grouped by time of day lists them under "any time".
A ticket opens into the days it was mentioned.
INC-9021 opens into each day it appears, then into the notes from that day, and the counts along the way open onto their blocks.
Each agent writes under its own token.
Agents on different machines post under tokens you can revoke. blk/txt groups their notes by agent and by day, and shows what two agents both touched on the same day.
A digest shows what the agents posted.
You can open a daily or weekly digest in the app, and a connected agent can check for open loose ends before it starts. A summary an agent supplies carries its name and stays out of every count.
Live values and open loose ends come from the notes you write.
An instrument shows a live value inside a note, and the loose ends view lists work that was opened but never closed. You can also read hourly log summaries and hand selected blocks to someone else as one file.
A statement in braces shows its current value.
Write {{ count ticket:INC-9021 in 30d }} or {{ latest p95 }} inside a note and it shows the current value, which opens onto the blocks behind it. The ticket type and the p95 metric have to be ones you track. Three forms return a set: {{ timeline ticket:INC-9021 }} opens into the days a ticket came up with the days you wrote nothing marked apart, and {{ open ticket:* }} lists tickets with an open loose end, up to 20 subjects. {{ rows #release show version, shipped }} builds a table from the lines you already start with version: or shipped:, and a block without one reads not written.
Work with no closing note stays on a list.
A loose end starts with a phrase such as TODO or temporary next to a subject you track. It closes when a note dated later names that subject with a phrase such as done or resolved, or when you dismiss it. You can edit both lists of phrases, and a fix described in other words stays on the list. The note has to name a subject, the page says which rule it applied and how many recent blocks it read, and each item quotes the block that opened it.
Logs are summarised by the hour.
Each hour opens onto its raw lines while they are kept, and the summaries stay after the lines are removed. A source with no lines in the window you choose shows the date of its latest line.
The numbers
| Hour | Log lines |
|---|---|
| 08:00 | 120 |
| 09:00 | 180 |
| 10:00 | 320 |
| 11:00 | 412 |
| 12:00 | 250 |
| 13:00 | 140 |
| 14:00 | 90 |
| 15:00 | 200 |
| 16:00 | 280 |
| 17:00 | 160 |
| 18:00 | 100 |
| 19:00 | 60 |
| Total | 2312 |
Selected blocks can be shared as one offline file.
Choose unlocked blocks and download one file that anyone can read without an account. Instrument values are frozen when you build it, and their links work when every supporting block is included.
A letter in the app reports what changed in your notes.
Each period's letter names what went quiet, what appeared for the first time, which numbers moved, and which loose ends opened, with a link from each item to the notes behind it.
A quiet subject is reported once.
By default a subject counts as quiet after 30 days without a mention. The letter names it in the period it first crosses that line and leaves it out while it stays quiet.
Saved letters keep their figures.
The archive lists the newest period first and keeps the figures saved for each one. Locking a source block removes its material from saved letters.
Listing things together makes no causal claim.
Subjects in one letter share a window, and the letter never says one thing caused another.
Follow a subject from one note to every note it shares.
Follow a tracked subject or a date to its related notes, or open a metric's readings. The value history shows the latest recorded reading and the changes before it. A line that starts with addresses:, reverses:, follows: or led to: and names a ticket records that relation as you wrote it, shown apart from notes that only mention the same ticket, which are labelled as not a cause. The file format page has the rule. In the app, every figure opens the blocks it counts and carries a caption, a table of its numbers, CSV and SVG export, and print and e-ink styles.
How many blocks you recorded each day.
- no blocks
- 1 block
- 2 to 3 blocks
- 4 to 6 blocks
- 7 or more blocks
The numbers, by week
| Week of | Blocks | Busiest day |
|---|---|---|
| Mon 30 Mar 2026 | 21 | Fri 3 Apr 2026, 8 |
| Mon 6 Apr 2026 | 21 | Mon 6 Apr 2026, 8 |
| Mon 13 Apr 2026 | 9 | Thu 16 Apr 2026, 4 |
| Mon 20 Apr 2026 | 17 | Wed 22 Apr 2026, 6 |
| Mon 27 Apr 2026 | 20 | Fri 1 May 2026, 6 |
| Mon 4 May 2026 | 20 | Fri 8 May 2026, 8 |
| Mon 11 May 2026 | 12 | Tue 12 May 2026, 6 |
| Mon 18 May 2026 | 15 | Wed 20 May 2026, 5 |
| Mon 25 May 2026 | 12 | Mon 25 May 2026, 4 |
| Mon 1 Jun 2026 | 16 | Mon 1 Jun 2026, 4 |
| Mon 8 Jun 2026 | 13 | Wed 10 Jun 2026, 5 |
| Mon 15 Jun 2026 | 23 | Tue 16 Jun 2026, 8 |
| Mon 22 Jun 2026 | 29 | Mon 22 Jun 2026, 8 |
| Mon 29 Jun 2026 | 11 | Fri 3 Jul 2026, 6 |
| Mon 6 Jul 2026 | 18 | Fri 10 Jul 2026, 8 |
| Mon 13 Jul 2026 | 12 | Mon 13 Jul 2026, 4 |
| Mon 20 Jul 2026 | 23 | Fri 24 Jul 2026, 8 |
| Mon 27 Jul 2026 | 20 | Mon 27 Jul 2026, 8 |
| Mon 3 Aug 2026 | 12 | Tue 4 Aug 2026, 4 |
| Mon 10 Aug 2026 | 22 | Tue 11 Aug 2026, 8 |
| Mon 17 Aug 2026 | 20 | Tue 18 Aug 2026, 8 |
| Mon 24 Aug 2026 | 13 | Tue 25 Aug 2026, 6 |
| Mon 31 Aug 2026 | 18 | Fri 4 Sep 2026, 5 |
| Mon 7 Sep 2026 | 12 | Mon 7 Sep 2026, 4 |
| Mon 14 Sep 2026 | 15 | Tue 15 Sep 2026, 8 |
| Mon 21 Sep 2026 | 14 | Tue 22 Sep 2026, 4 |
| Total | 438 |
When TICK-1842 appears across three weeks.
- a day with a mention
- nothing written
- written, no mention
The numbers
| Day | Blocks |
|---|---|
| Thu 2 Jul 2026 | 2 |
| Fri 3 Jul 2026 | 1 |
| Tue 7 Jul 2026 | 1 |
| Sat 11 Jul 2026 | 2 |
| Thu 16 Jul 2026 | 1 |
| Sun 19 Jul 2026 | 3 |
| Total | 10 |
The latest recorded value and its recent changes.
The numbers
| Day | Readings |
|---|---|
| 310 ms on Wed 2 Sep 2026 | 1 |
| 340 ms on Tue 8 Sep 2026 | 1 |
| 420 ms on Tue 15 Sep 2026 | 1 |
| 480 ms on Tue 22 Sep 2026 | 1 |
| Total | 4 |
You can leave at any time with everything you wrote.
Your text is the source of truth.
You can export your notes as JSON, CSV, or Markdown at any time, including after your plan ends, and a Markdown export imports back in as dated notes. Open your vault first if you want locked text included. A Markdown export also carries your manual links and the labels and dismissals you confirmed, keyed by date and text code, and importing re-attaches them only to blocks that import added and lists the rest as unmatched.
Your tools can write to it.
Send notes from another machine with an account token, through the JSON API. They go through your account's rules and join its blocks.
Each account is private.
Your notes are kept apart from every other account's notes. The trial needs no login and expires after 48 hours without activity.
Every answer is a query you can run again.
blk/txt does not use a language model to read or analyse your notes. Every answer the app gives is a query you can run again yourself, and the optional analysis that suggests key terms and similar notes runs where your notes already live and never changes the source text.
Paste some notes and open the blocks they make.
Paste text or drop a file to see its blocks, the identifiers it recognised, and any metrics you configured. You can also open a set of sample notes as a letter or as a view of what changed.