Settings
Four ways to change the same thing, one file per module, and no restart.
This page is older than Keystone 0.2.8, released 18 October 2026. Something may have changed since.
On this page 6 parts
Settings
Four doors, one room
#Every setting can be changed four ways, and they all write through the same door:
- the editor —
/keystone panel, the Settings screen, - the console —
/keystone set <name> <value>, - the file —
config/keystone/<module>.toml, - the local API — for your own tooling.
Saving applies immediately. Nothing here needs a restart and nobody gets kicked.
Where they live
#One file per module, under config/keystone/:
| File | What it holds |
|---|---|
keystone.toml |
The mod itself: debug logging, masked commands, the local API's address and port, language ([language]), chat ([chat]) and error tracking ([errors]). |
discord.toml |
The bridge: token, server, channels, linking, bans, console mirror, alerts, the server's state. |
operations.toml |
Restarts, backups, cleanups, notices, the screens people see when they are kicked or the server is closed. |
progress.toml |
Ranks earned by playtime. |
votes.toml |
The vote listener, which votes count, rewards, streaks and party goals. |
crates.toml |
Daily crates: keys, odds, rewards and items with a look of their own. Off until an owner writes enabled = true. |
territory.toml |
Claims from FTB Chunks: bonuses by rank and time, /fly. |
essentials.toml |
/spawn, warps, homes, /rtp, /tpa, /back and /vanish. |
tickets.toml |
Kinds of ticket, how many at once, cooldown. |
accounts.toml |
How somebody proves an account is theirs on an offline server. |
skins.toml |
Real skins on an offline server. |
moderation.toml |
Bans, and whether the game's own /ban and /kick write here. |
tablist.toml |
What the tab list shows. |
bench.toml |
The load test and what it shares. |
assistant.toml |
The in-game assistant's model. |
Translations live beside them, in config/keystone/lang/<code>.properties (see A player's language).
Every file is written with its own comments in it. The file is the reference —
what a setting means is written next to the setting, not in a table somebody has
to keep in step. A module that is off still shows its settings (under a note that
it is off), so they can be prepared before it goes on; operations, moderation,
skins, the tab list and the assistant are the exception and show only enabled
while off.
A name is the whole path
#/keystone set bench.radius 512 — the module, then the setting, with dots for
sections. discord.link.required-to-join, operations.restart.when,
operations.clean.over-entities, bench.share-live. A short name without the
module is not something the console knows, and it answers with the nearest
things that do exist. The editor shows the same names, so a thing somebody tells
you to change is a thing you can type.
/keystone set <name> with no value says what it is now; /keystone set on its
own lists everything.
The trap: a default that moved
#A changed default does not reach a server that already stored the old value.
Once a setting is written into the file it is that server's answer, and a later
version of Keystone shipping a better default changes nothing for it. That cost
us two bad measurements on 6 September 2026: bench.radius stayed at 256 on a
server whose default had moved, and nobody noticed until the numbers came back
wrong.
If you are following advice that says "the default is now X", check what your own file says before believing it.
Putting one back
#keystone set history
keystone set undo <number>
Every change is recorded with who made it, from where, and what the value was before. A secret's old value is never kept — the history says it was replaced.
What is never written down
#Secrets are values like any other and go in the same files, which is why
config/keystone/ belongs in your backups and not in a public repository.
Keystone masks its own sensitive commands out of logs, consoles and audit lines;
keystone.mask-commands adds another mod's, if it has one that takes a password.
Did this page help?
Opens the feedback panel with this page attached. It lands in the same queue as everything else.