An agent is a skill plus an operational wrapper: a trigger, a fleet, an owner, a schedule and a kill-switch. Forty-nine are registered. Twelve are verifiably running right now. Four claim to be running and are not — those are the only red rows on this page, and they are the reason it exists.
claude-user crontabs, 27 containers, /var/log/made-*, and os_agents.
Four findings. In each case a system of record says live and the machine disagrees. None of these is a missing feature — they are all integrity problems in something already being counted as working, which is why they outrank every item in the roadmap below.
None of them is expensive to fix. Three are a status field or a rename. That is precisely what makes leaving them alone indefensible.
| # | Agent | Registry says | Machine says | Consequence | Fix |
|---|---|---|---|---|---|
| R-01 | FORGE | live claude-code-loop, cron | Last output 2026-06-11. No cron under any user, no timer, no container, no logs dir. | The app's overnight code review has been off for ~8 weeks while reading as on. | Add the cron, or set paused. |
| R-02 | RALPH vs RESOLVER | both live both claim /opt/made-ralph |
Binder attributes the real nightly run to RALPH — an unbuilt legal-language concept. Two schedules exist: root 0 9 nightly.sh, claude-user 0 7 run.sh. |
48 rebinds/day file production work under a non-existent agent. Wiki documents only one of two schedules. | Rename the concept; reconcile schedules. |
| R-03 | PULSE vs MEDIC | both live | One cron set (*/15, :17, 06:40) at /opt/made-pulse. Binder says PULSE; wiki says MEDIC and that PULSE is a separate n8n build. |
Live count inflated by one. Cannot tell whether the n8n PULSE exists at all. | Pick an owner; retire the other. |
| R-04 | made-fleet | absent not in os_agents |
Two production crons: os_fleet_report.py */30, os_provision_worker.py */10. Reports itself catalogued:false. |
drift_count: 22 every run, unchanging, therefore ignored. Same failure that hid ORPHAN-SEEDER until July. |
Register both; add a not-an-agent class. |
/opt folder is treated as evidence of life. It isn't — it's evidence that someone once built something there. Until live requires a found trigger, this class of error will keep recurring, and it will always be discovered by a manual sweep rather than by the system.
probed=13 ok=11 down=2 key_failing=['svc_n8n_made']. n8n on bc-made is failing as a key target — and n8n is the candidate harness for ~14 of the 32 unbuilt agents. Fix the harness before committing the roadmap to it.
Each row below was matched to a specific running container, a specific cron line, or a live HTTP endpoint. Grouped by fleet. Where a schedule is listed it was read from the crontab this pass, not from documentation.
| Agent | Job | Harness · archetype | Trigger | Evidence found |
|---|---|---|---|---|
| CHIEF | CEO conductor + Brain-for-Made runtime: grounded RAG route plus typed, propose-only status/dispatch over the /opt fleet. |
claude-agent-sdk · conductor | event | Container chief, up 3 weeks · chief.srv1472429.hstgr.cloud |
| MADE BRAIN | Conversational RAG over the Made knowledge base — the grounded question-answering surface. | n8n · chatbot | manual | Container brain-api-made, up 3 weeks · brain-made.srv1472429.hstgr.cloud |
| RESOLVER | Nightly entity resolution — news, trials, SFDC accounts, leads, transcript mentions → canonical companies/contacts. Propose-only. | claude-agent-sdk · resolver-cron | cron | Ran 2026-08-04 09:04Z, clean exit. But see R-02 — two schedules, wrong binding, and cumulative_cents: 0 on the run. |
| MADE-ID CUSTODIAN | Owns the canonical MADE-ID and the cross-system ID map (SFDC ↔ HubSpot ↔ BC Hub ↔ Transfer). Dedup, drift, SFDC bridge. Propose-only. | cron-worker · resolver-cron | cron 08:30 | Root cron 30 8 * * * → /opt/made-id-registry/sfdc_bridge/run.sh all |
| ORPHAN-SEEDER | Matches and seeds orphaned Made contacts against the BC hub. | fastapi-litellm · enrichment-worker | always-on | Container made-orphan-seeder, up 3 weeks, healthy |
| MEDIC | Probes every regularly-running connection, API, webhook and cron; records to monitor_*; emails an operator after 3 consecutive failures on a key target. |
cron-worker · monitor | */15 · hourly · 06:40 | Three root crons at /opt/made-pulse. Currently reporting 2 down. Identity contested — see R-03. |
| Agent | Job | Harness · archetype | Trigger | Evidence found |
|---|---|---|---|---|
| SSO AGENT | Generates and validates personalised outreach messages from the SSO skill playbooks. ICP-gated, hold-out validator, daily and monthly cost caps. | fastapi-litellm · outreach-agent | webhook | Container made-sso-agent, up 3 weeks, healthy · :8080 internal |
| EVENT-SCRAPER | Given an event URL: discover, scrape (public or portal) attendees/agenda/exhibitors via Firecrawl, LLM-extract, load raw Transfer tables, validate — then stop. | cron-worker · signal-desk-monitor | manual | Code at /opt/made-event-scraper, last touched 2026-06-25. No cron, no container — correct for a manual agent, but "live" overstates it. |
manual: it runs when a human points it at an event URL. So "no cron" is expected, and it is not in the red tier. But calling it live alongside a container that has been up three weeks flattens a real difference. A manual agent is better described as available — it is ready, not running. Worth a status value.
| Agent | Job | Harness · archetype | Trigger | Evidence found |
|---|---|---|---|---|
| parley | Claim-decomposed action-item extraction from Fireflies transcripts, behind a validator gate. Doubles as the Fellow eval baseline. | fastapi-litellm · digest-composer | webhook | Container parley-ingest, up 3 weeks |
| PULSE | Periodic pipeline health summary. | n8n · monitor | cron | R-03. Bound to MEDIC's crons. No distinct n8n workflow confirmed. |
| RALPH | Legal/agreement language redlining helper. Its own description says "concept; not the live entity RESOLVER." | — · qc-validator | manual | R-02. A concept marked live, and the auto-binder is assigning RESOLVER's real work to it. |
| Agent | Job | Harness · archetype | Trigger | Evidence found |
|---|---|---|---|---|
| SCOUT | On-demand single-company BD research brief for Account Atlas. Brave + Firecrawl + news + SEC + ClinicalTrials.gov → Claude synthesis → scout_briefs → branded PDF. |
edge-functions · research-agent | on_demand | EF scout-research deployed on Transfer, endpoint live |
| REGEN-RADAR | Regen-medicine / longevity signal desk. News, regulation and science sweeps feeding the regen brief surfaces. | signal-desk · signal-desk | */4h · 06:40 · 06:50 | Three root crons → /opt/regen/regen-radar/run_all.sh · container regen-radar-app up 2 weeks |
| KFSH EXEC TRAINER | Generates KFSHRC executive training content; output served as a branded microsite. | n8n · digest-composer | manual | Container kfsh-brand-web-1, up 3 weeks |
| BIBLIOGRAPHER | Compiles multi-chapter market-research dossiers from the Made BRAIN; delivers HTML/PDF/DOCX/JSON/Slides to Storage with live progress in the Leadership Research Reports tab. | edge-functions · research-agent | manual | Status testing — honestly labelled, not counted as live |
Everything below is a future item: named, given an archetype and a candidate harness, assigned a priority and an owner, and then left alone. This list is an asset. Its whole function is to make "we should build something that does X" answerable with a name, a shape and a priority instead of a new project.
Nothing here needs attention this week. If a row below turns out to be urgent, the correct move is to change its priority — not to start building it quietly.
| Agent | Job | Harness candidate | Trigger | Owner |
|---|---|---|---|---|
| daybreak | Daily 06:30 ET morning brief — fans in DOSSIER + PERISCOPE + TRIALWATCH + SENTINEL + PARLEY into one page. | claude-agent-sdk | cron | Joe Sinclair |
| DOSSIER | Keeps per-account dossiers current (news, trials, signals); feeds DAYBREAK. | n8n | cron | Dustin Campbell |
| PERISCOPE | Competitive intel monitor — competitor and market moves into the morning brief. | n8n | cron | Joe (caretaker) |
| trialwatch | Weekly Mon 08:00 ET clinical-trial delta scan against active accounts, plus on-demand /nct [account]. Writes an SFDC Account note. | signal-desk | cron | Dustin Campbell |
| sentinel | Monthly full + weekly light sweep of FDA/EMA/ICH/AABB/USP guidance. Detects and summarises; explicitly does not interpret. | signal-desk | cron | Furat or Ken |
| huntsman | On-demand /prospect [indication] BD prospector. Validator-as-judge with step-parallel ensembling; dedupes against both HubSpot MQLs and SFDC opps. | claude-agent-sdk | manual | Joe Sinclair |
| margin | Nightly 22:00 ET sweep of open quotes for pricing/capacity violations behind a two-pass validator. Catches drift in proposals nobody is touching. | cron-worker | cron | Furat or Ken |
| redline | Fires on a HubSpot deal update with a proposal modified <1h ago; grades red/yellow/green against the heaviest domain ruleset. Real-time counterpart to MARGIN. | n8n | webhook | Furat or Ken |
| LADDER | Platform stage-gate tracker — moves platform opportunities through gates. | edge-functions | cron | Joe Sinclair |
The five specialists that feed the morning brief cannot go live just because they ran once. Ten clean days first. That single rule is the difference between this roadmap and the four red findings above — it makes live mean something, so a promoted agent is a verified one.
Apply the same rule retroactively and FORGE fails it. Which is the point: the gate exists because this failure already happened.
| Agent | Fleet | Job | Harness candidate | P |
|---|---|---|---|---|
| BEACON | growth | Inbound lead qualifier — scores and routes form fills. Full pre-build map ↗ | n8n | p2 |
| ARGUS | growth | SEO sentinel — ranking/site-health regressions. | n8n | p2 |
| ECHO | growth | Campaign performance reporter. | n8n | p2 |
| LANYARD | growth | Conference intelligence built on EVENT-SCRAPER's raw data. | cron-worker | p2 |
| MOSAIC | growth | Segmentation + enrichment via Clay webhooks. | n8n | p2 |
| BRIEFCASE | commercial | Meeting prep — pre-meeting brief from CRM + intel on a calendar event. | claude-agent-sdk | p2 |
| GATEKEEPER | commercial | RFP triage — classify and route inbound RFPs. | n8n | p2 |
| HORIZON | commercial | Demand forecast refresh. | n8n | p2 |
| JANITOR | commercial | SFDC hygiene sweep — flag stale or malformed records. | n8n | p2 |
| LEDGER | commercial | Revenue reconciliation — booked vs recognised across systems. | n8n | p2 |
| VERDICT | commercial | Quote win/loss analyst. | n8n | p2 |
| HERALD | ceo-office | Board/investor deck drafter from live metrics via Agent SDK + Gamma. | claude-agent-sdk | p2 |
| ORACLE | ceo-office | Long-range revenue × capacity scenario model. | n8n | p2 |
| SPOTLIGHT | ceo-office | Monday-AM executive digest. | n8n | p2 |
| CONCIERGE | knowledge-platform | Ingestion router — inbound docs/signals to the right pipeline. | edge-functions | p2 |
| CURATOR | knowledge-platform | Knowledge freshness monitor — flags stale KB content. | n8n | p2 |
| FOREMAN | knowledge-platform | Build schedule keeper — tracks roadmap cadence via git hooks + n8n. | claude-code-loop | p2 |
| LOCKSMITH | knowledge-platform | Secrets rotation scheduling and reminders. | cron-worker | p3 |
| SCRIBE | knowledge-platform | Session scribe + skillify — turns sessions into durable skills. | claude-code-loop | p3 |
| ARCHIVIST | research | Knowledge archival worker. | n8n | p2 |
| SHERLOCK | research | Investigative research agent. | edge-functions | p2 |
| CHRONICLER | training | Training-content chronicler. | n8n | p3 |
| TUTOR | training | Interactive training agent. | n8n | p3 |
live mean "a trigger was found," and the red tier empties itselfAll four red findings share one root cause: the registry lets a human type live. Nothing checks it. Meanwhile /opt/made-fleet/os_fleet_report.py already walks the containers and crontabs every thirty minutes and already knows the answer — it just has nowhere authoritative to write it.
Three changes, none of them large:
status is intent (what we want). Add runtime_state, written only by the fleet reporter (what is true). Disagreement between them is the alert — no separate audit needed.available as a status for manual agents like EVENT-SCRAPER, so "ready when invoked" stops being spelled the same way as "running on a timer."not-an-agent so the 22 microsite containers leave the drift count and the number can reach zero — at which point a non-zero drift count becomes worth paging on.Do those and this page's Tier 1 section becomes generated rather than hand-swept, which is the only version that stays true.