Skip to content

Introduction

ChloeKernel is a Roblox game framework with an OS-style kernel and privileged server drivers, shipped as a workspace that people and coding agents build games in.

ChloeKernel is two things in one repository. The first is a Roblox game framework: a genre-agnostic kernel (scheduler, processes, services, IPC, hooks) plus server-side drivers for networking, persistence, replication, anti-exploit and commerce, with genre kits built on top. The second is a workspace for building one game on that framework. Game code lives in the Game folders under src/, the Bootstraps load it between kernel boot and start, AGENTS.md holds the rules, and python tools/check.py runs every gate CI runs. The kernel itself contains no game rules. Game code registers services and talks to the rest of the system through kernel primitives.

These docs describe v0.9.1 plus the fixes on main (commit 7afccc1, 2026-09-30) listed as Unreleased in the changelog. Start with Getting started to boot it, then Core concepts for the model everything else assumes.

The OS vocabulary maps onto real modules:

OS concept ChloeKernel equivalent
Kernel One Kernel per machine. The server and each client boot their own.
Processes Coroutines with PIDs, lifecycle states and exit signals, stepped by the scheduler
Scheduler Five priority queues drained under a per-frame budget, plus a deadline heap for timers
System calls Network intents, admitted only through fail-closed validation chains
IPC Topic pub/sub (the Bus) and typed signals
Drivers NetDriver, DataDriver, ReplicaService, AntiExploit, Commerce: server-side and privileged
Userspace The game’s services, controllers, components and screens in src/*/Game
  • Work that runs under a frame budget and sleeps when there is nothing to do. The Scheduler drains priority queues under a budget, keeps timers in a deadline heap, and disconnects from the frame when idle. Framework systems start their jobs on the first piece of work and stop on the last, as described in Event-driven execution.
  • Server-authoritative networking. Clients send intents, never state. Every game channel is declared once in Game.Channels through the Registry, and every client-to-server payload passes a rate limit and a fail-closed hook chain. A validator that throws rejects the payload, and a channel with no validator and no Open = true rejects everything.
  • Player data that fails closed. DataDriver holds a session lock per profile, hands it between servers when a player rejoins quickly (lock handoff), restores corrupt records from Roblox’s version history, and refuses a save it could not read back. A failed load kicks the player instead of substituting defaults, because defaults overwriting a real record is how data wipes happen.
  • Purchases and compliance. Receipts saves a developer product grant before it acknowledges the purchase and keeps a ledger that stops a second grant. Passes tracks game pass ownership, Transactions runs two-profile trades through a durable journal, and Policy, TextFilter and Consequences cover PolicyService rules, text filtering and bans.
  • Genre kits for weapons, melee, spells, movement abilities, inventory, loot, crafting, shops, quests, rounds, teams, parties, NPCs and dialogue. Each one validates on the server and is configured through its config table, hooks and Bus topics.
  • A client and media stack: input, animation and IK, audio, bone physics, automatic hair rigging, voxel dissolve and VFX timelines, scaled per device by DeviceBench.
  • A workspace built for coding agents. AGENTS.md is the rulebook, tools/scaffold.py generates services, controllers, screens and components in one shape, the directive linter rejects polling loops, raw remotes and deprecated engine APIs, and a pinned Engine API reference answers API questions offline. See the Workspace overview.
  • Tests on every Play. Pressing Play in Studio runs the framework’s spec gate before the kernel boots: 1,244 specs at v0.9.1 with the Unreleased fixes. CI runs isolated regression runners on top. Features Studio cannot fully exercise (DataStores across servers, teleports, real purchases) carry a status note that says what the specs prove and what still needs a published place.

The client is a renderer with opinions. Everything privileged lives in ServerScriptService, which never replicates, so no client can read it. Nothing the client sends is trusted: intents are rate limited per player and per channel, decoded against a fixed schema, and validated by fail-closed hook chains against server state, and hits are checked server-side against rewound positions. Client code is always readable by exploiters, so the defense is never trusting it. Hiding it would add nothing. The full model is in Architecture and security.

  • Getting started installs the toolchain, syncs the project into Studio and boots both kernels.
  • Core concepts is the short model: kernel, services, sessions, hooks, the Bus, scopes and the close phase. Read it before anything else.
  • Workspace explains the Game layer: channels, services and controllers, components, screens, scaffolding and the agent workflow.
  • Foundations covers the design decisions that cut across modules: security, project layout, event-driven execution, StreamingEnabled, performance and benchmarks.
  • The Cookbook is task-first (“save player data”, “validate hits”) with complete examples that link into the module pages.
  • Kernel, Networking, Data, Commerce, Security and compliance, Gameplay systems, Kits, and Client and media go module by module: internals, API tables, hooks and Bus topics, and sharp edges.
  • Tooling covers tools/check.py, the directive linter, TestKit, the regression runners, debug panels and releases.
  • The System map shows how the modules connect. Ctrl+K (or /) opens search over every page, section and API member.

ChloeKernel v0.9.1. Access to the framework is private and granted individually by Chloe. Games built with it credit CryptedChloes in their description.