The client is hostile
Anything running on a player's machine can be read, patched or replayed. AXIOM never trusts a client-reported result — it recomputes the ones that carry value.
Platform Security for Roblox experiences
A server-authoritative protection layer for Roblox. AXIOM treats the client as untrusted, re-validates the state that matters, and scores what's left against how your players actually behave.
Design principles
AXIOM exists because our own games needed it. Every design decision follows from what actually breaks live Roblox experiences.
Anything running on a player's machine can be read, patched or replayed. AXIOM never trusts a client-reported result — it recomputes the ones that carry value.
Known-exploit lists lag behind the people writing exploits. Behavioural baselines catch the shape of cheating even when the specific tool is new.
A wrongly banned player is a lost player. Detections are graduated and every action carries the evidence that caused it, so appeals can be answered honestly.
How it works
Every guarded action passes the same pipeline before the server commits it.
Guarded remotes and state transitions are wrapped. Nothing reaches game logic unchecked.
Hard rules first — physics bounds, rate limits, ownership, payload shape and signing.
What passes is compared to the player's own baseline and the server population's.
Clear, warn, throttle, rollback, isolate or ban — per detection class, with the evidence attached.
-- ServerScriptService/AxiomBootstrap.server.luau
local Axiom = require(ServerStorage.Axiom)
Axiom:Init({
mode = "enforce", -- observe | enforce
telemetry = true,
appeals = true,
})
-- physics
Axiom:Watch("Movement", {
maxStudsPerSecond = 42,
maxVerticalDelta = 18,
toleranceFrames = 3,
onViolation = Axiom.Action.Rollback,
})
-- economy
Axiom:Watch("Economy", {
validate = function(player, delta)
return delta <= Ledger:Earned(player)
end,
-- contain first, confirm, then ban
onViolation = Axiom.Action.Isolate,
onConfirmed = Axiom.Action.Ban,
})
-- remotes
Axiom:Guard(ReplicatedStorage.Remotes, {
rateLimit = { calls = 12, perSeconds = 1 },
schema = true,
})
AXIOM ships as a server module. Start in observe mode to collect a fortnight of baselines without touching a single player, review what it would have done, then flip to enforce when the thresholds match your game.
Containment
A ban is a loud, permanent answer to a question you might still be getting wrong. When AXIOM flags suspicious activity, the player is quietly moved into an isolated instance instead of a public server — and everything they do there stops at the door.
Nothing. The isolated instance looks and plays like a normal server, so there's no obvious moment that tips them off and no reason to switch tactics or start a new account.
Bans are still used — for confirmed, serious violations. Containment is the safer first step that earns us the confidence to take one.
A cleared player loses nothing, because nothing they did in isolation was ever going to count.
Coverage
Detection classes are modular. Enable what your title needs and leave the rest dormant.
Speed, flight, noclip, teleport and gravity manipulation, checked against the server's own simulation bounds.
Currency and item grants reconciled against a server-side ledger. Duplication and injection fail closed.
Reach, fire rate, line of sight and damage magnitude re-derived on the server before a hit lands.
Rate limiting, schema validation and argument signing on every guarded RemoteEvent and RemoteFunction.
Per-player baselines across session length, input cadence and progression rate. Outliers surface for review.
Repeat-offender correlation and ban-evasion signals, weighted so shared households aren't punished.
Live enforcement log
RequestRewardBlockedPurchaseItemBlockedIllustrative sample. Live dashboards are available to licensed studios.
FAQ
Tell us about your experience and what you're seeing. We'll come back with a straight answer.