Preview of what's coming
Ops Astro
One place to run an organisation's records, tasks and AI agent work, where a person decides before anything important happens.



What it does
Ops Astro is the system Launch Astro is building to run an organisation's day-to-day work in one place: its records, its know-how, its tasks, and the jobs it hands to AI agents. The rule at its centre is simple. An agent can propose and prepare, but a person decides before anything with real consequences happens.
The organisation keeps its own data and its own accounts with AI providers. Nothing is locked inside someone else's service.
It's early. What exists today is a working slice you can run on your own computer: sign in, create a task, assign it, move it along, reload the page, and it's all still there because it's saved in a real database. Agent work, documents, reviews and a client list come next, in that order.
The screens on this page are mockups of where it's heading, not the finished product.
Ops Astro is a pnpm monorepo in TypeScript, licensed AGPL-3.0-only. The built part is a local task slice that runs on one machine: a React and Vite web app (apps/web), a Hono API (apps/api) that runs its TypeScript directly under Node 24's type stripping, a real local Postgres with the tenancy and record migrations applied, and Supabase Auth (GoTrue) for sign-in. Postgres and GoTrue run in Docker, and every process listens on a loopback address.
The core is a set of layered packages, each entered only through its src/index.ts. core-records holds tenancy, identity, authority and fixed-slot records. core-runtime holds the propose, decide, pick up and hand back cycle for agent work. core-commands holds the command handlers, and core-wire declares every command and read, so the web app and the command line (apps/cli) call the same API. A dependency-cruiser rule (pnpm deps:cruise) fails any import that points up a layer or past an index.
core-custody runs as its own process, holds the provider credentials, and is the only way out for a model call, so an agent never touches a key itself. Nothing asks it to make one yet. The runtime makes no provider call and nothing dispatches work.
corepack pnpm check runs the checkout's own checks, Gitleaks and a public-content policy among them. docs/local/README.md lists what the slice does, which command proves each part, and where it falls short. ARCHITECTURE.md marks the worker and presets as not built.
Install it and start it
Install
corepack pnpm installFrom README.md at e85bb01
Start
corepack pnpm db:up && corepack pnpm db:migrate && corepack pnpm auth:up \
&& LOCAL_SEED_MADE_UP=confirm corepack pnpm db:admit \
&& corepack pnpm auth:seed && corepack pnpm db:seedFrom README.md at e85bb01
corepack pnpm api:upFrom README.md at e85bb01
corepack pnpm web:upFrom README.md at e85bb01