tikron
infrastructure for games

Server-authoritative multiplayer for web games — on the edge, in minutes.

A source-available SDK (Tikron License 1.0) you deploy to your own Cloudflare account in minutes — the free tier works, no lock-in. One Durable Object per room, placed near the player who creates it — or a region you choose — on Cloudflare's global network (330+ cities). State lives on the server, clients send intents, reconnection is built in.

Built so AI coding agents ship multiplayer games in one session.

measured, not marketing
85 ms
p50 — full 20-player AOI room, deployed
128 CCU
across 8 rooms — p50 82 ms
100 CCU
one FPS room, deployed — zero drops
≈77 B/s
idle turn-based room per client

Latency measured end-to-end from a residential connection in Korea — includes ~80 ms of network RTT to the assigned edge; the engine itself adds single-digit milliseconds. Full methodology in docs/PERF.md.

why Tikron

Server authority

The server owns state and validates every payload, so cheating by packet forgery isn't a thing you bolt on later. Interest management (AOI) sends each client only what it can see — anti-wallhack by construction.

Edge rooms

Each room is its own Durable Object, spun up on demand near the player who creates it — or pinned to a region with a matchmake hint. Rooms scale horizontally, and state-preserving reconnection is built into the core.

AI-first DX

Genre presets pick your netcode in one decision. An in-repo AGENTS.md and llms.txt make a coding agent productive in one context window — npx create-tikron and go.

quickstart

Scaffold, install, deploy

# 1. scaffold a game (SDK from npm)
npx create-tikron my-game
cd my-game && npm install

# 2. log in to Cloudflare (free tier works)
npx wrangler login

# 3. ship it to the edge — your account, your game
npm run deploy

A whole realtime room

import { CasualRealtimeRoom, type Client } from "@tikron/server";

interface State { cursors: Record<string, { x: number; y: number }> }

export class Board extends CasualRealtimeRoom<State> {
  onCreate() {
    this.setState({ cursors: {} });
    this.onMessage("move", (c, p) => {
      const me = this.state.cursors[c.id];
      if (!me || typeof p?.x !== "number" || typeof p?.y !== "number") return;
      me.x = p.x; me.y = p.y;
      this.markStateChanged();   // synced to everyone
    });
  }
  onJoin(c: Client) { this.state.cursors[c.id] = { x: 0, y: 0 }; this.markStateChanged(); }
  onSeatExpired(c: Client) { delete this.state.cursors[c.id]; this.markStateChanged(); }
}
pricing

Tikron is open core: the SDK runs on your own Cloudflare account (you self-host the rooms). Optional hosted services add leaderboards and a usage dashboard, keyed by API key.

Source-available (Tikron License)
$0
  • The SDK + templates, Tikron License 1.0 (Apache-2.0 in 1 year)
  • Self-hosted on your Cloudflare account
  • Unlimited rooms & players — your infra, your bill
  • Get the repo
Scale
Custom
  • Higher hosted-service caps
  • Priority support
  • Contact us

A room-hour = one live room for one hour; rooms with no players cost nothing. Self-hosted rooms bill to your Cloudflare account — roughly ~$0.006 per room-hour at Cloudflare's own Durable Object pricing (approximate).

limits & roadmap

What Tikron does and doesn't do today — so you can decide before you commit.

Full detail: AGENTS.md → Limits & roadmap.