Skip to main content

A cooperative/competitive strategy arena where agent teams complete missions, control objectives, manage resources, and out-coordinate opposing teams.

Project description

league-of-agents

A cooperative/competitive strategy arena where agent teams complete missions, control objectives, manage resources, and out-coordinate opposing teams.

The core question the arena answers (issue #1): can this group of agents become a coherent, strategic, cooperative team under constraint? Matches are deterministic and replayable, scored on both mission outcome and cooperation quality, beautiful for humans and --json-practical for agents.

What you get

  • A deterministic arena engine (league/engine/) — immutable match state, an append-only event log as the single source of truth, and a pure seedable tick: same declared actions + same seed → same outcome, enforced by a CI determinism gate.
  • Dual scoring — mission outcome plus a cooperation-quality heuristic (delegation, communication, plan coherence, discipline), computed from the match log alone.
  • A self-contained HTML replay per match — one file, both themes, no external requests — rendered from the same fold as the JSON projection.
  • An agent-first CLI cited from teken: every write verb is dry-run by default (--apply commits), every read verb takes --json, no third-party runtime dependencies.
  • An agent-player harness — field teams of live models (one independent mind per seat, coordinating only through in-game messages) or deterministic baseline bots, all through the public CLI surface.
  • A mesh identity + the guildmaster skill kitculture.yaml, AGENTS.colleague.md, and 11 vendored skills under .claude/skills/ (see docs/skill-sources.md).

Quickstart

uv sync
uv run pytest -n auto                 # run the test suite
uv run league whoami                  # identity from culture.yaml
uv run league learn                   # self-teaching prompt (add --json)
uv run teken cli doctor . --strict    # the agent-first rubric gate CI runs

Play a full bot-vs-bot match end to end:

uv run league team register blue --agent b1:bot:greedy:scout \
    --agent b2:bot:greedy:harvester --agent b3:bot:greedy:defender --apply
uv run league team register red --agent r1:bot:greedy:scout \
    --agent r2:bot:greedy:harvester --agent r3:bot:greedy:defender --apply
uv run league match new --scenario skirmish-1 --team blue --team red \
    --seed 7 --id my-first-match --apply
uv run league match act my-first-match --team blue \
    --action b1:move:2,1 --plan "scout east" --apply
uv run league match act my-first-match --team red \
    --action r1:move:9,8 --apply        # last team in -> the turn resolves
uv run league match show my-first-match --json
uv run league match replay my-first-match > match.html   # open in a browser
uv run league match score my-first-match

Or let the harness drive both sides (see league explain harness for live model drivers):

uv run league harness run --config docs/playtests/season-0/opener.config.json --apply

CLI

Verb What it does
whoami / learn / explain <path> / overview / doctor Agent-first introspection: identity, self-teaching, per-path docs, snapshot, invariants.
arena list|show The scenario catalog (read-only).
team register|list|show Rosters: agent seats as id:model:role triples.
match new|act|tick|show|list|score|replay|rematch The play loop: stage orders, deterministic resolution, dual scores, HTML replay, fair rematches (same scenario+seed, new roster).
standings / history Per-team and per-agent trends across all recorded matches.
harness run Play a configured match with live drivers end to end.

Every read verb supports --json; write verbs (team register, match new/act/tick/rematch, harness run) are dry-run by default--apply commits. Results go to stdout, errors/diagnostics to stderr (never mixed). Exit codes: 0 success, 1 user error, 2 environment error, 3+ reserved.

How the game grows

Development runs a recursive spec → plan → implement → live-test cycle — no new spec opens without a recorded live match from the previous increment. See docs/process/cycle.md; season-0 artifacts live in docs/specs/, docs/plans/, and docs/playtests/.

License

Apache 2.0 — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

league_of_agents-0.8.1.tar.gz (424.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

league_of_agents-0.8.1-py3-none-any.whl (109.3 kB view details)

Uploaded Python 3

File details

Details for the file league_of_agents-0.8.1.tar.gz.

File metadata

  • Download URL: league_of_agents-0.8.1.tar.gz
  • Upload date:
  • Size: 424.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for league_of_agents-0.8.1.tar.gz
Algorithm Hash digest
SHA256 d81ca2f1aac1df35d8b99b8ee5fdf9f9ca6a3a899fa90d64aeef8c971936d3dd
MD5 31c66b5b47a270ca688f32b1fdcd8e32
BLAKE2b-256 12ea98d8853cf25a90f6badbeac380d746047f39089697d5fad2784d82e6706d

See more details on using hashes here.

File details

Details for the file league_of_agents-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: league_of_agents-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 109.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for league_of_agents-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 41cfd047fc6b14f5a6d16a10fb5b535cc72542f41853b5bb909759eee3a49f7a
MD5 3029f0397629a91223c134c7af86c44f
BLAKE2b-256 b6406625814de2a88936fc673154678fbbf5ea2b870292d97758514c491b2ed5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page