First steps
Getting started
Getting started
Your apps. Your data. Your devices.
Centraid turns your OpenClaw into a personal app store. Tiny, single-purpose apps that live on your own server and show up on your devices.
OpenClaw is messaging-first — you talk to it from WhatsApp, Telegram, Slack, wherever you already chat. That's perfect for one-line jobs: "log my weight", "what's on my calendar?", "remind me at 7pm".
Some things don't fit in a sentence. You want to see them — a month of expenses, your habit grid, last week's runs on a map, the photos from the trip. For those, a glance beats a paragraph and tapping beats typing.
Centraid is the rich-UI layer for those. Same OpenClaw underneath — your connections, your agents, your data — with a screen wrapped around the apps that need one.
Two AI helpers come built in:
- One uses your apps for you — ask in plain language, it works the buttons.
- One makes apps just for you — describe a new app or a change to an existing one, and it ships it. No code needed.
Under the hood, both helpers use the same buttons you do — so anything you can do in the UI, the AI can do too, and the other way around. The rest of this page is the developer setup; if you just want to try it, start at the Quickstart.
Centraid ships as a monorepo. The desktop app embeds a local gateway out of the box — no separate server to run. The same gateway code can also be mounted on an OpenClaw instance to host apps remotely; the two modes share one upload-and-version-flip contract.
Prerequisites
- Bun
>= 1.3.x— install from bun.sh. Centraid pinsbun@1.3.13inpackage.json#packageManager. - Node
>= 24(recommended) for built-innode:sqlite. Node22.5–23.xworks behind--experimental-sqlite. - macOS, Linux, or Windows for the desktop shell.
- Xcode (iOS) or Android Studio (Android) only if you plan to build the mobile companion to a device.
Install
git clone https://github.com/srikanthsrungarapu/centraid.gitcd centraidbun installRun the desktop app
bun run dev:desktopThis invokes turbo run dev --filter=@centraid/desktop. The Electron shell launches with the local gateway embedded in the main process; the renderer connects to it over IPC. App iframes load from the in-process gateway at /centraid/<id>/.
Run the mobile companion
bun run dev:mobileStarts the Expo dev server. The mobile app talks to a Centraid gateway over HTTP — it does not embed one of its own.
TODO(#120) — confirm whether mobile defaults to a paired desktop's gateway or requires a remote gateway URL, and document the pairing flow. The steering ledger references mobile work but I haven't read the pairing code.
Build and check
bun run build # turbo run build (all apps + packages)bun run typecheck # TypeScript across the workspacebun run check # oxfmt --check + oxlintbun run ci # what CI runs: check + typecheckWhat's running where
flowchart LR
subgraph Desktop["Electron desktop"]
Renderer["Renderer (vanilla TS)"]
Main["Main process"]
Local["Embedded local gateway"]
Main --- Local
Renderer -- "IPC" --> Main
end
subgraph Remote["OpenClaw host (optional)"]
OC["OpenClaw gateway"]
Plugin["@centraid/openclaw-plugin"]
OC --- Plugin
end
Mobile["Mobile (Expo)"]
Mobile -- "HTTPS" --> Remote
Mobile -. "or local LAN" .-> LocalBoth gateways speak the same /centraid/_apps/*, /centraid/_tool/*, and /centraid/<id>/* surfaces. See Architecture for the full breakdown.