Agent interfaces, governed like code.
Tools, policies, and agent-facing contracts drift when they live in scattered prompts and config files. AEO gives them a schema, a build/audit/policy engine, a CLI, and a local console — with checks that gate CI like a linter gates a merge.
Your agents' tools are an API.
Nobody versions it.
Agent-facing tools and policies are production interfaces — but they're defined in prompts, JSON blobs, and tribal knowledge. They drift silently, and nothing fails until an agent does.
Tool schemas live in prompts here, config files there — no single source of truth.
A renamed parameter or loosened policy ships without anyone noticing — until behavior changes.
Code gets linted and gated; the agent interface that drives it gets vibes.
Definitions written directly in one vendor's format can't move to MCP or the next runtime.
One schema. One audit engine.
Every runtime.
AEO treats agent interfaces as managed artifacts: define once against the schema, audit against policy, emit to OpenAI or MCP formats, and operate the whole loop from a local console.
Tools and policies validate against a TypeScript schema before anything ships.
Checks run locally and in CI — naming, ownership, exposure, drift — with committed triage in .aeo/suppressions.json.
The same artifact emits to OpenAI-format tools or MCP — the definition outlives the runtime choice.
Trends, diffs vs last run, run history, trust graph, auto-fix preview, watch mode, and MD/SARIF exports — local-first on SQLite.
param renamed on friday →
agent misfires monday →
git blame finds nothing
aeo check in CI →
drift flagged, triaged →
emit to openai / mcp →
interface under control
Define to gate,
in six steps.
The same artifacts flow from definition to CI gate — checked locally, watched continuously, and triaged with intent.
Author tools and policies against the AEO schema.
The engine builds validated interface artifacts.
Policy and drift checks, local or in watch mode.
Accepted findings live in committed suppressions.
ci:gate honors triage; SARIF feeds code scanning.
Emit OpenAI or MCP formats from the same source.
Real screens.
Real checks.
The local console over real projects — trend of findings and exposure across runs, diffs, run history, trust graph, and the CI gate snippet.


AEO is lint + CI for agent interfaces — not a prompt library, not a config folder, not a hope.
It is governance for teams whose agents call tools in production and can't afford silent drift.