CLI for Your Notes in The Archive – Automated Zettelkasten (Usage) for Programmers

Recently on a meetup, I was asked whether the age of manual note-taking and Zettelkasten is over now that LLM’s are everywhere and can produce so much text in such a short time that humans can’t outcompete them anymore.

Outcompeting a computer on producing text was never the goal, of course.

A Zettelkasten is a tool for thought. You use it to develop ideas and work on hard problems for long periods of time. One outcome of using a Zettelkasten is, or can be, to write more articles or books. In other words, “producing text” – although that reduction loses all nuance and meaning, and on that account, an LLM would indeed be superior.

Manual note-taking and curation of interests, ideas, of developing new material to work with – all that is still part of my personal daily routine even though on some days I hardly type a line of code by hand. I did type a lot of code by hand in the past, though. And instead of copy-pasting code snippets and looking for past learnings in my note archive (aka ‘vault’ for the kids :)) I can ask a clanker to do the research for me.

An LLM is great at augmented retrieval and searching for synonyms. And at retrieval-augmented generation (RAG). So I basically use a home-made approach to that.

ta: a CLI to Search in a Zettelkasten

My Zettelkasten is the source of truth; my personal knowledge database, scratchpad, my workshop containing all my tools and projects.

An LLM can be taught to use that efficiently (grep and find are nice and all, but traveling the note graph can be expressed more cleanly and with fewer tokens wasted) and for that goal I specified and then had “made to order” a custom CLI for my needs.

I’m using my own note-taking app, The Archive, to do all Zettelkasten work. Most links between notes are identifiers-only, like [[202604201238]], instead of full filename or title. Hashtags are used, too, and full-text search is the main interaction with everything, including link navigaiton. Replicating a read-only command-line interface to that note-archive wasn’t hard.

Check out the Swift CLI called ta (for “The Archive”) on Codeberg.

You can download binary releases there or from the GitHub mirror.

I shared a couple of experiments on our forums if you’re curious and want to follow along.

In short, the SKILL.md approach for searching and traversing my Zettelkasten produced interesting results with GPT-5.4 high thinking using the pi agent harness; Claude was less willing to go into details on its own with the same prompt.

If you’re using The Archive, you might enjoy the CLI as well: the point is that it’s easy enough to teach the agent harnesses how to find stuff from your notes.

Recent months have seen a rekindled interests in personal wikis in the LLM user space thanks to Andrej Karpathy sharing how a plain text wiki is good enough and you don’t need RAG and vector databases, just progressive summarization.

Well, with a Zettelkasten you already have all of this, but curated by a human with taste and intent. So that’s something the automatic wiki ingestion tools can’t offer.

And everyone thought that I’m overselling the value of a Zettelkasten, ha!