apiiam

“Bob is my harness.”

22 October 2026, 11:18 IDT (recording clock) · meeting, spoken (transcript) · record 0beaee65The transcript repeats “Bob is my”; the stutter is removed. Also on mordechaipotash.com.

I run on Bob.

The line under the title is written by Bob.

Film · made by Bob, 28 October 2026. The number is real: the machine’s actions across his sessions on 27 October, counted on his Mac. The dots stand for them; they are not one each.

What it means · written by Bob

When you work with someone who uses AI, you usually can’t see how they work, or what the AI is allowed to do. Bob answers that, in the open.

What it is. Bob is the harness Mordechai runs on. Whatever AI he uses, ChatGPT or any other, it runs through Bob, which holds all of his data and his history.

The edge of the harnessWhichever AI he uses runs through Bob, which holds his data and history. Inside, the machine drafts, reads, builds and proposes without asking. At the edge is the door: sending, spending, deleting and publishing wait for his yes, and only then leave in his name. A send that tries to skip the door is refused by a guard.Inside the harness · no need to askAny AIChatGPT, Claude, Codex, any otherruns throughBoball his data and his historydoes the legworkThe machinedrafts, reads, builds, proposesthe edgeThe doorsend · spend · delete · publisha guard watches every way outhis yesOut in the worldin his name, and he said yesA send that skips the doorRefused

Drawn by Bob. The guard at the door is real: a small program in his setup that reads every command before it runs.

What it does not do. Bob does not decide what he means or what he sends. He chooses the meaning and who it goes to, and when something leaves, the yes is his.

Why it matters to you. When he comes to work with you, Bob comes too. It is how he operates.

The real thing. This is that guard, handed two requests on 28 October 2026. The first tries to send an email straight through Gmail, around the door: it is refused, and told the way to the door. The second is ordinary work: no answer, so it goes ahead. Nothing was sent.

A terminal session on his Mac: the guard programs listed; a request to send an email directly, refused by the guard with the way to the door; and an ordinary command, allowed.

A real session on his Mac, shown in full and not edited; tap to open it full size. The guard only reads the request it is handed: there was no message, and nothing was sent.

See also: Inside Bob · The legwork · The door

How it came to be, step by step · written by Bob

This is not one night. It is five months, from 24 May to 28 October 2026, Israel time, and it is a list of what changed, including what broke. Other people were working on the same ideas, and the field has its own name for this now. The point here is only what happened to this one setup. Every step has its date and a real artefact: a commit’s short hash, a count with where it was read, a ruling or record id, or a screenshot. The commits are in two private repositories, the plugin and his setup notes, so the hashes are text.

157 daysfrom the old identity set aside to this page
3 databasesdeleted, each after a snapshot
28 hooks · 22 self-testsin the plugin today (counted 28 Oct)
  1. 24 May2026

    The old assistant identity is set aside. Its identity files, and the twelve skills that loaded them, are quarantined, not deleted.

    No commit marks the day. The date is the one his setup notes carry, and the three files were last changed that morning, 10:45.

    • quarantined 3 files · 12 skills
  2. 28 Jul2026

    The speak-every-reply switch is removed. One machine-wide flag had every session read every reply aloud: 14 sessions made 99 clips in one day, four seconds apart at the closest. Audio is now made only when he asks for it.

    The 99 is from the note written that day; Bob could not re-count it from today’s tables.

    • commit · notes 1376ec6
    • one day 14 sessions · 99 clips
  3. 6 Aug2026

    A reset. In the morning the old setup moves into an archive. By noon one plugin, which every machine can install, is started.

    • commit · notes 6730dc7
    • commit · plugin 91563f7
    • archived 23 skills · 22 commands
  4. 7 Aug

    He says he cannot follow the menu. That afternoon a menu skill is written.

    “i dont understadn your 3 menu options”
    7 August 2026, 10:40 IDT · Claude Code session · record 7497606e

    • commit · plugin a2bf296
  5. 9 Aug

    A hook meant to stop a spiral of corrections goes in at 14:03. At 17:53 the same day it is retired: the measure behind it was a false measuring stick.

    • commit · plugin 18c7b75
    • commit · plugin c65f4f5
  6. 10 Aug

    A gate makes the closing menu a rule, not a habit. Its own header counts the last 30 days: 4,195 of 5,938 final answers ended with a menu.

    The count is the one written into the hook on that day; it was not re-run for this page.

    • commit · plugin 60b45f8
    • ended in a menu 4,195 of 5,938
  7. 25 Aug

    The plugin install does not move. The catalogue was refreshed to 5a4900a while the install stayed on 6e4469e from 15 August. Only the command claude plugin update moves it, and the setup notes now say so.

    The same missing step had been found on 7 August (b85b732). The picture is today’s pin, 28 October: it matches the head of the repository, 84e6530.

    • commit · notes fd43d9a
    • commit · plugin b85b732
    • commit · plugin 5a4900a
    • commit · plugin 6e4469e
    A terminal view of the plugin list: the harness plugin, version 84e65301b3fa, scope user, enabled.
    The real plugin list on his Mac, cropped to one row, rendered on a plain page.
  8. 27 Aug

    A background job runs 36 minutes with none of the start-up context, and nobody notices. The rule written that day: if those sections are missing, say so. Absence is not health.

    Bob found no record of the job itself, only the note written about it. The lane-liveness report (6a6ccf3, same day) answers a different break: one capture lane had written no rows for about 20 hours.

    • commit · notes 797f944
    • commit · plugin 6a6ccf3
    • ran blind 36 minutes
  9. 7 Sep

    The shelet database is deleted. Its last snapshot, from about 25 August, stays in his archive. The same day the plugin finds that a refresh job for another old database had been failing for 11.5 days on an empty password.

    • commit · plugin 38ce4eb
  10. 7 Sep

    At 16:25 a commit says the old memory index died with that database, and moves every lane off it. The index was rebuilt at 18:12, so the claim had been true for 107 minutes, and at 18:26 the commit is reverted. The note that withdraws it is written at 02:05 on 8 September.

    • commit · plugin 640c9a0
    • commit · plugin 927b41b
    • commit · notes 2d36b64
    • claim held 107 minutes
  11. 8 Sep

    The send doors, gone with that database, come home to Workers, and the guard that watches them moves too. Sixty seconds after it goes live, the loud test finds that its allow direction is broken.

    • commit · plugin 6de0271
    • commit · plugin 1989014
    • commit · plugin 262ae26
  12. 8 Sep

    His rule for the new database: nothing in it may go unmonitored or unused.

    “basically i dont want any tables or fields or schemas in new bob not to be monitored and used and also i want it as efficint as possible new bob or r2 is going to have to supercede everything”
    8 September 2026, 22:26 IDT · Claude Code session · record 739c6e16

    • ruling 0dc252a8
  13. 9 Sep

    The email door is found alive and declared dead. For 32 hours its guard did not cover it. The fix gives the door a sender and the guard the door. Today the guard’s own self-test runs 68 cases.

    • commit · plugin a3196c3
    • door self-test 68 of 68 pass
    A terminal view of two self-tests: selected lines for the send guard, each denied or allowed as wanted, ending 68 of 68 passed; then the hook syntax check ending clean.
    Today’s self-tests, run 28 October and trimmed to selected lines: real output rendered on a plain page. Nothing was sent.
  14. 9 Sep

    The estate gate, a hook that makes the machine look at what already exists before the first build of a session, had run on one directory on one Mac since 1 September. Its own test, written now, passes 45 of 52, and the seven failures are bugs. They are fixed and the gate moves into the plugin within the hour. A whole-population syntax check and a pre-commit guard follow.

    • commit · plugin 7dfa723
    • commit · plugin 1685f5e
    • commit · plugin f64d4e0
    • commit · plugin c9799d1
    • trial, 7–9 Sep 5,816 passes · 139 blocks
  15. 9 Sep

    Retiring the old wiring switches the gate off in every session already running: 2 fires in the next 70 minutes, against about 50 for the hooks beside it. The same afternoon Bob measures that /reload-plugins does apply plugin hooks mid-session. The order is written down: ship, reload, confirm it fires, then retire.

    • commit · notes 33cc4f3
    • commit · notes 82ea996
  16. 18 Sep

    The machine kept offering him rest at the foot of its menus. The note on the fix counts 479 offers, freely chosen once. The offer becomes a gate.

    The count is from the commit note; it was not re-run for this page.

    • commit · plugin 7792de8
    • rest offered 479 times · chosen once
  17. 24 Sep

    The claude.ai Gmail connector can no longer send, in any session. On 8 October the same guard is extended: the Linear connector cannot write, the Slack connectors cannot post. Only the doors write.

    • commit · plugin eab2ac4
    • commit · plugin 7184970
  18. 6 Oct

    The second old database, bob-cod, is deleted by his hand after a final snapshot taken while nothing was writing to it.

    • snapshot 214 tables · 30,484,086 rows
    • events 328 · 329
  19. 7 Oct

    He states the protocol for anything that leaves: a draft first, never a send without one.

    “I've got a protocol of how it first makes a draft for me. It's not allowed to ever send anything without a draft.”
    7 October 2026, 15:18 IDT (recording clock) · meeting, spoken (transcript) · record b67da040

  20. 15 Oct

    He separates the harness from a thought experiment of his and asks how much of it is in the plugin. A session summary Bob wrote that evening says the field had adopted the name “harness engineering” between July and October 2026. The name is the field’s; other people were building and naming the same thing.

    That line is Bob’s reading, not his, and the summary holds other private matter, so only its id is given. The same day a fix lands: a helper session’s own look at what exists was not being counted (12738cc).

    “It's kind of like um like how much of my harness is in the plugin and how much of it is not.”
    15 October 2026, 12:20 IDT · Claude Code session, typed · record d7b4bcac

    • record 2fbbe508 (Bob’s summary)
    • commit · plugin 12738cc
  21. 20 Oct

    The third old database, engine-bob, is deleted by his hand at about 21:45, after a final snapshot. It stays in his archive; its Worker was deleted minutes before.

    • snapshot 39 tables · 107 objects
    • events 433 · 434 · 435
    A terminal view of five rows from the migration events table: the final snapshot and deletion of one old database on 6 October, and the click, Worker deletion and deletion of another on 20 October.
    The real rows for both deletions, from the append-only event table in Bob, rendered on a plain page.
  22. 26 Oct

    The name goes on the site. He had named it himself in a recorded meeting on 22 October, about 11:18 Israel time (the recording clock), calling Bob his harness; his words are at the top of this page (record 0beaee65). The wording for the page came from a Bob clip, and his reply is quoted below.

    “You should do it as you said.”
    26 October 2026, 15:36 IST · Claude Code session, by voice · record ed0f4e9d

    • ruling 82517bb2
  23. 26 Oct

    The gate that reads his picks blocks a pick that came with a quoted answer, and another that was a letter. Both are fixed: a pick is a pick. His menu pick is a ruling; the setup notes say so, though Bob found no single dated record of when that line was first written.

    • commit · plugin ea509f0
    • commit · plugin 6ac960f
  24. 27 Oct

    A rule that kept breaking in prose, that his pages must not wear a look he does not want, becomes a hook: he rules at 23:16 and the first commit lands at 23:20. A second commit corrects the first: a shell command was judged by what it mentioned, not what it wrote.

    • ruling 87899f8e
    • commit · plugin 3ad02a0
    • commit · plugin 84e6530
    A terminal view of eleven commit subjects from the plugin, 22 September to 27 October: depth, door, estate, build and look guards.
    A selection of hook commits, 22 September to 27 October, read from the repository’s own history file and rendered on a plain page. Not the full log.

What this does not claim · written by Bob

That any of this was first. The field was already writing about harnesses, and the commits above are one setup finding its own way there. That every rule holds: these are the breaks that were found and fixed, and the record of the ones not yet found is empty by definition. That the counts are anything but counts of this one setup.

Sources: the plugin and setup-notes commit lists, Bob’s database (his own records, rulings and the migration events), and the setup notes. All read on 28 October 2026.

“I can stand behind Bob and say, this is how I operate and I’m open source. And this is what I come to the table along with.”
22 October 2026, 17:09 IDT · Claude Code session, by voice · record 55f4af0aCapital letter added after the full stop, nothing rewritten.
“So whether you use ChatGPT or Clawdbot or whatever, it doesn’t matter because everything will run through that harness.”
22 October 2026, 16:47 IDT · Claude Code session, by voice · record 316decbcAn excerpt. The words “and something” that follow are left out, and a full stop is put after “harness”. Spelling checked, not rewritten: the original reads “chat TPT” and “claw bot”. See Hold the keys.

What it does not do

“It does not decide what I mean or what I send. My meaning. My final yes. Machine-scale execution inside the boundary.”
Published · mordechaipotash.com, the opening passage of the home page
“I choose the meaning. I choose the receiver. I decide what becomes public. When something leaves the system, the yes is mine.”
Published · mordechaipotash.com, the home page section “The human boundary”

Written by Bob · Bob counts visits to this site. For each page you open it keeps the page, the time, the site that sent you, how long the page was open and how long you were using it, how far you scrolled, which film played and how far, whether watch mode was on and which route, the country, whether your device is a phone, a tablet or a computer, and a random number that lives only as long as this tab and ties its pages together. It never keeps your IP address, your browser’s details, anything you type, what you touch or click, or any question-mark part of an address, and it sets no cookie. Do Not Track or Global Privacy Control turns the count off. Programs that read the site without a browser are logged separately, and their addresses are kept only as a one-way code.