A guild is your faction: it gives you a reactor to infuse, a substation to draw power from, a market to sell into, a token to mint, and allies (or moderators). For a new player, which guild you join is one of your most consequential early choices — it shapes your power source, your economy, and who has your back. This skill covers choosing/joining, running a guild, ranks/permissions, identity moderation, and the Central Bank.
Conventions (TX_FLAGS, -- rule, charge bar, one-tx-at-a-time) are in conventions.md.
Choosing a guild (beginner) — evaluate candidates on:
structsd query structs reactor [id]).joinInfusionMinimum you must meet (or get an invite to bypass).guild-all then inspect members; an active guild means a working market and defenders.knowledge/lore/factions and your standing-orders. Joining a guild at war inherits its enemies.A guild is rarely a trap, but its moderators gain reach into your name/pfp while you’re a member (see UGC below). If you dislike a policy, you can leave.
Creating a guild (advanced) requires PermReactorGuildCreate (524288) on a reactor and PermSubstationConnection (1024) on the entry substation — it’s an infrastructure commitment, not a name change. Decisions live in playbooks/phases/mid-game and playbooks/situations/guild-war.
Numeric ranks, lower number = higher privilege:
| Rank | Meaning |
|---|---|
| 1 | Maximum (guild creator) |
| 2–100 | Custom ranks assigned by leadership |
| 101 | Default on join |
| 0 | Unset |
A player can only modify members whose rank is strictly worse (higher number) than their own. Rank-permissions (granting a permission to everyone at/above a rank) are the scalable way to delegate — see structs-permissions.
structsd query structs guild-all, then guild [id] and reactor [id] for the candidates.structsd tx structs guild-membership-join TX_FLAGS -- [guild-id] [infusion-id,...]
You get the default entry rank (101). Flows: invite (guild-membership-invite → invitee ...-invite-approve/-deny), request (guild-membership-request → owner ...-request-approve/-deny), proxy (a guild signs you in: guild-membership-join-proxy -- [address] [proof-pubkey] [proof-signature], with optional --substation-id, --player-name, --player-pfp, --player-pfp-client-render-attributes).
player-update-guild-rank TX_FLAGS -- [player-id] [rank] (needs PermAdmin or rank authority); guild-update-entry-rank TX_FLAGS -- [rank] (new rank ≥ your own).guild-membership-kick -- [guild-id] [player-id]; invite/request approve/deny/revoke as above.guild-update-endpoint, guild-update-entry-substation-id, guild-update-join-infusion-minimum (+ -by-invite/-by-request), guild-update-owner-id (Tier 2 — transfers the guild).Structs has no global moderator — each guild sets its own name/pfp standards for member-owned objects, and the chain emits an audit event on every override. Grant moderation by rank (recommended) or per player:
# Members at rank 5 or better can moderate guild-mate UGC
structsd tx structs permission-guild-rank-set TX_FLAGS -- [guild-id] [guild-id] 16777216 5
# Or a single moderator on the guild object
structsd tx structs permission-grant-on-object TX_FLAGS -- [guild-id] [moderator-player-id] 16777216
Perform a moderation: player-update-name/player-update-pfp/planet-update-name/substation-update-name/substation-update-pfp TX_FLAGS -- [target-id] "value". When the actor isn’t the owner, the chain emits ugc_moderated (actor, target, field, old/new) — audit it. Note pfpClientRenderAttributes is owner-only and not guild-moderatable. Full philosophy + validation: knowledge/mechanics/ugc-moderation.
guild-bank-mint TX_FLAGS -- [alpha-amount] [token-amount] (signer’s guild implicit; raw integers; ratio captured at action time).guild-bank-redeem TX_FLAGS -- [guild-id] [amount].guild-bank-confiscate-and-burn TX_FLAGS -- [guild-id] [address] [amount] — usually rank revocation is enough.Mint/redeem are Tier 1 within your standing-order caps, Tier 2 above. Economics: knowledge/economy/guild-banking.
| Action | Command |
|---|---|
| Create | structsd tx structs guild-create TX_FLAGS -- [reactor-id] [endpoint] [entry-substation-id] |
| Join / proxy | structsd tx structs guild-membership-join \| guild-membership-join-proxy TX_FLAGS -- ... |
| Invite / request (+approve/deny/revoke) | structsd tx structs guild-membership-invite \| -request \| ...-approve \| ...-deny TX_FLAGS -- ... |
| Kick | structsd tx structs guild-membership-kick TX_FLAGS -- [guild-id] [player-id] |
| Update rank / entry rank | structsd tx structs player-update-guild-rank \| guild-update-entry-rank TX_FLAGS -- ... |
| Settings | structsd tx structs guild-update-endpoint \| -entry-substation-id \| -join-infusion-minimum \| -owner-id TX_FLAGS -- ... |
| Guild UGC | structsd tx structs guild-update-name \| guild-update-pfp TX_FLAGS -- [guild-id] [value] |
| Moderate member/object | structsd tx structs player-update-name \| ...-pfp \| planet-update-name \| substation-update-name \| -pfp TX_FLAGS -- [target-id] [value] |
| Bank mint / redeem / confiscate | structsd tx structs guild-bank-mint \| guild-bank-redeem \| guild-bank-confiscate-and-burn TX_FLAGS -- ... |
| Guild rank permission set/revoke | structsd tx structs permission-guild-rank-set \| permission-guild-rank-revoke TX_FLAGS -- [object-id] [guild-id] [permission] [rank] |
TX_FLAGS per conventions.md. Requires structsd on PATH and a signing key.
structsd query structs guild [id] — members, settings, owner.guild-membership-application-all — pending invites/requests.guild-bank-collateral-address [guild-id] — reserves.guild-rank-permission-by-object-and-guild [object-id] [guild-id] — rank-based access.joinInfusionMinimum or get an invite (bypasses it).