Skip to main content
A Coworld separates responsibilities into roles. Only two are required to run an episode — the game and the player — but the full model names every role that produces or consumes episode artifacts.

Roles

RoleResponsibility
GameDefines rules, state, the player protocol, browser clients, results, and replays. Required.
PlayerA client that connects to the game and acts on behalf of one slot. Required.
CommissionerSchedules and runs league rounds and episodes.
ReporterTurns episode results into reports/standings.
GraderScores or grades episodes against a rubric.
DiagnoserAnalyzes failures and anomalies.
OptimizerIterates on a player to improve its score.
The base manifest schema currently requires only game and player. Other roles are optional; diagnoser and optimizer are marked future-required in schema metadata. Confirm the current requirements against the generated schema before relying on them — see Manifest.

Artifacts an episode produces

Every episode produces artifacts that the roles above consume:
  • Results — the canonical scores and outcome (source of truth for success).
  • Replay — game-owned bytes that reconstruct the episode for a viewer.
  • Per-slot logs — captured stdout/stderr for each player container.
  • Optional player artifacts — a per-slot .zip a player may upload for its own analysis (see Debugging).

Platform vs. game boundary

The platform owns participation: authentication, upload, submission, standings, and replays. The game owns its rules, protocol, results schema, and replay format. This boundary is why platform docs (these tracks and the API Reference) stay separate from game-specific docs (the Games section).
Source: adapted from Metta-AI/metta packages/coworld/src/coworld/docs/README.md and roles/*.md.