Issues and pull requests are very welcome.
Whether you're fixing a typo, shipping a new map, or rewiring the runtime — thank you.
| 🐛 Report a bug | Open an issue with reproduction steps, screenshots, and the output of ./scripts/god.sh status. |
| 💡 Propose a feature | Open an issue first. A short description + a one-paragraph use case is enough. |
| 🗺️ Add a new map | Drop a folder under agentsociety/custom/maps/<your_map_id>/ and follow docs/MAP_PACKAGES.md. PRs welcome. |
| 🧪 Add a new experiment | Drop a folder under agentsociety/quick_experiments/<your_hypothesis>/<your_experiment>/. See hypothesis_god_town/experiment_1/ as the reference shape. |
| ✏️ Improve docs | Fix translations, polish wording, add screenshots, add diagrams. |
| 🔌 Wire in a runtime | Adapter PRs for new LLM runtimes or persona templates are very welcome — see agentsociety/custom/agents/. |
git clone https://github.com/XiaoLuoLYG/GOD.git
cd GOD
./scripts/god.sh startThat installs Python and Node dependencies, brings up the full stack, creates a live session, and runs the first step so the control room opens on a populated town. From there, edit and reload.
Useful day-to-day commands:
./scripts/god.sh restart # stop everything cleanly, then start again
./scripts/god.sh new-run # wipe replay data and start a fresh session
./scripts/god.sh status # check ports, URLs, model status
./scripts/god.sh tail # follow logs
./scripts/god.sh stop # stop everything-
Fork the repo and create a topic branch off
main. -
Keep PRs small and focused — one logical change per PR.
-
Run the validators you've touched:
# If you changed a map package cd agentsociety uv run python scripts/validate_map_package.py custom/maps/<map_id> # If you changed Python services cd agentsociety/packages/agentsociety2 uv run pytest
-
Open the PR against
main. Describe what changed and why in the body. Screenshots and short clips go a long way for UI changes. -
Be patient — the reviewer might be in another time zone.
- Python: 4-space indent, type hints where they help, no unused imports. We don't enforce a single formatter yet; match the surrounding code.
- TypeScript / React: match the surrounding component style.
- Line width: keep lines under 120 characters where reasonable.
- No forward declarations (per project rule).
- Comments should explain non-obvious intent, not narrate the code.
- Commits: present tense, short subject (~60 chars), longer body if needed.
- Docs: when you change a Markdown doc with both
.mdand.zh-CN.md, update both. Use idiomatic English and Chinese — not literal translations.
- Folder named
agentsociety/custom/maps/<map_id>/ -
map.yaml,README.md,ATTRIBUTION.mdpresent - Tiled JSON has a
Collisionslayer - All tileset images resolve inside the package folder
-
uv run python scripts/validate_map_package.py custom/maps/<map_id>passes - At least one screenshot in the PR description
- Folder under
agentsociety/quick_experiments/<hypothesis>/<experiment>/ -
README.md(English) +README.zh-CN.md(Chinese) -
init/init_config.json+init/steps.yaml - A
run.shthat boots the experiment via the AgentSociety CLI - Manual run notes if there's an operator script (see PKU Trump experiment for the pattern)
By contributing to GOD you agree that your contributions will be licensed under
the Apache License 2.0. Upstream LICENSE and NOTICE files are kept
inside the integrated runtime checkouts (agentsociety/, jiuwenclaw/) and
apply to those subtrees.
GOD is a small open-source project. Be patient, be specific, and give the kind of feedback you'd want to receive. We're here to build a town of agents — and hopefully a small, warm community of humans around it.
Thank you for making GOD better. ⭐