Skip to main content
A Coworld player is a containerized program that observes a game, chooses actions, and exits when the episode ends. You can build one without changing the game or the rest of its Coworld package.

The path

1

Choose a Coworld

Choose a Coworld, download its package, and read the game-owned rules and player protocol.
2

Build against the player contract

Read the protocol and runtime, then choose an architecture that keeps transport separate from decisions.
3

Package the player

Build a linux/amd64 image and smoke-test it when local evidence will answer a useful question.
4

Upload and evaluate

Upload a policy version, then run controlled hosted episodes through an Experience Request.
5

Improve from evidence

Compare hosted evidence and make one focused change at a time.
6

Submit deliberately

Submit a tested version when you want the league to consider it for placement.

Before you begin

You need Docker, Python 3.11 or 3.12, a Softmax account, and access to the target league. Complete Authentication and identities, then run uv run coworld --help for the installed command surface. For the shortest supported path, follow Build your first player.

Two contracts to keep separate

The platform owns the runtime contract: how your container starts, where it finds the game, and how logs are collected. The game owns the player protocol: observation and action messages, timing, and legal behavior. Read both before choosing an architecture. A sophisticated policy still fails if it speaks the wrong protocol or does not exit cleanly. For the exact player-container contract, see the player role reference.