LegacyShell WikiLegacyShell Wiki
Back to LegacyShell
Home
Wiki
Plugins
Docs
Back to LegacyShell
Home
Wiki
Plugins
Docs
  • Documentation

    • Getting Started

      • What is LegacyShell?
      • Speed Setup
      • Requirements
      • Installation
      • First Run
      • Config Files
      • Making an Account
      • Troubleshooting (Getting Started)
    • Running a Server

      • Architecture Overview
      • The Database
      • Users and Ranks
      • Adding Game Servers
      • Client Mirrors
      • Perpetual
      • Backups
      • Rate Limiting
      • Moderation
      • Closed Mode
      • Deployment
      • Troubleshooting (Running a Server)
      • Hosting for Someone Else's Instance
    • Content Creation

      • Maps
      • Dealing with Babylon Models
      • Map Blocks
      • Items and Skins
      • Hats and Stamps
      • Sounds
      • Gamemodes
      • Seasonal Events
    • Plugin Development

      • Quickstart
      • I Want To...
      • Anatomy of a Plugin
      • Lifecycle
      • Dependencies
      • Events (Concept)
      • Event Reference

        • services: events
        • game: events — shared logic (src/shell/)
        • game: events — main-thread server process
        • game: events — per-connection client object
        • game: events — room lifecycle & tick loop
        • game: events — in-browser gameplay
        • client: events — client server & build pipeline
      • Commands
      • Client-Side Code
      • Static Assets
      • Content Packs
      • Networking
      • Workers and State
      • Prediction and Authority
      • Recipes

        • Recipe: Killstreaks
        • Recipe: New Pickup Item
        • Recipe: New Gamemode
        • Recipe: Custom Weapon
        • Recipe: UI Modification
        • Recipe: Discord Integration
        • Recipe: Replacing Core Behaviour
        • Recipe: Persistent Plugin Storage
        • Recipe: Rewarding Players with Currency
        • Recipe: Custom Per-Player Data
        • Recipe: Custom Theme
      • Publishing
      • Pitfalls
      • Modifiers
      • Sound and Apollo
    • Codebase Reference

      • Repo Layout
      • Shared Shell Layer
      • Server-Only Markers
      • The ss Object
      • Build Pipeline
      • Stamps and Babylons
      • Game Loop
      • Rooms and Workers
      • Wire Protocol
      • Generated

        • Wire Protocol Opcodes
        • Enums & Lookup Tables
        • Database Schema
        • Config Reference
        • Slash Command Reference
      • Services Internals
      • Catalog and Items
      • Permissions Internals
      • Physics and Collision
      • Known Quirks
      • Codebase Anecdotes
      • Development Timeline
    • Contributing

      • Documentation Style Guide
      • Generators
      • For AI Agents

Config Files

Audience: Total newbies · Prereqs: Installation

Canonical source: src/shell/general/misc.js (instantiateSS), src/defaultconfig/*.yaml

Where settings live

Two folders matter:

  • src/defaultconfig/ - the template defaults, checked into git. You never edit these directly.
  • store/config/ - your actual, personal settings, created by npm run init as a copy of the defaults (see Installation). This folder is not checked into git - it's yours, and it's safe to edit.

Every server merges store/config/<file>.yaml over src/defaultconfig/<file>.yaml at startup: anything you've changed in your copy wins, anything you haven't touched falls back to the shipped default. There's also a special all.yaml whose contents get merged into every server's top-level config, regardless of which role reads it.

You edit files in store/config/, then restart the affected server(s) for changes to take effect - config isn't hot-reloaded.

The eight config files

FileAffectsWhat's in it
all.yamlAll three serversJust two global toggles: verbose and devlogs logging.
services.yamlServices onlyPort, password hashing cost, session lifetime, rate limits, backup schedule, feedback webhook.
game.yamlGame onlyPort, which services server to sync with, your auth_key.
client.yamlClient onlyPort, which services server to sync with, site URL, optional HTTP login gate.
distributed_all.yamlAll (via services)Settings services pushes out to every connected server - see Running a Server for the distributed-deployment case.
distributed_client.yamlClient (via services)Client-specific settings pushed the same way.
distributed_permissions.yamlGame (via services)Rank names and numeric levels, and per-command permission overrides - see Users and Ranks.
perpetual_all.yamlThe process managerAuto-restart schedule, git auto-pull, Discord webhook alerts - see Perpetual.

The "distributed" files are a bit different from the rest: they live in store/config/ like everything else, but they're read by the services server and pushed out live to every game/client server that connects to it, rather than each server reading its own local copy in isolation. That's how a whole fleet of servers stays configured consistently from one place. For a single local instance this distinction doesn't matter much - just know that changing a distributed_*.yaml file only takes effect after restarting services, not just the server you'd naively expect.

The two you'll touch first

store/config/all.yaml - the two logging toggles npm run init asked you about:

verbose: false   # loads of more logs?
devlogs: false   # even more logs in the browser console

store/config/game.yaml - where your game server's identity lives:

port: 13372
services_server: "ws://localhost:13371"
auth_key: "..."   # filled in automatically by npm run init, if you said yes to the auth-server prompt

If npm run init didn't fill in auth_key for you (you said no to that prompt, or ran init before setting up a database), see Adding Game Servers to do it manually.

Every setting is commented

Every default config file has an inline comment above each setting explaining what it does - src/defaultconfig/*.yaml is genuinely worth just reading through once, since it's the most up-to-date reference and this page deliberately doesn't repeat every single option here (to avoid this page silently going stale as new options get added).

Next: Making an Account.


This page was drafted with AI assistance and reviewed for accuracy. If something looks wrong, please open a PR or flag it.

Edit this page on GitHub
Prev
First Run
Next
Making an Account