OpenAPI
Describes HTTP APIs without implementing the server.
lex.yaml is a repository-level contract file for Lex. It tells tools and agents what kinds of work exist in this codebase, what they are allowed to touch, and which policies apply.
It is intentionally not an execution engine. Think of it as a vocabulary for intent.
Describes HTTP APIs without implementing the server.
Describes services without embedding container runtimes.
Describes jobs without containing the runner engine.
In all of these cases, the file describes what exists and how it is wired conceptually. The actual runtimes and runners stay separate.
lex.yaml follows the same pattern for development workflows.
As we built LexRunner and wired Lex into AI coding agents, we kept running into the same problem:
lex.yaml solves that:
At a high level, lex.yaml is where you describe:
This sketch is deliberately simplified and not tied to any particular runner:
workflows:
review-pr:
description: "Review a pull request using Lex memory + policy."
inputs:
pr_number:
type: integer
required: true
scope:
module_scope: "services/**"
policy:
must_pass:
- "no-forbidden-edges"
- "no-critical-lints"
ship-release:
description: "Prepare and ship a tagged release."
inputs:
tag:
type: string
required: true
scope:
module_scope: "src/**"
policy:
must_pass:
- "release-checklist-complete"The real schema is documented alongside Lex, but the principles are the same: humans should be able to read and edit it, agents should be able to parse it and know what is in-bounds, and runners should be able to consume it as a contract.
To protect the separation between Lex and private runners, there are things we deliberately keep out of lex.yaml:
Those belong either in:
lex.yaml stays small, stable, and public.
LexRunner is one example of a tool that can consume lex.yaml, but it is not special from the perspective of the file itself.
Conceptually:
lex.yaml.lex.yaml to understand what workflows exist and which policies apply.Only step (1) is part of the open-source Lex story. Steps (2)-(4) are where private runners and orchestration strategies live.
This keeps the line clear:
lex.yaml is the shared, OSS language for "what work means here."lex.yaml sits alongside Frames and lexmap.policy.json as one of Lex's core contract surfaces.
A way for repos to describe their workflows to agents and tools in a small, explicit document.
The headline is still "work continuity with receipts, not vibes." lex.yaml is how we spell those contracts.
Start with Lex 1.0.0, add a lex.yaml to your repo, and give your agents clear contracts.