An executable recipe format.
Sous is an open, machine-readable format for recipes that a kitchen orchestration system can execute, not merely display. It is built on one idea that no existing recipe format has: an ingredient's state is separate from the procedure that produces it.
A recipe says it needs diced onion. Whether that comes from a bag of pre-diced onion or from a knife and a whole onion is a planning question, not a recipe fact.
"requires": [
{ "id": "onion",
"substance": { "ref": "foodon:03316347", "label": "onion" },
"state": { "form": "diced", "integrity": ["peeled"] }, // WHAT is needed
"quantity": { "kind": "exact", "value": 500, "unit": "g" } }
] // not HOW to get it
Give that recipe a kitchen with whole onions and the planner emits a cut. Give it a
kitchen with pre-diced onions and the plan is empty. Same recipe, both times.
These URIs are what $id and $schema fields point at. They are
identifiers first and locations second — nothing in the toolchain dereferences them, since every
cross-file $ref is relative and resolved against a local registry. They are served
here for anyone who pastes one into a browser.
| Layer | Namespace URI |
|---|---|
| Recipe Required states, a task network, a goal |
https://psigen.github.io/sous/schema/v0/recipe.schema.json |
| Kitchen Equipment and pantry — the planner's initial state |
https://psigen.github.io/sous/schema/v0/kitchen.schema.json |
| Domain Facets and operations — compiles to PDDL |
https://psigen.github.io/sous/schema/v0/domain.schema.json |
| Common Identifiers, quantities, state, conditions |
https://psigen.github.io/sous/schema/v0/common/ |
The namespace is scoped to the major version, so additive 0.N → 0.N+1 releases
do not rewrite the $id of every schema or the $schema line of every
document in the wild.
git clone https://github.com/psigen/sous
cd sous && pip install jsonschema
python3 tests/run_tests.py # the acceptance suite
python3 tools/sous_validate.py examples/*.sous.json
python3 tools/sous_to_pddl.py \
examples/caramelized-onions.sous.json \
examples/kitchens/home-whole-produce.sous-kitchen.json
| SPEC.md | The normative specification |
| SEMANTIC-RULES.md | Constraints JSON Schema cannot express |
| CONFORMANCE.md | What it means to implement Sous |
| SAFETY.md | Allergen derivation and critical control points |
| GOVERNANCE.md | Versioning and namespace policy |
| LIMITATIONS.md | Known gaps and open problems |
| adr/ | Why JSON Schema over LinkML, why facets, why PDDL is a target |