Apps overview
Apps are a completely optional GUI layer — think Linux plus an optional desktop environment. The CLI and engine work fully without them. Apps are TypeScript/React UIs rendered by the engine’s web bridge, hosted in the apps/ repo.
Apps and skills must never know about each other
Section titled “Apps and skills must never know about each other”An app asks “give me an LLM”. The engine picks a skill that @provides(llm). Neither side learns the other’s name. The engine is the only broker.
This is security by architecture. If an app and a skill can’t name each other, they can’t trust each other. Every capability request and every credential dereference passes through the engine.
See Local-first for the full framing.
Shipped apps
Section titled “Shipped apps”Each app is a self-contained React surface built against @agentos/sdk:
accounts/ Identity + connection managementmessages/ Unified inbox across comms skillssettings/ Engine + skill configurationstore/ Install skills, apps, themesBuilding an app
Section titled “Building an app”The app SDK lives in the sdk-apps/ sibling repo; shared React components live next to the apps:
sdk-apps/ TypeScript Apps SDK — the engine API surface (@agentos/sdk)apps/ _components/ Shared React components <your-app>/ A self-contained appAn app calls the engine via the SDK. It never reaches into a skill’s internals, never holds a credential, and never imports another app. The engine is always in the middle.
Headless is first-class
Section titled “Headless is first-class”A headless AgentOS — API and AI only — works perfectly without apps. Apps are there when you want a human-facing surface for an entity type (a Videos app for video entities, a Messages app for conversation/message entities). The default entity viewer renders any entity with schema-driven components, so you don’t need an app just to see data.
See also
Section titled “See also”- How we build
- Three concerns — entities, skills, and apps as independent concerns.
- The
apps/repo — where apps live.