No description
  • Python 95%
  • Makefile 3.5%
  • Go Template 1.2%
  • Shell 0.3%
Find a file
Kai Siren 2cb98cecbe
Some checks are pending
TruffleHog / Scan for secrets (push) Waiting to run
chore(ci): remove codex-review-gate + undraft-and-poke-codex workflows
closes #30
2026-05-16 15:42:34 -07:00
.claude chore(lockdown): adopt agent-guard pre-tool-use delegate 2026-05-16 13:59:07 -07:00
.coily rename: update cross-repo refs after coilyco-ai to agentic-os-kai 2026-05-15 02:28:46 -07:00
.github/workflows chore(ci): remove codex-review-gate + undraft-and-poke-codex workflows 2026-05-16 15:42:34 -07:00
docs docs: strip 'Migrated from infrastructure' line per agentic-os-kai#574 2026-05-16 13:25:04 -07:00
eco_cycle_prep Migrate pyinvoke -> Makefile + coily 2026-05-09 17:03:59 -07:00
.gitignore chore: commit coily lockdown baseline, gitignore host-local Claude state 2026-04-24 15:42:33 -07:00
.pre-commit-config.yaml chore: trim README + AGENTS + FEATURES under cap 2026-05-16 00:07:57 -07:00
.python-version Initialize Python project with uv 2026-04-17 07:57:43 -07:00
AGENTS.md chore: trim README + AGENTS + FEATURES under cap 2026-05-16 00:07:57 -07:00
CLAUDE.md Convert CLAUDE.md symlink to @AGENTS.md import 2026-04-23 13:35:38 -07:00
Makefile lint: rewrite Makefile to target: ## desc shape for coily lint 2026-05-11 19:48:31 -07:00
pyproject.toml Migrate pyinvoke -> Makefile + coily 2026-05-09 17:03:59 -07:00
README.md chore: trim README + AGENTS + FEATURES under cap 2026-05-16 00:07:57 -07:00
uv.lock build(deps): bump urllib3 in the uv group across 1 directory (#11) 2026-05-13 11:41:53 -07:00

Eco by Strange Loop Games

Banner: Steam header for Eco by Strange Loop Games. Used here for attribution; not my artwork.

eco-cycle-prep

End-to-end tooling for preparing a fresh cycle on my Eco server, "Eco via Sirens". Map generation is one phase; the rest covers source sync, community-intel aggregation from Discord, config tuning, mod management, and the go-live announcements. Written as a set of an argparse CLI in Python (eco_cycle_prep/cli.py) driven by Makefile + coily, with string.Template markdown stubs for the two recurring announcement formats (the cross-server ad on the main Eco Discord, and the longer post on the Sirens #eco-configs channel).

The cycle workflow pulls the latest from the sibling config and mod repos, regenerates a Discord digest of recent community input, rolls candidate worldgen seeds against a checked-in WorldGenerator.eco, syncs mod code (including eco-mods-public) onto the game server, waits for the preview render, and posts announcements. Discord channel IDs and API tokens are resolved from AWS SSM at runtime.

This repo is part of a small family of public tooling around Eco, a multiplayer survival and simulation game. The official modkit lives at StrangeLoopGames/EcoModKit, modding docs are at docs.play.eco and wiki.play.eco/en/Modding, and Eco-DiscordLink/EcoDiscordPlugin is the canonical in-game to Discord chat relay.

About Eco

Eco is a multiplayer survival/simulation game by Strange Loop Games. Players collaborate to build a civilization on a shared procedurally generated planet and stop an incoming meteor, while an ecological simulation tracks the damage their extraction, pollution, and land use do to the biosphere. Kai's server, "Eco via Sirens", runs ~2-month cycles.

Commands

All dev verbs run through coily, declared in .coily/coily.yaml. Coily delegates to make targets, which call python -m eco_cycle_prep.cli <verb>. Run coily --list from inside this checkout to see every verb with its description.

  • coily prep --cycle=N — weekly prep: steamcmd update, git pulls on eco-configs + infrastructure, Discord digest of recent community input.
  • coily brief --cycle=N --days=D — cycle-13-style brief: full cycle-N channel history + last D days of suggestions + suggestions-forum.
  • coily forum-dump --days=D — standalone dump of the suggestions forum.
  • coily roll --cycle=N [--seed=S] — roll a single worldgen seed end-to-end: set + push to eco-configs, sync configs + reset storage on kai-server, wait for the preview to stabilize (streams journalctl -u eco-server while it boots), post the preview GIF to the current cycle channel. One roll per invocation; invoke again to roll the next seed.
  • coily mods-sync — clone eco-mods + eco-mods-public on kai-server and copy them into the Eco install. Lockdown-gated (Network.eco in git must carry the private/password-protected values).
  • coily mods-disable --names=A,B,C — rm mod folders from the server (ephemeral; prefer deleting from the eco-mods source repo).
  • coily ad --cycle=N --start-ts=UNIX_TS — emit the main Eco Discord ad and sync Network.eco's DetailedDescription.
  • coily sirens-post --cycle=N --start-ts=UNIX_TS — emit the Sirens #eco-configs channel post (longer, mod.io links).
  • coily go-live — cycle launch: copy-configs to kai-server, then edit Network.eco ON THE SERVER to set PublicServer=true + Password="", then restart. The git-tracked Network.eco always stays in its locked private state; going public is a runtime-only flip.

Templates for the two announcement formats live under eco_cycle_prep/templates/. Server-specific branding (summary, objective, location, code-mod descriptions) and per-cycle config bullets live under rolls/_prep/ (gitignored).

Setup

uv sync

SSM parameters required (see agentic-os-kai/AGENTS.md for the full inventory): /eco/server-id, /sirens-echo/discord-bot-token, /discord/server-id, /discord/server-ad-invite, /discord/channel/{cycle-current,eco-configs,suggestions,suggestions-forum}, /modio/api-key.

See also

Cross-reference convention from coilysiren/agentic-os#59.