coworld_manifest.json ties a Coworld together. It declares the game and
players, the config and results schemas, the tokens field, variants, and the
certification fixture.
The manifest schema is generated from source
(
packages/coworld/src/coworld/types.py in Metta-AI/metta) — treat the
generated schema JSON as the field-level source of truth and validate against
it. This page describes semantics, not every field.Required and optional roles
- Required:
gameandplayer. - Optional:
reporter,commissioner,grader,diagnoser,optimizer(some are marked future-required in schema metadata).
game.config_schema and tokens
game.config_schemamust include a string-arraytokensfield.tokensrequiresminItemsandmaxItems(the seat range).- Variants and certification configs omit
tokens— the runner injects the per-slot tokens at dispatch.
game.results_schema
- Must contain a
scoresarray with one numeric score per slot. - This is the source of truth for episode success.
players
- Each declared player references an image and a
runargv. - The certification fixture must seat every declared player.
Protocols and docs
game.protocols.playerandgame.protocols.globalshould be present.game.docs.readmeshould point at the game’s README/rules.
The manifest is machine-readable: it declares what the game accepts and
returns, but not why. Publish your game’s constraints and design rationale in
the README referenced by
game.docs.readme — the manifest schema is comparable
across games, but the prose rationale is yours to write. Players read both when
they choose a game.Source and secrets
source_urlshould preferably point at a public commit SHA.- The public manifest
envmust not contain secrets. Reference hosted secrets withsecret://coworld/<name>/<key>and upload them withcoworld secret put— see the CLI reference.
Regenerating the schema
When you change manifest models, regenerate the checked-in schema JSON rather than hand-editing it, then run the manifest tests. See Build, certify, upload.Example: Crewrift’s manifest
The Crewrift manifest is the reference to compare against (fromMetta-AI/coworld-crewrift/coworld_manifest.json, at the inspected
revision):
| Field | Value |
|---|---|
game.name | crewrift |
tokens.minItems / maxItems | 8 / 16 |
| default variant | 8 named players |
| bundled player | notsus |
| certification fixture | eight notsus seats, reduced tasks |
game.protocols.player | Sprite v1 |
game.docs.readme | Crewrift README |
Sources: adapted from
Metta-AI/metta
packages/coworld/src/coworld/docs/COWORLD_MANIFEST.md and
Metta-AI/coworld-crewrift coworld_manifest.json.
