Fail-closed GO / NO-GO cards before agents touch mail, money, or outreach.
Not a harness framework. Not a product SKU. A small, forkable contract from running companies where agents already sit on real inboxes and charges.
Peer desk: gregfredabytes.com · essay: Mail is the front door · inventory: what I run
Harness builders ship shells. Operator companies live where agents already touch customers and money. The hard part is not “make the model act” — it is deciding what it is allowed to send, charge, or promise, and proving the gate held.
| Piece | What it is |
|---|---|
gate.py |
Posture → one-line GO / NO-GO card |
operator-gates CLI |
check / replay / scars |
scars/ |
Anonymized production incidents |
ANTI_PATTERNS.md |
Refuse patterns that keep agents from fighting the human |
No Relish guts. No private fleet paths.
- Not Dex-style thesis depth (
12-factor-agentsgrade) - Not wired to a live boot plane — you pass posture (flags or JSON)
- Not a mailer, billing engine, or production control plane
- Proof you run a company is what I run, not this repo alone
Requires Python ≥3.10.
git clone https://github.com/GFB2026/operator-gates.git
cd operator-gates
python -m pip install -e ".[dev]"
python -m pytest
operator-gates scars
operator-gates replay 001
operator-gates replay 002
operator-gates replay 004
operator-gates check mail_send --phrase # exits 1 — NO-GO (mirror not ok)
operator-gates check mail_send --mirror-ok --phrase # exits 0 — GO
operator-gates check other --host-pinned # exits 0 — GOOr:
python -m operator_gates replay 001
python examples/stale_mirror.py
python examples/wrong_host.pyJSON posture:
operator-gates check mail_send --json examples/posture.stale.jsonSafe lanes: docs, tests, CLI, and assistant config in .github/ plus .copilotignore. Read .github/copilot-instructions.md first. Install with python -m pip install -e ".[dev]" then python -m pytest.
Do not invent GO cards, send or charge, or wire this repo to a live boot plane.
scars/001-stale-mirror-before-send.md · essay: Mail is the front door
Good draft; stale mailbox mirror; NO-GO; sync + phrase; GO. Draft never left on a lying I/O plane.
scars/002-wrong-host-wrong-truth.md
Identical path on more than one machine; no host pin; NO-GO; pin named; GO. Near-identical trees fork companies.
scars/003-irreversible-without-held-phrase.md
Thread felt green; no exact phrase in this turn; NO-GO. Vibes don’t authorize send/money. Compaction is how irreversible actions sneak out.
scars/004-capitulation-after-disagreement.md · essay: Capitulation after disagreement
Operator scolds; agent agrees, locks a rule, stops. NO-GO until spine revised and next artifact ships. Disagreement must not be taxed.
operator-gates replay 004Every mutator on send / money / outreach emits exactly one card first:
ARMED-CHECK: GO | path=mail_send | note=ops reply
ARMED-CHECK: NO-GO | path=mail_send | reason=mirror not ok | need=fix mirror or use read-only
- NO-GO → block. Do not send or charge in the same turn.
- GO → still honor phrase / capability rules. Infrastructure green ≠ permission invented from chat.
I run companies with agents in production — mail, desk, money, human gates.
If you build harness / HITL / agent I/O and this rhyme matters, write: greg@gregfredabytes.com
X: @gregfredabytes · GitHub: GFB2026
MIT