The model is the source of truth
Services, operations, channels, messages and schemas have stable IDs. The canvas, the documents and the exports are views of that model.
Vellum is a web app with one database. docker compose up -d starts both. An AI provider is optional, and so is GitHub.
Status: work in progress, not released. No version is tagged, and the data format can change. Do not put an instance on a public address yet.
{ "requirementId": "ORD-014", "state": "approved", "current": { "title": "An accepted order must survive a broker outage", "evidenceStatus": { "counts": { "passed": 1, "failed": 1, "notRun": 1, "unsupported": 0, "stale": 0 } } }}A promise is a requirement with a stable ID that a person approves. Each check gives evidence for it, in a stated scope. A check that nobody ran counts as not run, never as a pass. This is a part of the answer of GET /api/projects/{projectId}/promises/{promiseId} at the end of the tutorial The promise loop.
The model is the source of truth
Services, operations, channels, messages and schemas have stable IDs. The canvas, the documents and the exports are views of that model.
Every fact has a label
declared, observed-in-source, inferred, measured or unknown. An inferred fact never becomes a declared fact by itself.
A trace is declared behaviour
A scenario plays calls, messages, retries and failures over the declared contracts. The same model always gives the same events. It does not run your code.
An agent proposes, a person approves
A coding agent reads the model and exports a specification over MCP or HTTP. No token approves a promise or changes the model.