Voyager
A cooperative survival world for evaluating multi-agent reinforcement learning.
Two decentralized agents must explore procedural islands, gather finite resources, build shared infrastructure, survive the night, and complete a rescue beacon. Voyager measures whether learned policies can coordinate from partial observations and delayed rewards, then transfer those skills to held-out worlds.
Live replay viewer · Leaderboard · Benchmark card · Frozen results · Environment contract · Contributing
Overview
Voyager evaluates meaningful achievements rather than reward alone. The benchmark focuses on a shared two-agent task, where each agent acts from a local 7×7 view and a small public camp board.
Voyager tests whether policies can:
- Coordinate: divide gathering, delivery, construction, and survival work.
- Plan across delays: connect early actions to shared outcomes hundreds of steps later.
- Generalize: repeat those behaviors on held-out procedural islands.
Fifteen achievements show where a plan breaks. Frozen data splits, deterministic simulation, conservation ledgers, and replay files keep each result reproducible.
The full capability chain is:
explore -> gather -> return -> deposit -> build -> craft
-> hunt -> cook -> shelter -> survive -> signal -> rescue
| Finite wildlife and food | Two agents, one shared economy | Night stalkers punish weak plans | The original ten-agent benchmark |
Watch a complete run
This is the public-observation scripted oracle completing all 15 achievements and rescuing both agents. It runs at 4× speed. The oracle is a solvability check, not a learned result.
Watch the full-quality MP4 · Open the replay collection
What Voyager measures
Each VoyagerIsland-v1 episode contains:
- Two symmetric agents sharing one policy.
- A procedurally generated 48×48 island and a 1,200-tick limit.
- Local 7×7 observations plus a small public camp board.
- Nineteen discrete actions with authoritative action masks.
- Finite food, wood, stone, deer, tools, structures, and night threats.
- Fifteen achievements spanning gathering, delivery, production, survival, and rescue.
The hard part is composition. An agent may learn how to collect wood, yet still fail to remember why it left camp, return with the wood, deposit it, and coordinate the next build. Voyager makes those partial successes visible instead of reducing the episode to one win or loss.
Official baseline result
The first frozen evaluation trained feed-forward PPO and recurrent PPO with three independent training seeds and one million agent transitions per run. Checkpoints were selected on 50 development islands, then evaluated once on 100 held-out islands. Seeded-stochastic inference is the primary learned-policy result.
| Policy | Public score | Hierarchical 95% CI | First night | Rescue |
|---|---|---|---|---|
| Legal random | 0.023 | 0.019–0.026 | 17% | 0% |
| Feed-forward PPO | 0.164 | 0.049–0.198 | 94% | 0% |
| Recurrent PPO | 0.072 | 0.032–0.106 | 94% | 0% |
| Scripted oracle | 0.986 | 0.973–0.997 | 100% | 96% |
Feed-forward PPO learned basic gathering on 91–96% of islands, resource delivery on 65–72%, workbench construction on 61%, and a first tool on 56%. It did not learn shelter, hunting, cooking, beacon construction, or rescue. Recurrent PPO did not improve on it under the same budget.
That is the result: early cooperative progression is learnable and significantly exceeds random, while the complete task remains unsolved by these PPO baselines. The oracle's 96% rescue rate shows that the mechanics are solvable without privileged simulator state.
Full tables, confidence intervals, source hashes, and achievement-level results live in
benchmarks/reference/voyager_island_v1_baselines_v1.
The frozen protocol is documented in
docs/stage_7_island_benchmark_v1.md.
Submit new results through the data-only pull-request leaderboard.
voyager-eval writes the required episode records and submission draft; CI validates the schema,
frozen seeds, disclosures, and artifact hashes, then recomputes the public score without executing
submitted policy code.
Earlier compact benchmark
Before VoyagerIsland-v1, Voyager used a shorter ten-agent survival task. Across three PPO
training seeds, the official deterministic family retained all 10 agents, completed the
shelter, and scored 89.42 with a 95% confidence interval of 84.19–93.17. That result proved
the training, checkpointing, held-out evaluation, and replay pipeline. It is not directly
comparable with the harder two-agent island score above.
Quick start
Install from PyPI and complete a full legal-random episode without cloning the repository:
python -m pip install voyager-island
voyager-random --seed 0
Open the hosted replay viewer to explore the official curated runs without installing anything.
Run the visual demo
The Docker image builds the Python service and React viewer together:
git clone https://github.com/fawzmehfil/Voyager.git
cd Voyager
docker build -t voyager .
docker run --rm -p 8000:8000 voyager
Open http://127.0.0.1:8000.
For a local development install:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"
npm --prefix web install
npm --prefix web run build
voyager-web
The distribution name is voyager-island because voyager is already used on PyPI. The
Python import remains voyager.
Use the environment
Voyager exposes the benchmark through a conventional PettingZoo parallel factory:
from voyager.envs.island_v1 import parallel_env
env = parallel_env(procedural=True)
observations, infos = env.reset(seed=0)
while env.agents:
actions = {
agent: env.action_space(agent).sample(mask=infos[agent]["action_mask"])
for agent in env.agents
}
observations, rewards, terminations, truncations, infos = env.step(actions)
For controllers that emit both actions together, use the separately named, checker-compliant Gymnasium interface:
import gymnasium as gym
import voyager # registers the environment
env = gym.make("VoyagerIslandCentralized-v1")
observation, info = env.reset(seed=0)
observation, reward, terminated, truncated, info = env.step(env.action_space.sample())
Complete runnable versions are in examples/random_rollout_pettingzoo.py and
examples/random_rollout_gymnasium.py. VoyagerIsland-v1 remains the benchmark and
PettingZoo environment name; it is intentionally not registered as a Gymnasium environment.
Train a baseline
TensorFlow training currently requires Python 3.11 or 3.12:
python3.12 -m venv .venv-train
source .venv-train/bin/activate
python -m pip install -e ".[dev,train]"
python examples/run_stage7_island_procedural.py train \
--algorithm feed_forward_ppo \
--training-seed 0
Use --smoke for a short integration check. An official run uses one million agent
transitions; the full frozen matrix contains three feed-forward and three recurrent runs.
Replay viewer
The viewer plays recorded evaluation episodes. It does not retrain agents or simulate outcomes in the browser. Every tick comes from a versioned replay with state hashes and conservation checks.
It supports exact seeking, event markers, free and automatic cameras, agent inspection, achievement timelines, metrics, diagnostics, and synchronized policy comparison.
| Curated benchmark replays | Agent and event inspection |
Useful routes after running voyager-web:
/: curated showcase and replay library./replays/{replay_id}: full viewer and inspector./compare?left=...&right=...: synchronized seed-matched comparison./present/{replay_id}: clean presentation mode./api/v1/replays: read-only replay API.
Technical shape
| Layer | Implementation |
|---|---|
| Simulation | Python, NumPy, deterministic simultaneous-action core |
| RL interface | PettingZoo Parallel API and Gymnasium registration |
| Baselines | Shared-policy feed-forward PPO, recurrent PPO, legal random, scripted oracle |
| Training | TensorFlow actor-critic models, GAE, action masking, checkpoint selection |
| Evaluation | Frozen seed manifests, 15 achievements, geometric-mean score, bootstrap CIs |
| Replays | Versioned compressed artifacts, hashes, snapshots, conservation ledger |
| Viewer | FastAPI, React, TypeScript, Phaser, procedural pixel art |
The canonical benchmark is deliberately smaller than Voyager's older civilization sandbox.
The sandbox supports ten agents, targeted actions, transfers, spoilage, repair, and revival;
VoyagerIsland-v1 keeps only the mechanics needed to test one clear cooperative capability
chain.
Project status
The environment, frozen protocol, six official PPO runs, held-out evaluation, statistical export, scripted oracle, and curated Replay 2.3 collection are complete. The learned-rescue release gate failed: PPO progressed but did not beat the island.
The next release milestone is packaging rather than changing the result: publish large checkpoints and raw reproducibility artifacts, finish the technical report, and ship a clean installable research release. Future algorithms can then attack the measured gap without moving the benchmark.
For the full development history and failed experiments, see
docs/technical_report_progress_notes.md.
Scope and limitations
Voyager measures decentralized team capability acquisition under shared resource constraints. It does not yet establish emergent specialization, negotiation, human-like social intelligence, or cooperation with unfamiliar partners. Both agents are symmetric and can perform every action.
The official observation is structured rather than pixel-based. PPO and recurrent PPO are the only learned reference algorithms, uncertainty is estimated from three training seeds, and no learned baseline reaches rescue under the frozen one-million-transition budget.
Citation and license
Citation metadata is provided in CITATION.cff. Voyager is released under the
MIT License.
Metadata
Release files for voyager-island 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| voyager_island-0.1.0.tar.gz | 1.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| voyager_island-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.3 MB
Release files / voyager_island-0.1.0.tar.gz
| Download URL | voyager_island-0.1.0.tar.gz |
|---|---|
| Size | 1.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e397338c333032c1d76eedcd39ea5cc046243f55730056700676c23fbb5d8e2d
|
|
BLAKE2b-256 checksum How to use checksums |
1b051d8695e8aed1232606245454029a9fa168a3bcc094fa47eb9db48ad83770
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.
Transparency logRelease files / voyager_island-0.1.0-py3-none-any.whl
| Download URL | voyager_island-0.1.0-py3-none-any.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5afb997b64ee7d652ab1651b4b9e935d0f2a03a1feb387e94e468e15725f7c4d
|
|
BLAKE2b-256 checksum How to use checksums |
3b40aff216bd06ddbfe91a69c61a8e982ba4a862acc56ae2e15833825910542f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 19, 2026.
Transparency log