--- title: Twenty Apps description: Build and manage Twenty customizations as code. --- Apps are currently in alpha. The feature works but is still evolving. ## What are apps? Apps let you extend Twenty with custom objects, fields, logic functions, front components, AI skills, and more — all managed as code. Instead of configuring everything through the UI, you define your data model and logic in TypeScript and deploy it to one or more workspaces. **What you can build:** - **Custom objects and fields** — extend your data model with new entities or add fields to existing objects like Company or Person - **Logic functions** — server-side functions triggered by database events, cron schedules, or HTTP routes - **Front components** — React components that render inside Twenty's UI (record pages, command menu, side panels) - **AI skills and agents** — extend Twenty's AI with custom capabilities - **Views and navigation** — preconfigured saved views and sidebar links ## Quick start ```bash filename="Terminal" npx create-twenty-app@latest my-twenty-app cd my-twenty-app yarn twenty dev ``` This scaffolds a new app, optionally starts a local Twenty server, and begins watching your files for changes. See the [Getting Started](/developers/extend/apps/getting-started) guide for the full walkthrough. ## Detailed guides | Guide | Description | |-------|-------------| | [Getting Started](/developers/extend/apps/getting-started) | Scaffold an app, set up a local server, project structure, CI | | [Building Apps](/developers/extend/apps/building) | Entity definitions (`defineObject`, `defineLogicFunction`, `defineFrontComponent`, etc.), API clients, npm packages, public assets, testing | | [Publishing](/developers/extend/apps/publishing) | Deploy to a server, publish to npm, marketplace | ## Key concepts ### Entity detection The SDK detects entities by scanning your TypeScript files for `export default define({...})` calls. File naming and folder structure are flexible — detection is AST-based, not path-based. ### Available entity types | Function | Purpose | |----------|---------| | `defineApplication()` | Application metadata (required, one per app) | | `defineObject()` | Custom objects with fields | | `defineField()` | Fields on existing objects | | `defineLogicFunction()` | Server-side logic with triggers | | `defineFrontComponent()` | React components in Twenty's UI | | `defineRole()` | Permission roles | | `defineView()` | Saved view configurations | | `defineNavigationMenuItem()` | Sidebar navigation links | | `defineSkill()` | AI agent skills | | `defineAgent()` | AI agents with prompts | | `definePageLayout()` | Custom record page layouts | | `definePreInstallLogicFunction()` | Runs before app installation | | `definePostInstallLogicFunction()` | Runs after app installation | ### Development workflow 1. **`yarn twenty dev`** — watches source files, rebuilds on change, syncs to the server, generates typed API clients 2. **`yarn twenty build`** — produces a distributable build 3. **`yarn twenty deploy`** — deploys to a remote Twenty server 4. **`yarn twenty add`** — scaffolds a new entity interactively ### CLI reference ```bash filename="Terminal" yarn twenty help # List all commands yarn twenty server start # Start local dev server yarn twenty remote add # Connect to a Twenty server yarn twenty exec -n fn # Execute a logic function yarn twenty logs -n fn # Stream function logs ``` See the [Getting Started](/developers/extend/apps/getting-started) guide for the full CLI reference.