A phone turned sideways with game controller buttons — the core poketsticks concept
Now open for signups

Instant phone controllers
for indie games

Turn any phone into a game controller in under 2 seconds. Stop building and maintaining networking infrastructure — spend that time on your game instead.

<20ms latency Up to 32 players Scan to play No app install

Drop in a controller. Ship.

Pick one — buzzer, drawing pad, steering wheel — and handle inputs.

Your Unity / Swift game — that's literally it
let room = try await Beacon.host(controllerTemplate: "trivia-buzzer")

room.onPlayerJoined { player in
    print("\(player.name) joined with buzzer ready")
}

room.onControllerInput { player, input in
    // Player pressed their buzzer, drew something, moved a slider, etc.
    handlePlayerAction(player: player, input: input)
}

Unity SDK (primary, Asset Store distribution), Unreal, native iOS / Android TV / macOS / Windows, and plain WebSocket for everything else.

Ready-made controllers

Ship on day one with production-ready controllers — or open the no-code designer and drag-and-drop your own. Users scan a QR Code from within your game or app, and instantly pull up a controller configured to your game and connect - no app download necessary.

Game Controller

D-pad, buttons, and joystick. The host receives directional and button events — ready for action games, trivia buzzers, or any input that maps to discrete controls.

Phone sends

D-pad / joystickA / B / X / Y buttonsShoulder triggers

Trackpad & Keyboard

Phone becomes a touch surface and text input. The host receives normalized pointer coordinates and keystrokes — for presentations, kiosks, or collaborative control.

Phone sends

Touch surfaceText input fieldTap / long-press

Poll

Multiple choice, rating scales, or free response. The host receives aggregated results in real time — for classrooms, live events, and audience Q&A.

Phone sends

Choice selectionRating sliderFree text response

Drawing Canvas

Freeform drawing surface with color and brush controls. The host receives stroke paths as they're drawn — for Pictionary, whiteboard annotation, or collaborative art.

Phone sends

Drawing surfaceColor pickerBrush size / eraser

Motion Sensor

Streams accelerometer and gyroscope data from the phone hardware. The host receives orientation vectors — for tilt steering, shake gestures, or Wii-style controls.

Phone sends

AccelerometerGyroscopeShake detection

Media Remote

Transport controls for media playback. The host receives play, pause, seek, and volume events — for video walls, shared music, or watch parties.

Phone sends

Play / pauseSeek barVolume control

Need something custom? Open the controller designer and drag together buttons, sliders, touch areas, and gyroscope controls. Mix types in a single session — some players on buzzers, others on drawing pads.

Ship a game, not a networking platform

Every piece of the real-time stack — direct peer-to-peer data channels, NAT traversal, ordered delivery, transparent relay fallback — engineered for low latency. Handled so you can put that time into the part players actually care about.

Direct peer-to-peer data channels

Once the handshake completes, phone and host exchange inputs over a WebRTC data channel — not through our servers. On the same WiFi, ICE picks a host-candidate pair and the data path stays on the LAN.

Cloudflare-edge signaling

Room matching, SDP/ICE exchange, and TURN credential minting all run on Cloudflare Durable Objects at the edge. Short-lived TURN credentials are scoped per room, so the relay is authenticated and credentials don't outlive the session.

Transparent relay fallback

When NAT traversal fails on restrictive networks, traffic falls through to a TURN relay. Same API, same event shapes, same ordering — your code never branches on transport.

Per-player ordered delivery

Each phone owns one ordered WebRTC data channel. Inputs from that phone arrive in emit order, guaranteed — so high-frequency streams never reorder against discrete events.

Frame-coalesced high-rate inputs

Joystick samples are batched with requestAnimationFrame, so fast thumbstick drags produce one send per display frame instead of flooding the channel. Discrete events (button presses, buzzer taps, pause) flush immediately.

Binary-framed wire protocol

Input events are MessagePack-encoded — a stick sample is around 22 bytes on the wire versus 55+ as JSON. Smaller packets, faster parsing on mobile CPUs, better behavior on congested WiFi.

Zero-loss reconnection

When a phone drops (screen lock, WiFi roam, 2.4↔5GHz band switch), the server holds its slot for a 60-second grace window. Inputs buffer locally and replay in order once the phone re-attaches with its resume token.

Observable transport state

Each session exposes its live transport — local, direct-wan, or relay — via ICE candidate-pair inspection. React to transport changes in-app, or pin a room to local-only for offline deployments.

SDK, not a walled garden

The other option is to ship inside someone else's player, hand over 30% of your revenue, and let their brand sit on top of your game. poketsticks is the SDK — you keep everything.

poketsticks
Phone Screen < 20ms Local network
AirConsole-style platforms
Cloud 50–200ms+ Phone Screen
poketsticks
AirConsole-style platforms
Revenue
Keep 100% of your revenue. You set the price, you pick the platform
30% platform cut, plus mandatory ad revenue share
Distribution
Steam, consoles, your own website — ship anywhere
Locked to the platform's walled-garden player
Branding
Your game, your colors, your logo. poketsticks is invisible infrastructure
Your game lives inside their shell, under their brand
Architecture
Local-first — messages travel device-to-device at under 20ms
Cloud-routed — every input round-trips through their servers
Offline / LAN
Works at parties, cabins, conferences — no internet required
No internet, no game
Controller UI
No-code designer + ready-made templates, fully customizable
Fixed controller styles, limited customization

Works where you build, runs where your players are

Integrate in your engine of choice. Controllers run in any mobile browser — no app store required.

Game development

  • U Unity — primary SDK, Asset Store distribution
  • UE Unreal Engine — C++ SDK
  • NA Native — iOS, tvOS, Android TV, macOS, Windows
  • JS Web games — JavaScript SDK for browsers
  • WS Custom — WebSocket API for any platform

Controller deployment

  • Zero app installs — runs in any phone browser
  • Universal — iOS Safari, Android Chrome, any mobile web
  • Offline capable — works on LAN with no internet once connected
  • QR code joining — scan and play in under 5 seconds

Pricing that stays out of your way

The SDK is free. Local network sessions always cost $0. You only pay when traffic routes through our cloud relay.

Hobbyist

$0 Free forever

Personal projects, prototypes, learning

  • Unlimited local-network sessions
  • Up to 32 devices, under 20ms latency
  • Discovery, session management, reconnection
  • End-to-end encryption
  • Full no-code controller designer
Start free
Most popular

Commercial

$5 per month

Indie games and small commercial projects

  • Everything in Hobbyist
  • 3,500 cloud relay device-minutes included
  • Analytics dashboard and session insights
  • Custom branding / white-label controllers
  • Priority support
Sign up

Enterprise

Custom Contact us

High-volume games, venues, corporate training, education

  • Dedicated relay infrastructure
  • Volume discounts
  • SLAs and dedicated support
  • Custom integrations
  • Procurement, legal, and security review
Talk to us

Usage overages

When you exceed your Commercial tier limits:

Additional relay device-minutes
$0.002

per device-minute

Relay data transfer
$0.10

per GB

What 3,500 device-minutes covers

  • ~75 sessions, 4 devices for 12 minutes each
  • ~50 sessions, 4 devices for 18 minutes each
  • ~115 sessions, 3 devices for 10 minutes each

Most indie games stay well within this limit. Only your most successful titles will generate meaningful overages.

Contact us for volume pricing if you're consistently exceeding 50,000 device-minutes per month.

The next Jackbox could be yours

Stop building and maintaining networking infrastructure. Put that time into the gameplay that makes people laugh, compete, and come together around a screen.