Skip to content

sgdv-px/Kira

Repository files navigation

Kira

Open-source, local-first AI mobile app builder; type a prompt, & an agent writes a real Expo (React Native) app to disk while you sit and watch it run in a live preview within seconds. Then, iterate.

Think "Rork.com, but open source and running locally."

Status

Milestones M0 through M3a are complete, and M4a (export to a standalone repo), M4b (native builds via EAS), and M4c (portable project bundles plus static snapshots) have landed. Today Kira can take a prompt, generate a real Expo app, run it in a live web preview, auto-repair bundle and type errors, and let you iterate by chat. Generated apps persist as projects in SQLite, each with its own chat history, and every model call routes through a settings store with bring-your-own-key support (Claude, plus other providers and local Ollama). Any project can be exported to a clean, standalone Expo app you own: a portable folder that runs with npm install and npx expo start, with its own git repo and no dependency on Kira.

Kira M0: the workspace/demo Expo app rendering on web via expo start --web

See docs/ARCHITECTURE.md for the full design and roadmap.

How it works

Kira does not simulate a runtime. It wraps a REAL Expo project on disk:

  • An agent (Vercel AI SDK, bring-your-own-key, default Claude) edits files in a sandboxed project directory using a small set of tools: list, read, write, delete, run command, get preview errors.
  • expo start IS the runtime. You get Metro bundling, a web preview, an Expo Go QR for devices, hot reload, and the error overlay for free.
  • A repair loop bundles and typechecks after each generation, feeds any errors back to the model, and auto-fixes up to three times before surfacing to you.

Everything runs locally. No cloud, no auth, no billing in v1. Seams are left for a hosted mode later.

Prerequisites

  • Node 20.19.4 or newer (Node 22 LTS or 24 recommended)
  • pnpm 9 or newer (corepack enable pnpm, or npm i -g pnpm)
  • Git

Quickstart: run the M0 demo

pnpm install            # installs monorepo tooling (turbo, typescript, prettier)
pnpm demo:web           # starts the workspace/demo Expo app on http://localhost:8081

Open http://localhost:8081 in your browser. You should see the Kira demo screen. Edit workspace/demo/src/app/index.tsx and it hot-reloads.

The workspace/demo app is a standalone Expo project with its own node_modules. If you cloned fresh and it was not installed yet, run:

npm --prefix workspace/demo install

Repo layout

openrork/
  apps/
    studio/         # the Next.js orchestrator and UI (chat, projects, settings, preview)
  packages/
    orchestrator/   # the agent loop, file tools, Expo runtime, eval harness
  workspace/        # generated Expo apps live here, one directory per project
    demo/           # M0 proof: a real Expo SDK 54 app, standalone install
  docs/             # architecture and design notes

workspace/ is intentionally NOT a pnpm workspace member. Each app under it is a standalone, independently installed Expo project, exactly like the apps the agent will generate. This keeps React Native and Metro out of pnpm's symlinked store, which is the single biggest Expo-in-a-monorepo footgun.

Roadmap

  • M0 (done): monorepo plus an Expo demo that renders on web.
  • M1a (done): the orchestrator API. A tools-enabled agent reads and writes files in a project directory and runs Expo.
  • M1b (done): the UI. Chat pane, file tree, embedded web preview.
  • M1c (done): the error-repair loop and a small eval set.
  • M2 (done): iterate on an existing app via chat with surgical follow-up edits, plus token-usage and cost accounting in the eval harness.
  • M3a (done): multiple projects persisted in SQLite with per-project chat, a projects home, an Expo dev server scoped to the active project, and a settings screen for provider, model, API keys, and Ollama with bring-your-own-key.
  • M4a (done): export any project as a clean, standalone Expo app you own. Copies the project out of the workspace (excluding node_modules, caches, logs, env files, and local state), generates a README with the pinned Expo SDK and run steps, writes an Expo .gitignore, initializes a git repo with an initial commit, detects gh for a one-line GitHub push, and runs a self-sufficiency check (npm install plus a web bundle) in the exported folder.
  • M4b (done): native build handoff through EAS. From a finished project, start a cloud EAS Build (an Android .aab or an iOS .ipa) on your own Expo account and, optionally, submit it to Play internal testing or TestFlight, without leaving the studio. Detects or scaffolds eas.json with development, preview, and production profiles, validates and can safely fill the required app config fields, links the project, streams build logs into the existing Logs pane, and surfaces the EAS dashboard link and the downloadable artifact URL. EAS manages signing on your account; no Expo, Apple, Google, keystore, or App Store Connect secret is ever stored or logged.
  • M4c (done): local-first sharing. Export any project as a single portable .zip bundle (source, assets, package files, the pinned Expo SDK config, and a manifest, with no node_modules, caches, logs, env files, or secrets) that imports into any other OpenZork and runs unchanged, or generate a static, read-only web snapshot to host anywhere or open locally. Import validates the manifest and every zip entry (no path traversal) before unpacking, warns on an SDK mismatch, and never overwrites an existing project.
  • M5 (later): hosted accounts, live shared sessions, team workspaces, and cloud sync.
  • Later: device QR plus tunnel and multi-screen routing polish.

License

MIT. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors