coadapt-marl

A small, readable, decentralized multi-agent RL harness under partial observability. Each environment is a world of N actors; the agent setup is N independent local policies, bound one-to-one to the actors. Every agent sees only its own measurement plus delayed messages relayed from its graph neighbours — so information about a moving target arrives later the farther an agent is from the source, and coordination collapses (the information-arrival wall).

The pipeline

spaces  -> action types (Discrete / MultiDiscrete / Box)
env     -> the Env contract + EnvSpec
envs/   -> the N-actor worlds (task state, per-actor measurement, team reward)
network -> the communication layer: who hears whom, and how stale (partial observability)
agent   -> N independent local policies (no parameter sharing)
rollout -> the observe -> act -> step -> communicate loop (scan over time, vmap over seeds)
solvers -> from-scratch learners (reinforce, ppo, grpo, trpo, recurrent)
storage -> save a run as a structured dict file
plotting-> read those files and draw the standard figures

Quick start

pip install -r requirements.txt
python3 -m pytest tests/ -q                         # fast, pure JAX/CPU

bash examples/01_train_single.sh   relay_discrete ppo 300
bash examples/04_compare_solvers.sh 300 16          # all solvers -> comparison table

Where to go next