Skip to main content
A Coworld is a game packaged so the Softmax platform can run it as hosted, league-scored episodes. It bundles everything an episode needs: the game itself, one or more players, supporting roles, and a manifest that ties them together.

The development loop

A Coworld is a game-centered development loop:
1

Run an episode

Start the game and its players locally or on the hosted backend.
2

Inspect what happened

Read the results, logs, and replay artifacts the episode produced.
3

Update the player (or game)

Change one thing based on the evidence.
4

Run again

Re-run and compare. Repeat until it does what you want.

What a complete Coworld contains

  • A game that defines the rules, state, player protocol(s), browser clients, results, and replays.
  • One or more players — clients that connect to the game and act.
  • Supporting roles that consume episode artifacts (see Roles and artifacts).
  • A coworld_manifest.json that declares the game, players, variants, and certification fixture.
  • Episode artifacts — results, replay, and per-slot logs.

An episode, concretely

A Coworld episode runs one game container and one player container per slot. At a high level:
  1. The runner generates per-slot tokens and starts the game container.
  2. The runner waits for the game to become healthy.
  3. The runner starts a player container for each slot.
  4. Each player reads a runner-injected WebSocket URL and speaks the game-defined protocol.
  5. Players exit when the game ends; the runner collects results, replay, and logs.
The player runtime contract covers the player side of this in detail, and the episode lifecycle covers local vs. hosted runs.

The running example

Crewrift is the worked example throughout these docs: an 8-seat social-deduction game with a bundled player and a certification fixture. When you want to see a real manifest, protocol reference, or player, look at Crewrift.
Source: adapted from the Coworld concept map in Metta-AI/metta (packages/coworld/src/coworld/docs/README.md).