Open-source Grok Bot alternative, built with Cursor and Grok 4.6.
Web, desktop, and mobile. Bring your own AI and sandbox. The product is still early (beta). Notable product changes are in CHANGELOG.md.
Each bot has one thread, one computer, memory, routines, and history. A bot can also spawn more bots — each a regular peer with its own thread and computer — or run short-lived subagents inside the current turn. This repository is the complete core product — it runs without a Rakazo-operated control plane.
demo.mp4
- TypeScript
- React 19, Vite, Tailwind
- Electron
- Expo
- Hono, oRPC
- Postgres, Prisma
- Better Auth
- Graphile Worker
- Pi
- Any sandbox provider (tested with Docker and E2B)
- Composio
- Node.js 22+
- pnpm 9
- Docker Desktop (Postgres plus the graphical bot computer)
From the repo root:
cp .env.example .envEdit .env:
- Set
BETTER_AUTH_SECRETandENCRYPTION_KEYto long random strings before any network exposure. Placeholder values only work in localdevelopment/testruns. - Put your OpenRouter key in
OPENROUTER_API_KEY(or skip the key and paste one during onboarding). - ChatGPT Plus or Pro, GitHub Copilot, or SuperGrok / X Premium: skip the key and sign in on the Connect a model screen. Pick OpenAI Codex, GitHub Copilot, or xAI, then sign in with the device code Pi shows. Claude Pro is not in the Rakazo UI yet — Pi's Claude login opens a localhost callback, which does not work from the web app.
- Optional:
COMPOSIO_API_KEYif you want Plugins to talk to live apps.
Then:
docker compose -f infra/compose/docker-compose.yml up postgres -d
pnpm install
pnpm db:generate
pnpm db:migrate
pnpm sandbox:build
pnpm devpnpm dev starts the API (:3100), Graphile Worker, Vite web app (:5173), and sandbox supervisor (:7091).
Open http://127.0.0.1:5173. Sign up, pick a model from the Pi catalog (paste an API key, sign in with ChatGPT / Copilot / SuperGrok, or Skip if the deployment key is set), create a bot, send a message. The computer pane is a live Linux desktop with a browser. Take control to sign in; the bot keeps that session after you release. Ask a bot to spawn another bot, or to run a subagent for work that should stay inside this turn.
Confirm the product path:
curl -s http://127.0.0.1:3100/healthYou want "runtime":"pi", "sandbox":"docker", "wakeup":"graphile". "composio":true only if the Composio key is set.
Product defaults are Pi + Docker + Graphile. pnpm verify:fast pins the emulators (AGENT_RUNTIME=scripted, SANDBOX_PROVIDER=fake, WAKEUP_DRIVER=memory) so default tests never call live models or Composio.
The app you open and the computer provider are separate choices. Web, Electron, and mobile are clients of the same API. Docker stays the default. In the Electron app the deployment owner is asked once whether bots should keep using Docker or run on this Mac as you.
SANDBOX_PROVIDER |
Where agent commands run | Best fit | Isolation notes |
|---|---|---|---|
docker (default) |
A per-bot Docker container on your machine. The Electron app can switch this to This Mac without changing the env var. | Quick local setup and trusted single-machine self-hosting | Good local isolation and persistent bot homes. The supervisor controls the local Docker daemon, so keep its port private; Rakazo does this by default. |
e2b |
A remote E2B sandbox | Public or multi-user deployments | Stronger separation from the Rakazo application host. Requires E2B_API_KEY. This Mac is not available. |
desktop |
Directly on the API/worker host. Working directories under the process user's home folder are allowed. | A trusted single-user local process | Least isolated. Model-initiated shell commands run with the Rakazo process's OS permissions. Do not use it on a public or shared server. The Electron first-run "This Mac" choice uses this provider while leaving SANDBOX_PROVIDER=docker. |
fake |
An in-process emulator | Tests only | Does not run a real computer. |
Docker remains the recommended quick start for someone running Rakazo on their own machine. E2B is the safer boundary when untrusted users or public traffic share a deployment.
If this Postgres was created with prisma db push before checked-in migrations existed, mark the baseline once:
pnpm --filter @rakazo/db exec prisma migrate resolve --applied 0001_initThe Electron shell loads the same web UI. Leave pnpm dev running, then:
pnpm --filter @rakazo/desktop devNative red / yellow / green buttons close, minimize, and zoom that window. They do nothing in the browser tab. On first launch the desktop app asks whether bots should keep using Docker or run on this Mac as you. Docker stays the default. macOS will not show a permission prompt for that choice — the consent is Rakazo's.
Point Electron at a different origin with RAKAZO_WEB_URL (default http://127.0.0.1:5173).
Packaged installers (optional):
pnpm --filter @rakazo/desktop packOutputs land in apps/desktop/out/ (macOS dmg/zip, Windows NSIS, Linux AppImage). Those builds still need a running API and web origin.
pnpm verify:fast # unit, property, and in-process contract tests
pnpm verify # Postgres via Testcontainers, emulators, API, Playwright
pnpm verify:providers # optional live OpenRouter / E2B canariesapps/web api worker desktop mobile www
packages/core contracts db auth memory ui-web adapter-kit adapters testkit
infra/compose sandboxes
apps/www is the public marketing site (rakazo.com). It is not the signed-in product.
See docs/self-host.md. Cloud and self-hosted editions share the same application and contracts. There is no separate Rakazo-hosted control plane in this repo yet — a public Cloud deploy is a VPS (or E2B) plus the marketing site, not a serverless push of the chat app.