Skip to content

About

Eight agents running a client marketing account end to end, with separation of powers: the gate that judges work cannot edit it, and the retro that learns cannot change the rules.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

client-ops-fleet

Eight agents that run a client marketing account end to end, with separation of powers built into who is allowed to edit what.

~6,700 lines. Every client fact lives in one config file; the agents contain none.


The problem this solves

Point a capable model at a client account and it will happily produce a month of content, report that everything went well, and be wrong in ways nobody catches until the client does. Not because it's careless — because a single agent that produces work, judges it, and reports on its own performance has no independent check anywhere in the loop.

So the fleet is built as a separation of powers. The constraint that makes it work is boring and structural:

The gate that judges work cannot edit it. The agent that learns from the week cannot change the rules.

Both brand-qa-gate and retro are defined without the Edit tool. Not by convention — they physically cannot modify what they assess. A reviewer that can fix its own findings stops being a reviewer.

The eight

Agent Owns Notably cannot
mops-orchestrator The calendar, the dependency graph, the gate register, the approval batch Publish anything
mops-brand-qa-gate The terminal 16-check pass; returns PASS / FAIL / HOLD with file, line and rule invoked Edit. It judges; it never fixes
mops-measurement Every figure. The baseline freeze, the UTM registry, the ledger Be overruled on a number by any other agent
mops-research-intel Evidence supply — competitor reads, SERP capture, buyer intelligence Publish
mops-instagram-engine Short-form and feed production Approve its own output
mops-linkedin-engine Company and spokesperson production, ICP lists, outreach drafts Send anything
mops-local-visibility Business profile, NAP unification, directories, reviews Skip the gate order
mops-retro The learning loop — proposes amendments from what actually happened Edit. It proposes; a human applies

Three rules that carry the weight

Every figure is tagged, and an untaggable figure is refused. CONFIRMED (measured, sourced), PROXY (a stand-in, labelled as one), CANNOT CONFIRM (access is missing — and the report says so), TARGET (a goal, never a result). One agent owns this and may refuse a number it cannot source. A proxy is never silently promoted to a confirmed figure — that promotion is the single most common way an honest report becomes a dishonest one.

Gates fail closed. Sixteen gates, G01–G16, each with an owner. Work that depends on a gate does not start until it clears. The config key that makes this real is absent_reads_as: BLOCKED — a gate with no recorded state reads as blocked, not as fine. Missing evidence is not permission.

The retro proposes; it never applies. It reads the closed week, extracts escaped defects and outcome patterns, and writes proposed amendments with the current text quoted beside the replacement. It writes no rule, promotes no pattern, and adds no gate check. A person decides.

Configuration

cp client-profile.example.yml client-profile.yml

client-profile.yml is the only place a client fact may exist — 23 sections covering identity, people, canonical NAP, channels and handles, sacred assets, banned words, target queries, competitors, ICP, cadence, per-channel export specs, evidence rules, approval, gates, KPIs and escalation.

No agent hardcodes a business name, an address, a handle, a competitor or a product vocabulary. An agent that needs a fact the schema lacks escalates to add a key — it never inlines the fact. client-profile.yml is gitignored; the example is not.

Placeholders resolve as {{client.name}}, {{channels.instagram.handle}}, {{gates.register_path}}.

Reading order

  1. docs/ARCHITECTURE.md — the naming, the config contract, the numbered invariants, and why each exists
  2. client-profile.example.yml — the full schema, commented
  3. agents/mops-orchestrator.md — how a brief becomes dispatched, gated work
  4. agents/mops-brand-qa-gate.md — the 16 checks, and what each one refuses

Honest notes

This was extracted from a fleet that ran one real account, then rewritten as a template. It has been used in anger in exactly one configuration, so treat the channel-specific engines as a starting point rather than a finished product — the parts that have genuinely been proven are the gating, the measurement discipline and the separation of powers.

The Edit-less tool lists are the load-bearing detail. If you adapt this and grant those two agents editing rights, you have kept the shape and thrown away the mechanism.

MIT licensed.

About

Eight agents running a client marketing account end to end, with separation of powers: the gate that judges work cannot edit it, and the retro that learns cannot change the rules.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors