OpenCatalyst is a local-first agentic AI desktop app, in the same category as Claude Cowork and OpenAI Codex. I'm its architect and sole engineer: a Rust engine, a React and TypeScript console, a CLI, and a Tauri desktop app that runs on the local machine.
The engine runs a streaming agent loop over sandboxed file and shell tools, and it asks for human approval before it acts. Sessions are event-sourced in SQLite, so a task can resume mid-run after the engine restarts.
A multi-provider gateway streams from Anthropic, OpenAI, Gemini, xAI, and local Ollama models, with prompt caching. Its layered router picks the model for each request from spend caps, task-type rules, session affinity, and scores learned from the results people keep. It fails over when a provider goes down. Team fusion, the multi-agent mode, sends one brief to several models at once, has a judge model merge the drafts, and verifies the result in a scratch workspace.
The agent gets real access to the machine, so every part of that access is constrained. Provider keys sit in an encrypted vault, the agent runs under macOS Seatbelt with scoped write access and a network egress allowlist, and every tool call goes through a four-tier permission ladder. MCP plugins over stdio and HTTP let agents reach outside tools inside those limits.
I ran the build agent-first to prove the method. The Rust engine and the TypeScript client meet at a 61-method typed RPC protocol, and the client is generated from the Rust types through JSON Schema. The architecture rules are automated CI gates with live-engine smoke tests. I directed Claude Code and Cursor inside those gates.