This is the quickest path to a competitive LLM Strategic Commander for ProxyWar on Softmax Observatory.
The starter layers a production websocket entrypoint over an immutable
Linux/AMD64 image built from the exact Commander source and payload used in
ProxyWar's hosted Commander canary. It runs the production form of Commander
Arm C: Claude chooses among a small typed menu of strategic options.
Deterministic code then selects an exact currently offered LegalAction.id.
The production entrypoint removes the canary's eval run key,
provider-preflight, and artifact-finalization protocol. The model never emits a
raw game intent or executable action ID.
You need Docker, Git, and uv on macOS or Linux (Windows users can use WSL). Then:
git clone https://github.com/0xNad/proxywar-commander-starter.git
cd proxywar-commander-starter
bash launch.sh my-commanderThe script signs you in, builds the pinned image, enables Softmax's Bedrock sidecar, uploads the policy, and prints its immutable policy-version ID. No model API key is needed.
Uploading does not enter the league. Submit the new policy afterward:
uvx --from 'coworld==0.1.42' coworld leagues
uvx --from 'coworld==0.1.42' coworld submit my-commander --league <league_id>- The state builder reduces the observation to bounded strategic facts.
- The option builder exposes at most eight choices from
expand,develop_economy,pressure_rival, andsurvive. - Claude selects one locked option and a short plan horizon.
- A persistent plan avoids paying for inference on every decision.
- The binding executor can choose only an ID attached to that option and present in the current legal-action menu.
- The production wrapper independently uses the offered social slots: it replies to inbound messages, selects structured deals, and reciprocates a visible alliance request with the exact offered alliance action.
- Gameplay variants give the policy 60 seconds to respond and the provider 55 seconds to finish. A provider timeout, transport error, or malformed response uses an explicit deterministic fallback; it is never silent.
The initial four-game hosted canary proved non-hold play, all four strategic families, and exact offered-ID fidelity. It also found 19 of 74 selector calls timed out at the original 12-second boundary. Production therefore uses a 55-second inference budget inside a 60-second gameplay response window rather than treating an asynchronous league episode like an interactive game.
This public Commander release is a pinned, deployable reference. Its primary strategy remains the tested Commander planner, while the production wrapper also uses structured deals and bounded free-form message replies in their separate social slots. The canonical game supplies the structured spatial observation; the rendered minimap remains off.
The Dockerfile pins the anonymously pullable public Commander base by immutable
GHCR digest. GitHub attestation binds that base to protected ProxyWar source
2bc2de5e2c5cbd2cb6d423a429c6d56325938cdc; the starter image separately
records the exact commit of this repository in its OCI revision label.
For a fully editable JavaScript policy with strategy text, deal selection, and messages, use the original ProxyWar Coworld starter.
npm test
bash launch.sh --doctor
SOURCE_SHA="$(git rev-parse HEAD)"
docker build --platform linux/amd64 \
--build-arg "STARTER_SOURCE_SHA=$SOURCE_SHA" \
-t proxywar-commander-starter:local .
docker image inspect proxywar-commander-starter:localThe launcher resolves the exact Git commit from the clone, passes it as
STARTER_SOURCE_SHA, and records it in the image's OCI revision label. For a
source archive without .git, set that variable to the archive's exact source
commit before running the launcher. The Coworld and Softmax CLI package
versions are pinned in launch.sh; update them only as an explicit reviewed
release change. The launcher never downloads and executes an installer.
The decision protocol is documented in ProxyWar's player protocol.