packages/twenty-docs/getting-started/core-concepts/apps.mdx
Most CRMs give you a config panel. Twenty gives you a platform. Apps are how developers extend Twenty beyond what the UI offers — defining data models, server-side logic, UI components, and AI capabilities as code, then deploying them to one or more workspaces.
Workflows cover no-code automation. But some things need code: a custom pricing engine, a proprietary enrichment pipeline, a compliance check that runs on every record update, a custom UI panel that pulls data from an internal tool.
Apps let you build these as first-class extensions — not brittle scripts talking to an API from outside, but code that runs on the platform with full access to the type system, permission model, and UI.
An app is a TypeScript package that declares entities using the twenty-sdk:
| Entity | What it does |
|---|---|
| Objects & Fields | New data tables and fields on existing objects — same treatment as built-in ones |
| Logic Functions | Server-side TypeScript triggered by HTTP routes, cron schedules, or database events |
| Front Components | Sandboxed React components that render inside Twenty's UI (side panel, widgets, command menu) |
| Skills & Agents | AI capabilities — reusable instructions and autonomous assistants |
| Views & Navigation | Pre-configured list views and sidebar menu items |
Everything is detected via AST analysis at build time — no config files, no registration boilerplate. Put a export default defineObject(...) in any .ts file and the SDK picks it up.
npx create-twenty-app@latest my-app
cd my-app
yarn twenty dev
yarn twenty dev watches your source files, rebuilds on change, and live-syncs to a local Twenty instance. The typed API client regenerates automatically when the schema changes. When you're ready, yarn twenty deploy pushes to production. Apps can also be published to npm and listed in the Twenty marketplace.