# https://github.com/twentyhq/twenty Project Manual

Generated at: 2026-06-21 23:30:10 UTC

## Table of Contents

- [Overview](#page-overview)
- [Src](#page-packages-twenty-apps-internal-people-data-labs-src)
- [Src](#page-packages-twenty-apps-internal-twenty-meeting-bot-src)
- [Src](#page-packages-twenty-apps-internal-twenty-for-twenty-src)

<a id='page-overview'></a>

## Overview

### Related Pages

Related topics: [Src](#page-packages-twenty-apps-internal-people-data-labs-src)

<details>
<summary>Related Source Files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/twentyhq/twenty/blob/main/README.md)
- [packages/twenty-codex-plugin/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/README.md)
- [packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json)
- [packages/create-twenty-app/README.md](https://github.com/twentyhq/twenty/blob/main/packages/create-twenty-app/README.md)
- [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json)
- [packages/twenty-client-sdk/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-client-sdk/package.json)
- [packages/twenty-ui/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-ui/README.md)
- [packages/twenty-docs/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-docs/README.md)
- [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md)
- [packages/twenty-apps/internal/twenty-fireflies/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-fireflies/README.md)
- [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md)
</details>

# Overview

## What Is Twenty

Twenty is a modern, open-source Customer Relationship Management (CRM) platform distributed as a TypeScript monorepo. The repository bundles the CRM server, a React-based front end, an app development platform, a UI component library, a typed client SDK, and the marketing and documentation sites under a single workspace managed by Nx ([README.md](https://github.com/twentyhq/twenty/blob/main/README.md)).

The top-level README positions Twenty as "The #1 Open-Source CRM" and highlights four flagship capabilities: CRM data version control, customizable layouts, AI agents and chats, and a primitives-based extensibility model. The server stack is TypeScript, Nx, NestJS, BullMQ, PostgreSQL, and Redis, while the client is built with React. The project also endorses Greptile for code review, Sentry for bug capture, and Crowdin for translations ([README.md](https://github.com/twentyhq/twenty/blob/main/README.md)).

## Monorepo Package Layout

The `packages/` directory holds the libraries and applications that compose the workspace. Each package has its own `package.json` declaring subpath exports and dependencies, which the table below summarizes using only information sourced from the provided files.

| Package | Role | Notable Details |
|---|---|---|
| `twenty-shared` | Cross-package shared code: types, utilities, AI helpers, workflow primitives, Vite tooling, i18n, and testing harnesses. | Exposes typed subpaths such as `ai`, `application`, `logic-function`, `metadata`, `types`, `utils`, `vite`, `workflow`, and `workspace` ([packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json)). |
| `twenty-client-sdk` | Typed client for the Twenty GraphQL/REST API and metadata generation. | Depends on `@genql/runtime`, `graphql`, `lodash`, and `esbuild`; ships dual ESM/CJS output with `vite-plugin-dts` ([packages/twenty-client-sdk/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-client-sdk/package.json)). |
| `create-twenty-app` | Scaffolding CLI for new Twenty apps. | Wraps a local Twenty server in Docker, exposes `yarn twenty dev`, `remote:add`, sync, build, and publish commands, and ships a troubleshooting guide ([packages/create-twenty-app/README.md](https://github.com/twentyhq/twenty/blob/main/packages/create-twenty-app/README.md)). |
| `twenty-ui` | Component library and design system used inside Twenty. | Built on SCSS Modules and Base UI; ships Storybook as living documentation; `theme-constants` is imported by ~943 files and must remain a drop-in replacement ([packages/twenty-ui/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-ui/README.md)). |
| `twenty-docs` | Mintlify-powered documentation site. | 46 user-guide pages, 24 developer pages, and 25 UI pages; navigation is split between a base structure file and a Crowdin-pushed label template ([packages/twenty-docs/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-docs/README.md)). |
| `twenty-codex-plugin` | Codex plugin that teaches an AI agent how to build, deploy, and query Twenty apps. | Bundles five skills, the public docs MCP server, and a `setup-mcp.sh` helper; licensed AGPL-3.0 ([packages/twenty-codex-plugin/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/README.md), [packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json)). |

## The Apps Ecosystem

A central concept in Twenty is the **App**: a self-contained bundle of CRM entities that can be installed into a workspace. The Postcard example explicitly enumerates the full entity surface: `application.config.ts` for metadata and variables, custom objects with inline fields, standalone fields and relations (ONE_TO_MANY, MANY_TO_ONE), logic functions, front components, roles, views, navigation menu items, AI skills, agents, and page layouts ([packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md)). The same shape is used by production apps under `packages/twenty-apps/community/` and `packages/twenty-apps/internal/`.

### Production-Style Integrations

The GitHub connector ingests pull requests, issues, contributors, and GitHub Projects v2 items. It exposes HTTP logic functions such as `count-prs`, `fetch-prs`, `count-issues`, `fetch-issues`, `count-contributors`, `fetch-contributors`, `count-project-items`, and `fetch-project-items`, plus a signed-webhook handler `handle-github-webhook`. Configuration is driven by the variables `GITHUB_REPOS` (required), `GITHUB_PROJECTS` (optional, accepting `owner/number` or full project URLs), and `GITHUB_WEBHOOK_SECRET` (optional). Seven front components surface the connector in the UI, including a Contributor Stats panel and two Top-20 dashboard widgets for PR authors and reviewers ([packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md)).

The Fireflies internal app transcribes calls and links them to `CalendarEvent` records, storing a rich-text AI summary with bullet points, action items grouped by speaker, topics, and keywords, alongside a per-speaker quote breakdown. It also ships three workflow tools — `Sync Fireflies Call` for backfill and recovery, `List Fireflies Calls By Participant` as a workflow entry step, and an AI chat tool — turning logic functions into first-class workflow steps ([packages/twenty-apps/internal/twenty-fireflies/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-fireflies/README.md)).

### Development Loop

The `create-twenty-app` CLI provides the canonical edit/test loop. From an app directory, `yarn twenty dev` runs a local Twenty server, `yarn twenty remote:add` registers the local server as a sync target using an API key from **Settings → Developers**, and `yarn twenty build` and `yarn twenty deploy` produce installable artifacts. The CLI's troubleshooting section flags three recurring failures: a non-starting server usually means Docker is down, authentication failures mean `remote:add` must be re-run, and missing generated types indicate that `yarn twenty dev` is not running ([packages/create-twenty-app/README.md](https://github.com/twentyhq/twenty/blob/main/packages/create-twenty-app/README.md)).

## AI-Assisted Authoring

The `twenty-codex-plugin` package wraps the same platform in an AI-agent-friendly form. It ships five skills — `create-app`, `develop-app`, `manage-app`, `publish-app`, and `use-twenty-mcp` — coordinated by an `AGENTS.md` operating manual and reference documents under `references/`. The plugin works in two layers: a bundled `twenty-docs` MCP server is available immediately for documentation search, while workspace MCP endpoints are deliberately left user-local and are configured with `bash packages/twenty-codex-plugin/scripts/setup-mcp.sh myworkspace.twenty.com`, which names the server after the workspace host (for example, `twenty-myworkspace`) ([packages/twenty-codex-plugin/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/README.md)). The package declares Node 24.5+ and Yarn 4.0.2+ engines and is published under AGPL-3.0 ([packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json)).

## See Also

- [Getting Started Quick Start](https://docs.twenty.com/developers/extend/apps/getting-started/quick-start)
- [Building Apps](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md))
- [Publishing Apps](https://docs.twenty.com/developers/extend/apps/publishing)
- [Twenty Documentation](https://docs.twenty.com)

---

<a id='page-packages-twenty-apps-internal-people-data-labs-src'></a>

## Src

### Related Pages

Related topics: [Overview](#page-overview), [Src](#page-packages-twenty-apps-internal-twenty-meeting-bot-src)

<details>
<summary>Related Source Files</summary>

The following source files were used to generate this page:

- [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md)
- [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md)
- [packages/twenty-apps/internal/twenty-fireflies/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-fireflies/README.md)
- [packages/twenty-front-component-renderer/src/__stories__/shared/test-utils/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-front-component-renderer/src/__stories__/shared/test-utils/README.md)
- [packages/twenty-codex-plugin/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/README.md)
- [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json)
- [packages/twenty-client-sdk/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-client-sdk/package.json)
- [packages/twenty-ui/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-ui/README.md)
- [packages/twenty-server/scripts/ssl-generation/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/scripts/ssl-generation/README.md)
- [packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json)
</details>

# Src

## 1. Purpose and Scope

Within the Twenty monorepo, `src/` is the canonical source-of-truth directory used by every first-class package and every Twenty app. It holds the handwritten TypeScript (and, where applicable, Bash) code that gets compiled, packaged, and shipped, as opposed to generated artefacts that live under `dist/`, build output, or the README/markdown that lives at the package root.

The directory is used in three distinct roles:

- **As the app authoring surface** for Twenty apps — the place where objects, fields, logic functions, layouts, front components, workflows, agents, and page layouts are declared. Every example and community app in [`packages/twenty-apps/`](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps) follows this layout. Source: [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md).
- **As the implementation directory for shared libraries** such as `twenty-shared`, `twenty-client-sdk`, `twenty-ui`, and the `twenty-front-component-renderer`. Source: [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json) and [packages/twenty-client-sdk/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-client-sdk/package.json).
- **As a host for utility scripts and tooling**, for example the Bash SSL generation script that lives under `packages/twenty-server/scripts/ssl-generation/`. Source: [packages/twenty-server/scripts/ssl-generation/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/scripts/ssl-generation/README.md).

In short, anything you author as a contributor belongs under `src/`; anything that is the result of a build does not.

## 2. App `src/` Layout

The most prescriptive use of `src/` is inside a Twenty app. The postcard example documents the standard subfolders, and the same skeleton is reused by the GitHub connector and the Fireflies apps.

| Subfolder (under `src/`) | Purpose |
|---|---|
| `objects/` | Custom object definitions that the app installs into a workspace. |
| `fields/` | Field definitions attached to standard or custom objects. |
| `logic-functions/` | Serverless logic functions exposed as HTTP endpoints (e.g. `POST /github/count-prs`). |
| `front-components/` | Sandboxed UI components rendered inside the Twenty front-end. |
| `workflows/` | Workflow definitions, including the AI-call sync workflows used by Fireflies. |
| `agents/` | AI agents with a system prompt, consumed by the workflow builder. |
| `page-layouts/` | Custom record-page layouts that embed front-component widgets. |

Sources: [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md), [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md), [packages/twenty-apps/internal/twenty-fireflies/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-fireflies/README.md).

The GitHub connector demonstrates the runtime shape of these folders: thirteen logic functions live under `src/logic-functions/` and seven front components are declared under `src/front-components/`, one per user-facing surface (commands on objects, panels, dashboard widgets). Source: [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md).

The Fireflies app illustrates that `src/` also holds **workflow tools** — runtime helpers exposed in the workflow builder and in AI chat — alongside traditional workflows. These are declared as code in `src/` rather than configured in the UI so that they can be version-controlled and reused across workspaces. Source: [packages/twenty-apps/internal/twenty-fireflies/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-fireflies/README.md).

A typical local development loop is to edit files under `src/`, then run `yarn twenty dev` (or `yarn twenty remote:add` followed by `yarn twenty app:dev`) to push the changes into a local Twenty server for inspection. Source: [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md).

## 3. Library and Renderer `src/` Layout

Shared libraries use `src/` as the input to their bundler; the public surface is then re-exported from `dist/` and registered in `typesVersions` for subpath imports.

For `twenty-shared`, the package exposes thirteen subpath entries (`ai`, `application`, `constants`, `database-events`, `i18n`, `logic-function`, `metadata`, `testing`, `translations`, `types`, `utils`, `vite`, `workflow`, `workspace`). Each subpath maps to a sibling folder under `src/` and is materialised into `dist/<subpath>/index.d.ts` for consumers. Source: [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json).

The `twenty-client-sdk` package follows the same pattern with four subpaths (`core`, `metadata`, `rest`, `generate`) and declares bundled runtime dependencies (`graphql`, `genql`, `lodash`, `prettier`) plus dev-time tooling (`vite`, `vitest`, `vite-plugin-dts`). Source: [packages/twenty-client-sdk/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-client-sdk/package.json).

The `twenty-ui` package uses `src/` to organise a theming system (`src/theme/`, `src/theme-constants/`), global styles (`src/styles/`), and a categorical component library split into `display/`, `input/`, `layout/`, `navigation/`, `feedback/`, and `components/`. The package uses the internal alias `@ui/*` so that files moved between `twenty-ui` and `twenty-ui-deprecated` diff cleanly. Source: [packages/twenty-ui/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-ui/README.md).

For `twenty-front-component-renderer`, `src/` doubles as the place where Storybook stories live. The `src/__stories__/` tree is grouped by HTML tag and category (for example `html-tag/form/input/`), with each scenario shipping as a `*.front-component.tsx` bundle plus a paired `*.stories.tsx` Storybook file. Shared plumbing — utility helpers, fixture loaders, render harnesses — lives in `src/__stories__/shared/test-utils/`. Source: [packages/twenty-front-component-renderer/src/__stories__/shared/test-utils/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-front-component-renderer/src/__stories__/shared/test-utils/README.md).

## 4. Script and Tooling `src/` Equivalents

Not every package keeps its hand-written code strictly inside a directory named `src/`. The server package, for example, keeps its Bash tooling under `packages/twenty-server/scripts/ssl-generation/` and provides a self-contained `script.sh` that generates a private key, a root certificate authority, and a domain certificate, then (on macOS) registers the root with the keychain. Source: [packages/twenty-server/scripts/ssl-generation/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/scripts/ssl-generation/README.md).

The Codex plugin uses `scripts/` for its one-shot helpers — notably `setup-mcp.sh` (which configures a workspace MCP server) and `validate.js` (a Node script that lints the plugin manifest) — and `skills/` for the actual Codex skill bundles that drive app creation, development, publishing, and querying. Source: [packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json) and [packages/twenty-codex-plugin/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/README.md).

## 5. Common Conventions

Across all roles, the following conventions hold:

- Anything meant to be published ends up under a path declared in the package's `files` field; for the Codex plugin this includes `scripts/`, `skills/`, `templates/`, and `references/` but never build output. Source: [packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json).
- Anything that is generated (compiled JS, `.d.ts`, sourcemaps) lives under `dist/` and is the only directory re-exported through `typesVersions`. Source: [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json).
- App `src/` folders are namespace-aligned with the app's HTTP route names; the GitHub connector exposes `/github/*` paths for PR/issue/contributor/project commands and `/contributors/*` plus `/pull-request-reviews/*` for derived data, with each route implemented by a single file under `src/logic-functions/`. Source: [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md).

```mermaid
flowchart LR
  subgraph Authoring["Author-time (src/)"]
    A1["App: objects/ fields/ logic-functions/ front-components/ workflows/ agents/ page-layouts/"]
    A2["Library: src/&lt;subpath&gt;/ for ai, metadata, workflow, ..."]
    A3["Renderer: src/__stories__/ + src/__stories__/shared/test-utils/"]
    A4["Tooling: scripts/ or skills/"]
  end
  subgraph Build["Build-time"]
    B1["tsc / vite / esbuild"]
    B2["Storybook static export"]
    B3["Bash tooling (no build)"]
  end
  subgraph Ship["Ship-time (dist/ or files[])"]
    C1["dist/&lt;subpath&gt;/index.d.ts"]
    C2["npm package tarball"]
    C3["Codex marketplace entry"]
  end
  A1 --> B1 --> C2
  A2 --> B1 --> C1
  A3 --> B2 --> C2
  A4 --> B3 --> C3
```

## See Also

- [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md) — minimal end-to-end example of a Twenty app `src/` layout.
- [packages/twenty-codex-plugin/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/README.md) — Codex plugin package layout and skill bundles.
- [packages/twenty-ui/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-ui/README.md) — `twenty-ui` source tree, theming, and migration plan.
- [packages/twenty-server/scripts/ssl-generation/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/scripts/ssl-generation/README.md) — example of a tooling script living alongside `src/`.

---

<a id='page-packages-twenty-apps-internal-twenty-meeting-bot-src'></a>

## Src

### Related Pages

Related topics: [Src](#page-packages-twenty-apps-internal-people-data-labs-src), [Src](#page-packages-twenty-apps-internal-twenty-for-twenty-src)

<details>
<summary>Related Source Files</summary>

The following source files were used to generate this page:

- [packages/twenty-apps/internal/twenty-meeting-bot/src/application-config.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/application-config.ts)
- [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-description.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-description.ts)
- [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-display-name.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-display-name.ts)
- [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/application-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/application-universal-identifier.ts)
- [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/calendar-event-reconciliation-logic-function-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/calendar-event-reconciliation-logic-function-universal-identifier.ts)
- [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/call-recording-audio-field-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/call-recording-audio-field-universal-identifier.ts)
- [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md)
- [packages/twenty-apps/internal/twenty-fireflies/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-fireflies/README.md)
- [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md)
- [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json)
</details>

# Src

The `src/` directory is the canonical location for all authored code inside a Twenty application package. Every Twenty app — whether an internal integration (e.g. `twenty-meeting-bot`, `twenty-fireflies`), a community connector (e.g. `github-connector`), or a published example (e.g. `postcard`) — follows the same `src/` layout so that the `twenty` CLI can build, sync, and deploy it consistently. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/application-config.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/application-config.ts).

## 1. Purpose and Scope

The `src/` folder of a Twenty app is the single source of truth for the app's declaration. It contains:

- An `application-config.ts` that registers objects, fields, logic functions, layouts, front components, workflows, and agents. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/application-config.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/application-config.ts).
- A `constants/` subtree that holds stable identifiers and human-readable labels (description, display name, universal identifiers for the app and its sub-resources). Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-display-name.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-display-name.ts).
- Optional subfolders per app primitive (`objects/`, `logic-functions/`, `front-components/`, `workflows/`, `agents/`, `page-layouts/`) that hold the implementation files referenced from `application-config.ts`. Source: [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md).

Anything placed outside `src/` (top-level `package.json`, `yarn.lock`, `README.md`) is treated as package metadata by the build system and is not deployed into the Twenty workspace.

## 2. Canonical Layout

The `twenty-meeting-bot` app is a representative internal app and follows the canonical structure. The `constants/` folder centralises identifiers so that they can be reused across `application-config.ts` and individual resource files without circular imports. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/application-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/application-universal-identifier.ts).

Field-level universal identifiers (e.g. the `callRecordingAudio` field on a recording object) are also declared as standalone constants in `constants/` so the same identifier can be referenced by the field definition, by logic functions that read the field, and by tests. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/call-recording-audio-field-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/call-recording-audio-field-universal-identifier.ts).

Logic functions likewise use a dedicated universal-identifier constant. For example, the `calendar-event-reconciliation` logic function has its own file so it can be imported by name from the application config. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/calendar-event-reconciliation-logic-function-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/calendar-event-reconciliation-logic-function-universal-identifier.ts).

| `src/` Subfolder | Purpose | Example |
|---|---|---|
| `application-config.ts` | Registers all app resources with Twenty | `twenty-meeting-bot/src/application-config.ts` |
| `constants/` | Stable universal identifiers and display strings | `twenty-meeting-bot/src/constants/app-description.ts` |
| `objects/` | Custom object and field definitions | `postcard/src/objects/` |
| `logic-functions/` | HTTP/CRON-triggered server functions | `github-connector/` logic-function set |
| `front-components/` | UI components rendered inside Twenty | `github-connector/` (7 front components) |
| `agents/` | AI agent definitions with system prompts | `postcard/src/agents/` |
| `page-layouts/` | Custom record pages with widget zones | `postcard/src/page-layouts/` |
| `workflows/` | Workflow definitions and triggers | `twenty-fireflies/` (3 workflow tools) |

Source: [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md); [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md).

## 3. Resource Declaration Flow

```mermaid
flowchart LR
  A[application-config.ts] --> B[constants/]
  A --> C[objects/]
  A --> D[logic-functions/]
  A --> E[front-components/]
  A --> F[agents/]
  A --> G[workflows/]
  A --> H[page-layouts/]
  B -->|universal identifiers| C
  B -->|universal identifiers| D
  C -->|field refs| D
  D -->|HTTP routes| I[(Twenty workspace)]
  E --> J[Twenty UI]
  G -->|tool invocations| I
```

`application-config.ts` is the entry point the `twenty` CLI reads. It imports universal identifiers from `constants/` (so the same UUID is used in field definitions, logic functions, and tests) and composes the resource set. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/application-config.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/application-config.ts). The display name and description are themselves constants so the marketplace listing and the in-app settings page can reuse them. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-display-name.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-display-name.ts) and [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-description.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/app-description.ts).

## 4. Common Patterns and Failure Modes

- **Stable identifiers in `constants/`.** Universal identifiers are declared once and re-imported. Renaming a constant without updating the value would change the UUID and break existing installations, so identifiers are exported as frozen values. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/application-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/application-universal-identifier.ts).
- **Reused field identifiers.** The same `callRecordingAudio` field identifier is shared between the object definition, the logic function that writes the field, and the front component that renders the audio player. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/call-recording-audio-field-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/call-recording-audio-field-universal-identifier.ts).
- **Reconciliation functions.** Long-running apps often expose a dedicated reconciliation logic function (e.g. reconciling an external recording with the matching `CalendarEvent`) whose identifier is centralised for re-use. Source: [packages/twenty-apps/internal/twenty-meeting-bot/src/constants/calendar-event-reconciliation-logic-function-universal-identifier.ts](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-meeting-bot/src/constants/calendar-event-reconciliation-logic-function-universal-identifier.ts).
- **Common failure mode — `yarn twenty dev` not picking up changes.** The CLI watches `src/` recursively. A file placed at the package root (e.g. `helpers.ts`) is invisible to the build and will be silently dropped from the bundle. Source: [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md).
- **Shared utilities across apps.** The `twenty-shared` workspace package provides typed entry points (`@testing`, `@utils`, `@types`, `@workflow`, etc.) that `src/` files import via subpath aliases declared in `typesVersions`. Source: [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json).

## See Also

- [Twenty Codex Plugin](https://docs.twenty.com) — drives app scaffolding and development.
- [Building Apps](https://docs.twenty.com/developers/extend/apps/building) — primitive reference for objects, logic functions, front components, workflows, and agents.
- [Publishing](https://docs.twenty.com/developers/extend/apps/publishing) — preparing `src/` output for the npm/marketplace release.

---

<a id='page-packages-twenty-apps-internal-twenty-for-twenty-src'></a>

## Src

### Related Pages

Related topics: [Src](#page-packages-twenty-apps-internal-twenty-meeting-bot-src)

<details>
<summary>Related Source Files</summary>

The following source files were used to generate this page:

- [README.md](https://github.com/twentyhq/twenty/blob/main/README.md)
- [packages/twenty-codex-plugin/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/README.md)
- [packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json)
- [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json)
- [packages/twenty-client-sdk/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-client-sdk/package.json)
- [packages/twenty-ui/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-ui/README.md)
- [packages/twenty-docs/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-docs/README.md)
- [packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md)
- [packages/twenty-apps/internal/twenty-fireflies/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-fireflies/README.md)
- [packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md)
- [packages/twenty-server/scripts/ssl-generation/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/scripts/ssl-generation/README.md)
- [packages/twenty-front-component-renderer/src/__stories__/shared/test-utils/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-front-component-renderer/src/__stories__/shared/test-utils/README.md)
</details>

# Src

## Overview

`src` directories are the canonical home of source code across the Twenty monorepo. Twenty is an open-source CRM whose top-level `README.md` advertises a TypeScript + Nx + NestJS + React + PostgreSQL + Redis stack (see [README.md](https://github.com/twentyhq/twenty/blob/main/README.md)). Every package under `packages/*` follows the same convention: the runtime code lives under a `src/` folder, and the package's `package.json` defines entry points, type-versions, and build outputs. The `src/` tree is what authors edit, what Nx task graphs operate on, and what gets shipped as `dist/` to consumers.

Within Twenty, the term "src" therefore refers to several distinct source trees organized by concern: a shared utilities library, a UI library, server code, a front component renderer, a client SDK, an MCP-aware Codex plugin, the user-facing documentation site, and a family of installable apps (community, internal, and examples). Each is independently versioned but resolves shared types through workspace dependencies.

## High-Level Architecture

The monorepo's `src/` directories form a layered architecture: leaf packages (`twenty-shared`, `twenty-ui`) export primitives, mid-level packages (`twenty-client-sdk`, `twenty-front-component-renderer`, `twenty-codex-plugin`) compose them, and the top-level applications (`twenty-server`, `twenty-front`) plus installable apps (`twenty-apps/**`) consume them.

```mermaid
graph TB
  subgraph Foundation["Foundation src/ trees"]
    SHARED["twenty-shared/src<br/>(ai, application, logic-function,<br/>metadata, types, utils, workflow)"]
    UI["twenty-ui/src<br/>(display, input, layout,<br/>navigation, feedback, theme)"]
  end
  subgraph Mid["Mid-level packages"]
    SDK["twenty-client-sdk/src<br/>(core, rest, metadata, generate)"]
    FCR["twenty-front-component-renderer/src<br/>(__stories__, sandboxed workers)"]
    CODEX["twenty-codex-plugin<br/>(skills, scripts, templates)"]
  end
  subgraph Apps["Twenty apps and docs"]
    SERVER["twenty-server/src<br/>(NestJS, BullMQ, Postgres)"]
    FRONT["twenty-front/src<br/>(React UI)"]
    DOCS["twenty-docs/src<br/>(Mintlify MDX)"]
    INTERNAL["twenty-apps/internal/*<br/>(twenty-for-twenty, twenty-fireflies)"]
    COMMUNITY["twenty-apps/community/*<br/>(github-connector)"]
    EXAMPLES["twenty-apps/examples/*<br/>(postcard)"]
  end
  SHARED --> SDK
  SHARED --> CODEX
  UI --> FCR
  UI --> FRONT
  SDK --> SERVER
  SDK --> FRONT
  CODEX --> INTERNAL
  CODEX --> COMMUNITY
  DOCS --> FRONT
```

## Package-by-Package Source Layout

### `packages/twenty-shared/src/`

The shared library is intentionally thin and tree-shakeable. Its `package.json` (see [packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json)) exposes twelve subpath entry points: `ai`, `application`, `constants`, `database-events`, `i18n`, `logic-function`, `metadata`, `testing`, `translations`, `types`, `utils`, `vite`, `workflow`, and `workspace`. Each subpath maps to a `dist/<name>/index.d.ts` declaration under `typesVersions`, so consumers can `import` from a precise surface and let TypeScript resolve the matching barrel. This pattern keeps unrelated domains (AI prompts vs. database events vs. workspace schemas) from accidentally pulling each other into the bundle.

### `packages/twenty-ui/src/`

The UI package is structured around behavioral roles rather than visual ones. According to [packages/twenty-ui/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-ui/README.md), the source tree groups components into `display/`, `input/`, `layout/`, `navigation/`, `feedback/`, and `components/`, plus top-level folders for `styles/`, `theme/`, `accessibility/`, `utilities/`, `json-visualizer/`, `assets/`, and `testing/`. The migration plan in that README mandates **public-API parity with the deprecated `twenty-ui-deprecated` package**: same subpath exports, same component names, same prop signatures. Internally, the implementation swaps Linaria for SCSS Modules, hand-rolled behavior for Base UI, and prefers CSS transitions over `framer-motion` where possible.

### `packages/twenty-client-sdk/src/`

The client SDK is a TypeScript-first library targeting Node.js 24+ (see [packages/twenty-client-sdk/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-client-sdk/package.json)). It depends on `@genql/runtime`, `graphql`, `lodash`, `esbuild`, and `prettier`, and re-exports `twenty-shared` as a workspace dependency. The `typesVersions` block surfaces four subpaths — `core`, `metadata`, `rest`, and `generate` — letting server and front code import the right surface without bundling the others. The SDK is built with `vite` + `vite-plugin-dts` and tested with `vitest`.

### `packages/twenty-codex-plugin/`

The Codex plugin is the bridge that lets AI coding agents work on Twenty. Per [packages/twenty-codex-plugin/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/README.md) and [packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json), its source layout is `skills/`, `scripts/`, `templates/`, `references/`, and `assets/`. The `scripts/setup-mcp.sh` registers a workspace MCP server, while `scripts/validate.js` and the node test runner enforce plugin integrity. The `files` array in `package.json` deliberately lists `.codex-plugin`, `.mcp.json`, `AGENTS.md`, `skills/`, `templates/`, etc. — the exact artifacts Codex needs to find at install time.

### `packages/twenty-front-component-renderer/src/`

Front components are React bundles that run sandboxed inside the Twenty UI. The renderer's source tree includes a `__stories__/` folder that documents how components forward events and properties to the host page (see [packages/twenty-front-component-renderer/src/__stories__/shared/test-utils/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-front-component-renderer/src/__stories__/shared/test-utils/README.md)). Stories are grouped by HTML tag and scenario (e.g. `form/input/`, `form/textarea/`), with each scenario shipping a `*.front-component.tsx` plus a `*.stories.tsx` pairing.

### `packages/twenty-apps/**/src/`

Installable Twenty apps — both internal and community — share a `src/` convention whose top-level folders are documented in the postcard example ([packages/twenty-apps/examples/postcard/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/examples/postcard/README.md)):

| Folder | Purpose |
|---|---|
| `src/objects/` | Custom object and field definitions |
| `src/logic-functions/` | Server-side functions triggered by HTTP or webhooks |
| `src/front-components/` | UI commands, panels, dashboard widgets |
| `src/agents/` | AI agents with a system prompt |
| `src/page-layouts/` | Custom record pages using front component widgets |

This shape is visible in the GitHub connector ([packages/twenty-apps/community/github-connector/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/community/github-connector/README.md)), which lists custom objects, logic functions, and seven front components, and in the Fireflies integration ([packages/twenty-apps/internal/twenty-fireflies/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/internal/twenty-fireflies/README.md)), which adds workflow tools that supplement the webhook path.

### `packages/twenty-server/src/` and supporting scripts

The server source tree hosts the NestJS application, BullMQ workers, and database code that the top-level [README.md](https://github.com/twentyhq/twenty/blob/main/README.md) advertises. Auxiliary scripts live under `packages/twenty-server/scripts/`, e.g. the SSL generation helper described in [packages/twenty-server/scripts/ssl-generation/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-server/scripts/ssl-generation/README.md), which wraps `openssl` to mint a private key, root CA, and signed certificate for a configurable domain (default `localhost.com`, 398-day validity).

### `packages/twenty-docs/src/` (and `l/`, `navigation/`)

The documentation site is a Mintlify project. According to [packages/twenty-docs/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-docs/README.md), MDX pages are split into `user-guide/` (46 pages), `developers/` (24 pages), and `twenty-ui/` (25 pages). Navigation is governed by `navigation/base-structure.json` (in-repo), `navigation/navigation.template.json` (Crowdin source of truth), and per-locale label files under `packages/twenty-docs/l/<language>/navigation.json`.

## Working with `src/` Trees

A few rules recur across the source trees and are worth internalizing:

- **Entry points come from `package.json`.** The `typesVersions` block in both `twenty-shared` and `twenty-client-sdk` ([packages/twenty-shared/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-shared/package.json), [packages/twenty-client-sdk/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-client-sdk/package.json)) is the contract that downstream consumers rely on. New `src/` subfolders must be reflected there or they are effectively invisible.
- **Apps are self-contained.** The `twenty-apps/**/src/` layout — `objects/`, `logic-functions/`, `front-components/`, `agents/`, `page-layouts/` — is identical across community, internal, and example apps, which lets the `twenty-cli` tooling apply them uniformly.
- **The UI package is a drop-in replacement.** The migration in [packages/twenty-ui/README.md](https://github.com/twentyhq/twenty/blob/main/packages/twenty-ui/README.md) requires keeping the same subpath exports as `twenty-ui-deprecated`; touching internal implementation must never leak through the public API.
- **The Codex plugin's `files` list is the publish boundary.** Anything in `src/` of the plugin that is not listed under `files` in [packages/twenty-codex-plugin/package.json](https://github.com/twentyhq/twenty/blob/main/packages/twenty-codex-plugin/package.json) will not ship to the marketplace.

## See Also

- [Twenty Monorepo Overview](./README.md)
- [Twenty Apps — Authoring Guide](./packages-twenty-apps.md)
- [Twenty UI Migration](./packages-twenty-ui.md)
- [Twenty Codex Plugin](./packages-twenty-codex-plugin.md)

---

<!-- evidence_pipeline_checked: true -->
<!-- evidence_injected: true -->

---

## Pitfall Log

Project: twentyhq/twenty

Summary: Found 23 structured pitfall item(s), including 3 high/blocking item(s). Top priority: Installation risk - Installation risk requires verification.

## 1. Installation risk - Installation risk requires verification

- Severity: high
- Evidence strength: source_linked
- Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/twentyhq/twenty/issues/21969

## 2. Security or permission risk - Security or permission risk requires verification

- Severity: high
- Evidence strength: source_linked
- Finding: Developers should check this security_permissions risk before relying on the project: Hard Delete Option in Command Menu
- User impact: Developers may expose sensitive permissions or credentials: Hard Delete Option in Command Menu
- Evidence: failure_mode_cluster:github_issue | https://github.com/twentyhq/twenty/issues/21273

## 3. Security or permission risk - Security or permission risk requires verification

- Severity: high
- Evidence strength: source_linked
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/twentyhq/twenty/issues/21273

## 4. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this installation risk before relying on the project: twenty/v2.12.0
- User impact: Upgrade or migration may change expected behavior: twenty/v2.12.0
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/twenty/v2.12.0

## 5. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this installation risk before relying on the project: v2.7.0
- User impact: Upgrade or migration may change expected behavior: v2.7.0
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/v2.7.0

## 6. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this installation risk before relying on the project: v2.8.0
- User impact: Upgrade or migration may change expected behavior: v2.8.0
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/v2.8.0

## 7. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this installation risk before relying on the project: v2.9.0
- User impact: Upgrade or migration may change expected behavior: v2.9.0
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/v2.9.0

## 8. Installation risk - Installation risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/twentyhq/twenty/issues/19676

## 9. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: QuotaExceededError blocks login after upgrading to 2.12.x / 2.13.2
- User impact: Developers may misconfigure credentials, environment, or host setup: QuotaExceededError blocks login after upgrading to 2.12.x / 2.13.2
- Evidence: failure_mode_cluster:github_issue | https://github.com/twentyhq/twenty/issues/21581

## 10. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: twenty/v2.10
- User impact: Upgrade or migration may change expected behavior: twenty/v2.10
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/twenty/v2.10.0

## 11. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: twenty/v2.13.0
- User impact: Upgrade or migration may change expected behavior: twenty/v2.13.0
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/twenty/v2.13.0

## 12. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this configuration risk before relying on the project: twenty/v2.14.0
- User impact: Upgrade or migration may change expected behavior: twenty/v2.14.0
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/twenty/v2.14.0

## 13. Configuration risk - Configuration risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a configuration risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/twentyhq/twenty/issues/21962

## 14. Capability evidence risk - Capability evidence risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: README/documentation is current enough for a first validation pass.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: capability.assumptions | https://github.com/twentyhq/twenty

## 15. Runtime risk - Runtime risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this runtime risk before relying on the project: Email & Calendar tabs error on custom objects with join-table relations to Person
- User impact: Developers may hit a documented source-backed failure mode: Email & Calendar tabs error on custom objects with join-table relations to Person
- Evidence: failure_mode_cluster:github_issue | https://github.com/twentyhq/twenty/issues/19676

## 16. Maintenance risk - Maintenance risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this migration risk before relying on the project: twenty/v2.11.0
- User impact: Upgrade or migration may change expected behavior: twenty/v2.11.0
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/twenty/v2.11.0

## 17. Maintenance risk - Maintenance risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Developers should check this migration risk before relying on the project: v2.6.0
- User impact: Upgrade or migration may change expected behavior: v2.6.0
- Evidence: failure_mode_cluster:github_release | https://github.com/twentyhq/twenty/releases/tag/v2.6.0

## 18. Maintenance risk - Maintenance risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a maintenance risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: evidence.maintainer_signals | https://github.com/twentyhq/twenty

## 19. Security or permission risk - Security or permission risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: no_demo
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: downstream_validation.risk_items | https://github.com/twentyhq/twenty

## 20. Security or permission risk - Security or permission risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: no_demo
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: risks.scoring_risks | https://github.com/twentyhq/twenty

## 21. Security or permission risk - Security or permission risk requires verification

- Severity: medium
- Evidence strength: source_linked
- Finding: Project evidence flags a security or permission risk. Review the linked source before relying on this workflow.
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: community_evidence:github | https://github.com/twentyhq/twenty/issues/21581

## 22. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: issue_or_pr_quality=unknown。
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: evidence.maintainer_signals | https://github.com/twentyhq/twenty

## 23. Maintenance risk - Maintenance risk requires verification

- Severity: low
- Evidence strength: source_linked
- Finding: release_recency=unknown。
- User impact: May increase setup, validation, or first-run risk for the user.
- Evidence: evidence.maintainer_signals | https://github.com/twentyhq/twenty

<!-- canonical_name: twentyhq/twenty; human_manual_source: deepwiki_human_wiki -->
