Agent-first architecture

Built so agents are first-class operators.

Most sites are built for humans and bolt agents on afterwards. This one is the other way round: every action an agent can take is a declared contract, every invocation is authorized against a scoped grant, and every task is durable and fully traced.

Declared capabilities

12

Tasks executed

0

Success rate (30d)

100%

Human approvals

96

The four pillars

Contracts and discovery

Nothing runs unless it is declared: an id, an owning agent, a typed input schema, a side-effect class, a timeout, and a retry policy. The same catalog is published as a machine-readable discovery document.

Identity and delegated authority

Agents have their own identities and kill switches. External machine clients present scoped, expiring, revocable credentials bound to a grant that limits which capabilities they may call and how far their side effects may reach.

Durable task state

Work is a task, not a request. Tasks checkpoint as they go, hold an execution lease, resume after a crash instead of restarting, and record every step and event along the way.

Observability and governance

Every allow-or-deny decision is logged with its reason. Higher-risk capabilities pause for human approval, and each one is measured against its own success, latency, and cost targets.

What happens on every invocation

Step 1

Validate

Input is parsed against the declared schema

Step 2

Authorize

Policy checks role or grant, scope, and kill switches

Step 3

Persist

A durable task row exists before any work starts

Step 4

Execute

Steps and checkpoints stream into the trace

Step 5

Settle

Completed, retried from checkpoint, or failed with a reason

The capability catalog

The full, live contract — the same list the discovery endpoint publishes at /api/public/agents/discovery.

Sync podcast RSS feed

write

intake.rss-parsing

Pull the podcast RSS feed, create rows for any new episodes, and enrich the newest ones through the full chain.

Backfill episode enrichment

write

content_architect.enrich-episode-backlog

Run intake → architect → editor → SEO → governance over episodes that have not been enriched yet.

Draft LinkedIn posts

write

linkedin.post-drafting

Draft three LinkedIn variants in the configured voice for episodes without one.

Backfill internal links

write

site_editor.internal-linking

Extract and persist episode links from approved drafts.

Enrich guest bios

write

guest_bios.guest-bio-enrichment

Generate reviewable bio candidates for guests that are missing one.

Run prospecting cycle

spend

trend_scout.prospecting-cycle

Run trend, guest, peer-podcast and question prospecting into the staging area for review.

Run observability cycle

spend

coverage_analyst.observability-cycle

Run observe → belief → recommendation across the knowledge base.

Clear stuck runs

write

escalation_router.reap-stuck-runs

Fail legacy agent runs that have been stuck in `running` past the timeout.

Reap expired task leases

write

platform.reap-expired-tasks

Return tasks whose execution lease expired to a retryable state, or fail them once attempts are exhausted.

Check capability SLOs and alert

notify

platform.slo-alert

Compare every capability's 7-day success rate and p95 duration against its SLO target and email admins about breaches (once per capability per day).

Prune task telemetry

write

platform.prune-telemetry

Delete task steps, events, tool calls and policy decisions older than the retention window. Task rows (status, cost, timings) are kept.

Import historical runs into the task model

write

platform.backfill-task-history

Project historical agent_runs and a2a_tasks rows into `tasks` as terminal, read-only records so admin views cover the full history. Source tables are never modified.