2025.12.21.

Thinking in Threads with Bike Outliner

I’ve been looking for a tool that supports threaded thinking. Distill nails the concept: you think out loud into threads, and AI agents respond inline without breaking the flow. But it’s pricey, hosted, and not native. I want local files so I can use git.

So I built something similar with Bike.

The Threading Idea

The core concept is append-only threading. New thoughts go at the end. No reorganizing, no inserting between existing ideas. The thread keeps expanding.

This preserves how ideas actually develop. When I capture thoughts in a traditional outline, I’m constantly deciding where things go. That decision-making interrupts the thinking. With append-only, there’s no decision. New thought? Add it at the end. Want to go deeper? Indent.

I’ve written about this before in Reviewing append-only workflows. The pattern keeps showing up: Mastodon threads, chat-based note apps like Gibberish, and now Bike.

Why Bike

Bike is a macOS outliner (think Workflowy, but native and scriptable). What makes it work for threading:

  • Indentation for depth – Drilling into an idea by adding child rows
  • Sequencing – New rows extend the thread chronologically
  • Grouping – When patterns emerge, I can nest siblings under a new parent

The structure emerges from the content. I start typing, indent when going deeper, and the hierarchy forms naturally.

Adding AI Inline

Distill’s insight is that AI agents can watch threads and respond without being addressed directly. I wanted that for Bike.

So I built thread-watch. It watches my outlines for rows tagged with @question and adds responses as indented blockquotes. The workflow:

  1. Think out loud in the outline
  2. Tag uncertainties with @question
  3. Run thread-watch (keyboard shortcut)
  4. Responses appear as children of the question
  5. Keep thinking, keep appending

The responses stay in the thread. They’re part of the thinking record, not a separate conversation.

Here’s what it looks like in practice:

Reactive Prompting

The technique I use for AI responses is what I call reactive prompting. The agent isn’t addressed directly. It responds to the thought stream.

The system prompt tells Claude to write like margin notes in a book: factual, terse, no “I found that…” discovery narrative. This matters because conversational AI responses feel like interruptions. Reactive responses integrate with the thinking instead.

Connecting to the Zettelkasten

The agent has access to my Zettelkasten folder. Before answering, it searches for relevant existing knowledge and links back. I was outlining something about capture workflows, tagged it @question, and the agent found a note I’d written two years ago. The response linked back, and I restructured my outline based on what past-me had already figured out.

Bike becomes the staging area for fast thinking. When something crystallizes, I copy it to the zettelkasten as a permanent note.

The Trade-Off

Append-only limits restructuring. If the structure is wrong, I can add cross-references and synthesis rows, but I can’t reorganize without losing the thinking record.

Tagging @question and running the tool is still an interruption. It’s smaller than switching to a chat window, but not invisible.

Why This Works

Standard outlining is about organization. Threading is about capture. I’m not building a perfect structure. I’m externalizing thinking fast enough that I don’t lose it, and the AI assists inline when I need context.

The structure emerges. The thread keeps expanding.

2022.12.26.

Tweaking workflows

  • I constantly tweak my workflows this time of the year. I usually provide tools for others—that’s what I do for a living—but I also have to keep my knives sharp.

  • This year I’m tweaking two things.

  • Take better notes while watching a video.

  • Moving my Zettelkasten over to Bike.

    • I like to think about my Zettelkasten being a large outline. Keeping it inside Bike could be beneficial.

      • I’m trying to mimic the analog Zettelkasten (or Antinet).

        • I won’t use an analog one since I like the digital one’s benefits better, but I also want ideas from the analog one.

        • I’m a programmer and I use my Zettelkasten to understand coding concepts. I have some code snippets stored in SnippetsLab, so it’s easier to link to those from my Zettelkasten outline than keeping them on paper.

      • I can use the classical Luhmann IDs to add an ID each note.

      • I can nest notes under each other.

        • I can easily link notes together thanks to the Bike and Hook integration.

    • Disadvantages

      • I don’t have backlinks, but I’m not sure I need that inside a Zettelkasten.

2022.12.23.

Blogging with Bike

  • I had this short post from a couple of years ago, where Dave Winer showed how he could blog from an outliner in a video. Basically, he edits an OPML file that gets synced to his blog—the website also looks like an outline.

  • I still like this outline-based blogging approach. It is so easy to change and publish. I wanted to have this for myself too.

  • Jesse Grosjean (the guy who did TaskPaper) recently released an outliner app called Bike, which I often use. Since Bike is just using HTML behind the scenes, it occurred to me that if I feed that into a Ruby script, I could create something similar to what Dave has.

  • So, I created two scripts.

    • One is called publish_from_bike.rb, which accepts a Bike file and pushes changes to my blog.

    • The other is a simple AppleScript which starts the Ruby part, saves post permalinks into the Bike outline, and does some general housekeeping.

  • I have a small system to publish from my blogging outline. I use the following format.

    • 2022-12-23

      • 10:40

        • Posts with a timestamp are a published.

      • DRAFT

        • I can create drafts by marking them as DRAFT (or IDEA).

      • SKIP

        • I can also add notes or just bullets which will be skipped with the publishing script.

  • Here’s a video in action.

  • Plans

    • I want to have a proper toggles for these outline type posts, like Bike does.

    • It would be nice to mark them with a custom icon, like my other post formats has.

    • I may release these scripts if there is a need and they are well tested.