norelat
v1.0.0
Published
nore.lat anti-cheat & moderation SDK for roblox-ts (Flamework-friendly). Connects your game to your nore.lat dashboard with a license key.
Maintainers
Readme
norelat
nore.lat anti-cheat & moderation SDK for roblox-ts — Flamework-friendly.
It's a thin connector: it streams telemetry + heartbeats to your dashboard,
sends up the violations you report, and enacts kicks from the dashboard. It
holds no detection logic — keep your anti-cheat checks in your own server
code and call Nore.report(...) from them.
Install
npm install norelat
npx norelat initinit asks for your license key (Dashboard → Network), verifies it against
the server, drops the SDK into src/shared/nore/, and writes a git-ignored
nore.config.ts with your key.
Use (Flamework)
import { OnStart, Service } from "@flamework/core";
import Nore from "shared/nore/NoreSDK";
import { NORE_LICENSE_KEY } from "shared/nore/nore.config";
@Service()
export class AntiCheat implements OnStart {
onStart() {
Nore.start({ licenseKey: NORE_LICENSE_KEY });
}
}Then, from your own checks:
Nore.report(player, "Speed hack"); // flag
Nore.kick(player, "Fly exploit"); // kick + recordServer-only. Enable Game Settings → Security → Allow HTTP Requests.
Device reporting (optional)
To show each player's device in the dashboard, add a client controller that reports the platform once on join:
// src/client/nore.client.ts
import { UserInputService, GuiService, ReplicatedStorage, Workspace } from "@rbxts/services";
const remote = ReplicatedStorage.WaitForChild("NoreDeviceReport", 30) as RemoteEvent | undefined;
if (remote) {
const uis = UserInputService;
let device = "Desktop";
if (uis.VREnabled) device = "VR";
else if (GuiService.IsTenFootInterface()) device = "Console";
else if (uis.TouchEnabled && !uis.MouseEnabled) {
const w = Workspace.CurrentCamera?.ViewportSize.X ?? 0;
device = w >= 1024 ? "Tablet" : "Mobile";
}
remote.FireServer(device);
}Config
| Option | Default | Notes |
| ------------------- | ------------------ | ---------------------------------- |
| licenseKey | — | required (apiKey also accepted) |
| baseUrl | https://nore.lat | override for self-host |
| telemetryInterval | 30 | seconds between heartbeats (min 5) |
| autoKick | true | enact dashboard kicks |
CLI
npx norelat init --key nore_live_xxx --path src/shared/nore
NORE_API_URL=... NORE_CDN_URL=... # override endpoints (self-host)