YAML source-of-truth for Factorio mod-list / player-data / *.json server config #60

Open
opened 2026-05-23 20:54:04 +00:00 by coilysiren · 0 comments
Owner

Originally filed by @coilysiren on 2026-05-03T22:29:04Z - https://github.com/coilysiren/coily/issues/44

Tracking idea raised while reviewing #43.

Idea

The Factorio dedicated server consumes a handful of JSON files under <server_dir>:

  • mods/mod-list.json
  • server-whitelist.json / server-banlist.json / server-adminlist.json
  • player-data.json (auth + per-player state)
  • server-settings.json

These are awkward to hand-edit as JSON (no comments, easy to break with a missing comma) and Kai already keeps the equivalent for other game servers in an infra git repo.

Proposal: the source-of-truth in the infra repo is YAML, and the deploy step renders it to JSON on kai-server in the shape Factorio expects. Coily / scripts continue to read the JSON; the YAML never reaches the running server.

Why this issue probably doesn't live here long-term

This is mostly an infrastructure repo concern, not a coily concern. The coily side is already forward-compatible — coily gaming factorio mods sync (added in #43) operates on mod-list.json regardless of how it got there. The YAML→JSON render step belongs next to factorio-server-pre.sh / factorio-backup.sh / etc.

Filing here as a placeholder per the conversation in #43; expected to migrate to whichever repo owns the deploy scripts once that's settled.

Out of scope for #43

#43 ships the sync verb against the existing JSON on disk. No coily-side change is needed to adopt the YAML render later — coily just keeps reading mod-list.json after the render step has produced it.

Open questions to resolve before implementing

  • Which repo owns the YAML manifests? (infrastructure/? a new factorio-config/?)
  • Single render script, or per-file (one for mod-list, one for player-data, etc.)?
  • Do we want a coily gaming factorio config render verb that runs the render on kai-server (parity with update / mods sync), or is that strictly a deploy-pipeline concern?
  • How are secrets in player-data.json (service-token) handled — does the YAML reference SSM / a secret store, or stay in plaintext on kai-server like today?

Linked: #43.

_Originally filed by @coilysiren on 2026-05-03T22:29:04Z - [https://github.com/coilysiren/coily/issues/44](https://github.com/coilysiren/coily/issues/44)_ Tracking idea raised while reviewing #43. ## Idea The Factorio dedicated server consumes a handful of JSON files under `<server_dir>`: - `mods/mod-list.json` - `server-whitelist.json` / `server-banlist.json` / `server-adminlist.json` - `player-data.json` (auth + per-player state) - `server-settings.json` These are awkward to hand-edit as JSON (no comments, easy to break with a missing comma) and Kai already keeps the equivalent for other game servers in an infra git repo. Proposal: the source-of-truth in the infra repo is **YAML**, and the deploy step renders it to JSON on kai-server in the shape Factorio expects. Coily / scripts continue to read the JSON; the YAML never reaches the running server. ## Why this issue probably doesn't live here long-term This is mostly an **infrastructure repo** concern, not a coily concern. The coily side is already forward-compatible — `coily gaming factorio mods sync` (added in #43) operates on `mod-list.json` regardless of how it got there. The YAML→JSON render step belongs next to `factorio-server-pre.sh` / `factorio-backup.sh` / etc. Filing here as a placeholder per the conversation in #43; expected to migrate to whichever repo owns the deploy scripts once that's settled. ## Out of scope for #43 #43 ships the sync verb against the existing JSON on disk. No coily-side change is needed to adopt the YAML render later — coily just keeps reading `mod-list.json` after the render step has produced it. ## Open questions to resolve before implementing - Which repo owns the YAML manifests? (`infrastructure/`? a new `factorio-config/`?) - Single render script, or per-file (one for mod-list, one for player-data, etc.)? - Do we want a `coily gaming factorio config render` verb that runs the render on kai-server (parity with `update` / `mods sync`), or is that strictly a deploy-pipeline concern? - How are secrets in `player-data.json` (`service-token`) handled — does the YAML reference SSM / a secret store, or stay in plaintext on kai-server like today? Linked: #43.
coilysiren added
P4
and removed
P3
labels 2026-05-31 06:59:47 +00:00
Sign in to join this conversation.
No labels
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-bridge/coily#60
No description provided.