Skip to content

feat(satisfactory): adopt the satisfactory HTTPS console protocol - #30

Merged
ValgulNecron merged 1 commit into
mainfrom
feat/satisfactory-api
Jul 15, 2026
Merged

ValgulNecron merged 1 commit into
mainfrom
feat/satisfactory-api

Conversation

@ValgulNecron

Copy link
Copy Markdown
Collaborator

Gameplane's agent now speaks Satisfactory's HTTPS function API (ValgulNecron/Gameplane#144), so the game gets a Console tab and quick actions where it had neither.

One honest caveat, documented in the template header. Unlike every other game here, Satisfactory's admin password is not a server-config value the operator can inject — it only exists after a human claims the server in-game, and the wolveix/satisfactory-server image exposes no env var or file to preseed it (verified: its full env table has no admin-password knob). So this uses rcon.passwordFile:

  1. Claim the server in-game and set an admin password.
  2. Write that password into /config/gameplane/rcon-admin-password (exact kubectl exec is in the template header).

The agent reads that file on each connection and logs in. Until it exists, the Console reports an auth failure — expected, not a bug, and stated as such in the header.

No capabilities.players: the API exposes a player count (QueryServerState) but no way to enumerate names or IDs, so a players tab couldn't populate and moderation couldn't target anyone. Left unset rather than shipping something that can't work — same principle as DayZ's kick/ban.

Also teaches validate.py the satisfactory protocol (its allowlist is what stops a module shipping a console that can't connect).

🤖 Generated with Claude Code

Gameplane's agent now speaks Satisfactory's HTTPS function API, so the
game gets a Console tab and quick actions where before it had neither.

One honest caveat, documented in the template header: Satisfactory's
admin password is not a server-config value the operator can inject — it
only exists after a human claims the server in-game, and the wolveix
image exposes no env var or file to preseed it. So this uses
rcon.passwordFile: the admin claims the server once, then writes the
password they set into /config/gameplane/rcon-admin-password (exact
kubectl exec in the header). The agent reads it on each connection. Until
that file exists, the Console reports an auth failure — expected, not a
bug.

No capabilities.players: the API exposes a player count but no way to
list names or IDs, so a players tab couldn't populate and moderation
couldn't target anyone. Left unset rather than shipping something broken.

Also teaches validate.py the satisfactory protocol.

Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com>
@ValgulNecron
ValgulNecron merged commit c5d37fd into main Jul 15, 2026
1 check passed
@ValgulNecron
ValgulNecron deleted the feat/satisfactory-api branch July 15, 2026 17:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant