Lorca is a Grok bot alternative: a Rust CLI for macOS, Linux, and Windows, a native macOS AppKit client, a Windows and Linux app, and phone apps. The CLI is a localhost websocket service and the agent loop; the AppKit client is a UI for that CLI and launches the bundled binary.
You create bots, talk to them 1:1, or put them in a group chat. Bots can hand work to each other and orchestrate, in the same spirit as Grok Bot.
The UI is AppKit (SPM), built to feel like a Mac app: materials, density, keyboard, and motion.
Identity is a local key pair. Devices pair to each other. Traffic to the network is end-to-end encrypted. Each machine or phone that pairs is a Device and records its OS (macos, linux, windows, ios, ipados, android). Desktop Devices are Runners: you can create a bot for any paired Runner, and that bot uses the account's encrypted provider credentials there. Phones and tablets are Devices, not Runners.
- macOS app: AppKit, SPM (
macos/) - Windows and Linux app: MyGo (Go and the system webview) with a Solid page (
desktop/), after the macOS app - CLI: Rust websocket service (
crates/cli)- agent loop after pi-agent-core (
crates/agent), with Grok-style bot orchestration - identity, pairing, E2E (X25519/Ed25519 key pairs + XChaCha20-Poly1305 DEK); signed requests and opaque blobs to the relay
- agent loop after pi-agent-core (
- relay: Rust, axum, SQLite or Postgres (
crates/relay) - phone app: Expo (React Native, expo-router) for iOS and Android (
mobile/); pairs as a Device and speaks the relay protocol itself
bun run dev # builds the CLI and the app, launches the app, rebuilds on change; runs a relay on 0.0.0.0:8787
bun run desktop # the Windows and Linux app in development (mygo dev); bun run desktop:build builds its releases
bun run mobile # Expo dev server for the phone app (bun run mobile:ios builds the dev client)
bun run relay # a local relay on 0.0.0.0:8787 (set LORCA_RELAY_URL to use it)
cargo test # agent loop, crypto, and SSE tests
bun run reset # stop everything and wipe identity, credentials, chats, prefs (-y, --build, --relay)- API key: DeepSeek, Anthropic, OpenCode Zen, OpenCode Go (with its Go subscription)
- Subscription: ChatGPT, Grok (SuperGrok or X Premium+)
Architecture: ARCHITECTURE.md, the overview, and one doc per subject in docs/architecture. Read the overview and the subjects you touch before implementing.
mobile/ is an Expo app for iOS and Android. It pairs with an existing Device by scanning a QR code from the desktop app or pasting a string from lorca pair, then talks to the relay directly with the Rust Device core: the same keys, envelopes, and jobs as the CLI. A phone is a Device, never a Runner: it reads and writes chats, attaches photos and files, dictates messages, configures the account's provider credentials, creates bots for your Runners, and starts turns; the bots keep running on your machines.
bun run mobile # Metro for the dev client
bun run mobile:ios # build and run on the iOS simulator (Xcode)The landing page lives in web/ (TanStack Start on a Cloudflare Worker, shadcn/ui). The product docs at /docs are MDX files in web/content/docs, rendered with Fumadocs.
bun run web # dev server on http://localhost:3000
bun run web:deploy # build and wrangler deploy