Malcolm Ocean’s creations / SlateWiper

App icon: a hand wiping a chalkboard clean with an eraser

SlateWiper

“A piece of software described in sufficient detail is now worth that piece of software.”

Malcolm to Claude:

I have a system I want to make, that keeps my computer state from becoming a stale TODO list

--

I came to a realization last night, maybe just while I was laying in bed headed to sleep, that I have been taking a kind of stance in general in relation to my life that is less aliveness first and more completionist first, and that most of the good things in my life come from being more aliveness first. And this was part of the whole point of Complice/Intend. And it’s weird because finishing things is also critical. Shipping things is critical, but I want to say something like: the right way to make shipping things happen more is you want to reduce the friction to shipping. So for instance, having the creations.malcolmocean.com site reduces the amount of thinking that I have to do in order to publish something that I created at all, and fucking great. But there are dozens of things I could publish there. And I noticed that there was an inclination to kind of go back and go through all of my various projects and be like, which of these should I publish? And like, that’s a thing that I could get inspired to do at some point. But there’s also a stance that just waits until a given project feels alive again, which is like what happened with the Jesus parameterization: I returned to that because I was excited about it again, not because I thought that it needed to be shipped for some completiony reason.

So the insight here is that this takes projects from being implicit TODOs to finish them, to all just being overhang, while I’m free in each moment again.

And there’s a question of how to do this on an operating system level. Like, part of me just legit wants to experiment with a system where every day my browser tabs and open terminal windows just all get nuked, and the session state is stored somewhere, but it is stored in a place where I can go find it. Not in a place where it’s cluttering my active state. Like I become more free to just drop things. Without even noticing I’ve dropped them.

And I think that I could actually make a system for this. That would be pretty good. Like any open task that gets nuked like this could have a little file written into the repo that it was open in.

What do I think will save me this time? (#metadharma koan)

Ultimately this is about a stance though. Being unburdened. Recognizing that if I lost all of that state I would really truly be fine.

Begin again, begin again.

Become a new homunculus.

Except ugh nondual lol.

There’s something I’m cultivating here that feels good.

Determination.

--

for now let’s not do a time of day, just a button
and ofc we should do it as a “preview” first

there’s also some good related inspo in my roam:
https://roamresearch.com/#/app/malcolmocean/page/fFqzevI7Y

--

probably this’ll be something where you want to ask me some Qs first

What came out of it: one button that archives every open terminal session and browser tab somewhere findable, then closes them all.

What a wipe leaves behind

A dated archive in ~/slate/, a note in each repo you had open, and screenshots of every window. An archive looks something like this:

- #[[slate wipe]] Oct 6, 2026, 4:41 p.m. — 6 terminals (5 agent sessions), 3 windows / 24 tabs
  - Terminals
    - claude · Refactor the parser
      - cwd: `~/dev/tidepool` · branch `main` · 4 uncommitted
      - resume: `cd ~/dev/tidepool && claude --resume 4f1c…`  (up 02:51:24, idle)
      - last you: ok, ship it once the fixtures are cleaned up
      - last it: Done. Tests pass; I left the old fixtures in place until…
    - codex · Batch transcription · KEPT: working
      - resume: `cd ~/dev/podcast && codex resume 019a…`  (up 11-16:35:55)
  - Chrome
    - [How to Do Great Work](…) · read 40%
    - [Issue #212: flaky upload test](…) · KEPT (unsaved state)
    - …

Next time you cd into one of those repos, your shell says a session was dropped there, and unwipe brings it back. slate find <text> searches every archive. Optionally it also lands on today’s page in Roam, or wherever your agent wires it to.

Two buttons, and a preview

Plain slatewipe only previews. Git working trees are never touched in any mode. Trigger it from the command line, Spotlight, a hotkey, or a schedule. There’s also a button for your phone: a small server and an Android app are included and working, with optional Cloudflare Tunnel setup so it works away from home.

What it deliberately isn’t

There’s no review queue, no snooze, no “process your archive” flow. Making it easier to finish things would defeat the point, which is making it easy to drop them.

Getting it

This is one person’s working setup, not a polished product, and most people’s setups differ: different terminal, different browser, a different place they’d want the archive to go. So instead of an installer that assumes Malcolm’s machine, the repo ships a prompt. SETUP.md tells your coding agent what the tool is for, the handful of macOS details that took real time to figure out, and how to interview you about your setup. Then it adapts the code to fit.

git clone https://github.com/malcolmocean/slatewiper.git
cd slatewiper
claude "follow SETUP.md"

Any coding agent works. Your own settings live in a mine/ folder that the repo ignores, so you can pull updates, and you can make mine/ its own private repo.