Skip to content
Schema · CLI · local console

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.

Contracts
Schema-validated
Checks
CI-gated · SARIF
Emitters
OpenAI · MCP
Console
Local · SQLite
aeo check · project: aeo-kit-demo GATING CI
TERMINAL
$ aeo check --policy inline
validating agent interface artifacts…
schema — 14 artifacts valid
policy — naming, ownership, exposure
drift — 1 tool changed since last run
wrote report.json · report.sarif · triage → .aeo/suppressions.json
$ aeo-console ci:gate < report.json
trendfindings + exposure per run
diffvs last run · trust graph
auto-fixpreview before apply
01 · Interface drift

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.

01
Scattered definitions

Tool schemas live in prompts here, config files there — no single source of truth.

02
Silent drift

A renamed parameter or loosened policy ships without anyone noticing — until behavior changes.

03
No CI story

Code gets linted and gated; the agent interface that drives it gets vibes.

04
Per-vendor lock

Definitions written directly in one vendor's format can't move to MCP or the next runtime.

02 · Interfaces as artifacts

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.

A.
Schema-first definitions

Tools and policies validate against a TypeScript schema before anything ships.

B.
Build, audit, policy engine

Checks run locally and in CI — naming, ownership, exposure, drift — with committed triage in .aeo/suppressions.json.

C.
Vendor-portable emitters

The same artifact emits to OpenAI-format tools or MCP — the definition outlives the runtime choice.

D.
An operator console

Trends, diffs vs last run, run history, trust graph, auto-fix preview, watch mode, and MD/SARIF exports — local-first on SQLite.

— BEFORE
tools in prompt strings →
param renamed on friday →
agent misfires monday →
git blame finds nothing
— WITH AEO
schema-valid artifacts →
aeo check in CI →
drift flagged, triaged →
emit to openai / mcp →
interface under control
CHECKSSCHEMA · POLICY · DRIFT
CIGATE + SARIF EXPORT
TRIAGECOMMITTED SUPPRESSIONS
03 · The loop

Define to gate,
in six steps.

The same artifacts flow from definition to CI gate — checked locally, watched continuously, and triaged with intent.

DEFINE
Schema

Author tools and policies against the AEO schema.

BUILD
Artifacts

The engine builds validated interface artifacts.

AUDIT
Check

Policy and drift checks, local or in watch mode.

TRIAGE
Suppress

Accepted findings live in committed suppressions.

GATE
CI

ci:gate honors triage; SARIF feeds code scanning.

EMIT
Deploy

Emit OpenAI or MCP formats from the same source.

04 · The console

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-console · project
AEO Console project view — trend of findings and exposure, run controls, CI gate snippet
Project — 12-run trend, findings/diff/history/trust-graph tabs, auto-fix preview, watch, and the CI gate snippet.
aeo-console · projects
AEO Console projects list — local-first dashboard with check status per project
Projects — local-first dashboard, check status and last run per project.
05 · Positioning
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.
BUILT FOR · teams shipping agent tools
OPTIMIZED FOR · drift caught in CI
PROVES OUT · schema → check → gate → emit