HELIX 3 Docs
Helix Phone

The Helix Phone

A universal smartphone that travels with every player across worlds — with built-in apps and an app store for third-party developers building on the Helix Phone SDK.

Every Helix player carries a phone. It isn't part of any one world — it travels with the player everywhere, the same way your real phone follows you from place to place. It has a home screen, a set of built-in apps (messages, camera, wallet, a photo feed, and more), and an app store where third-party developers publish their own apps built on the Helix Phone SDK.

The one-sentence model

The Helix Phone is a tiny operating system that lives on top of the Helix platform. Apps are sandboxed web bundles; the Phone SDK is how they reach the player's identity, wallet, media, contacts, notifications, and the world they're currently in — always gated by permissions.

Why a phone?

A world is a place. A phone is personal and portable. Putting social, payments, messaging, and capture behind a familiar phone metaphor means:

  • Players get one consistent place for their messages, photos, wallet, and friends — no matter which world they're in.
  • Developers get a ready-made distribution surface (the app store) and a high-level SDK, instead of rebuilding identity, payments, and media for every world.

How it fits together

The shell

The phone OS: home screen, app switcher, notifications, permissions, and the runtime that hosts apps.

Apps

Built-in (first-party) apps and third-party apps from the store. Each is a web bundle described by a manifest.

The Phone SDK

One object — createHelixPhoneSdk() — exposing notifications, media, wallet, contacts, messages, storage, and more.

A taste of the SDK

Every app boots the SDK with its own appId, then calls high-level namespaces. Reading the player and posting a notification is just:

import { createHelixPhoneSdk } from "@helix/phone-sdk";

const phone = createHelixPhoneSdk({ appId: "studio.example" });

const me = await phone.account.getCurrentUser();
await phone.notifications.push({
  title: "Welcome",
  body: `Hi ${me?.displayName ?? "there"} 👋`,
});

That call only works if the app declared notifications.push in its manifest and the player granted it — see Permissions & consent.

Start here

Status: SDK v0.1.0

The Phone SDK is shipping. A handful of capabilities are wired end-to-end against mocked backends today (camera capture, voice calls, IAP settlement, live world presence) — these are flagged inline and tracked on the Proposed & in-progress page. Everything else (messages, contacts, notifications, media/album, app storage, permissions, social feeds) is real.

On this page