help

Getting started.

blk/txt reads notes you already have, then reads them back in the app. The trial needs no account. Once you are inside, the in-app help covers importing, the letter, instruments, and export.

Quickstart.

  1. Open the trial. There is nothing to fill in.
  2. Paste or drop text you already have. A date on its own line dates everything after it until the next date line, and blank lines separate blocks.
  3. Read what it found: blocks, entities, metrics, and the patterns it noticed but has no rule for yet. Open a worked example and the trial opens on the letter those notes would produce, which you read in the app. Keep the sandbox for 48 hours, or export it.

FAQ.

Do I need an account?

Not for the trial. The trial needs no login at all: paste text and read what it found, in a sandbox that clears itself after 48 hours of inactivity.

Permanent logins are open to existing accounts only for now, and each account's notes are isolated from every other account's. A version you run on your own machine is not available yet.

Where is my data stored?

In your account's index, compiled from the text you pasted, dropped, or sent through the API. The index is always derived and rebuildable, your text is the source of truth, and everything exports to JSON, CSV, or Markdown whenever you ask.

Is my data private?

Your account's notes are scoped to you only. No other account can read or write them, and no language model reads them.

What can it parse?

Markdown, notes, ticket text, and CSV or YAML-like text: anything text-shaped and roughly dated. Web server access logs (Apache or nginx), syslog, and JSON lines roll up by the hour into the same entities as your notes, and the raw lines are kept for 30 days by default. See About for how parsing and entity extraction work, or the exact rules on the file format page.

The letter.

blk/txt reads your notes back in the app without being asked. It names which subjects went quiet, which subjects appeared for the first time, which numbers moved, which loose ends opened, and which subjects carried from the week before. Saved letters stay in an archive you can open later. Every number opens onto the exact blocks behind it.

Subjects listed together share a window. The letter never says one thing caused another. A loose end appears only when a phrase you teach, such as workaround or TODO, is in the opening note, and no later note closes it.

Blocks that open, and notes from agents.

A week is a block that opens into its days, and a day opens into its notes. A ticket such as INC-9021 is a block that opens into the days it was worked on, and every count opens onto its blocks. A note without a time of day sits under "any time" rather than being placed by a guess.

Agents on different machines post what they did under their own revocable tokens, and blk/txt groups those notes per agent and per day. It lists what two agents both worked on during one day, and the app shows a daily or weekly digest of those notes. An agent can ask blk/txt what is open before it starts. blk/txt never writes a summary itself: a summary an agent writes is shown under that agent's name and never counted.

Statements, logs, and files.

You can write a live statement in a note, such as {{ count ticket:INC-9021 in 30d }}, {{ last host:vpn.internal.example }}, or {{ latest p95 }}. Each one shows its current value and opens onto the blocks behind it. p95 has to be a metric you defined, and host has to be a type you track.

A workaround, a TODO, or a note that says waiting on, with no later closing note, shows as a loose end. The note has to name a subject as well, such as a #tag, a ticket or a host, and it is listed under that subject with its opening words beside it. A later note closes it with a phrase you teach, such as done or resolved, or you dismiss it. The page says how many recent blocks it reads and how many items it shows. Loose ends only know the phrases you teach, so a fix described in other words stays on the list.

You can teach a counterexample, such as "this is not a ticket", limit a type to certain sources, and preview what a change would match across your whole history before you save it. Taught examples stay as tests a later change must pass. The latest value of a setting keeps every change, and a phrase such as try, deployed, or reverted suggests a label you confirm. Those labels, like loose ends, only know the phrases you teach.

Web server access logs (Apache or nginx), syslog, and JSON lines sit beside the notes, summarised by the hour into counts and the same entities. Each hour opens onto its raw lines. Those lines are not stored as individual notes past the retention window: the raw lines are kept for 30 days by default. A source that stops sending shows as no lines received since a date.

You can export the types, aliases, metrics, and examples you taught as a file with no note content, and import someone else's after a preview. You can also pick blocks and download one self-contained file anyone can open offline, with the interpretation those blocks need and each instrument's value frozen.

Days with nothing written.

The quiet list names subjects that used to come up and have stopped. Beside each one it says how many of the quiet days had no writing at all, so a gap in a subject is told apart from a gap in your notebook. A subject opened as a block gets the same split: runs of days with nothing written are marked apart from days you wrote about something else.

Only blocks you wrote count as writing. Agent notes and log sources do not fill a day, and a locked block still counts for its date. A day with no writing says nothing about the subject either way, and a subject block lists the first 60 gaps while its totals count every one.

Two statements that return a set.

{{ timeline ticket:INC-9 }} shows a ticket as a block that opens into the days it came up, with days you wrote nothing marked apart from days you wrote about something else. {{ open ticket:* }} lists every ticket with an open loose end, and {{ open ticket:INC-9 }} asks about one. Each listed subject opens onto its own block.

Open follows the loose end rule, so a block needs a subject and a cue phrase you teach, and a fix described in other words still reads as open. It lists at most 20 subjects at a time and says at least when its scan was cut short.

A table built from lines you already write.

{{ rows #release show version, shipped }} lists every block tagged #release, newest first, with a column for each line you start with version: or shipped:. Pick the blocks with a tag, a subject such as ticket:INC-9, every subject of a type such as ticket:*, a relation line such as reverses:* or led to:*, or has:root cause for every block with a root cause: line.

A cell shows the first such line in its block and reads not written when there is none. Each row opens its block, and the count opens exactly the blocks in the table. It takes a window the way count does, lists at most 50 blocks and says at least when there are more. A locked block shows only its date.

Patterns in your writing.

On the entity patterns page, Look for patterns reads your own notes for lines that keep starting with the same words and a colon, such as root cause:, in at least 5 different blocks. Each one shows blocks that use it and blocks that say the same words another way, so you can judge before adding it as a pattern.

Nothing is added on its own, and no note ever has to carry the line. The scan runs only when you ask, reads at most your 5,000 most recent unlocked blocks, skips agent notes and logs, checks at most 20 candidates, and leaves out one whose words often turn up without the colon or whose lines are often empty. A candidate you dismiss does not come back.