Twenty is an open-source CRM alternative to Salesforce and Pipedrive that lets teams define custom objects, workflows, and views as TypeScript code.
Félix Malfait and Charles Bochet founded Twenty in 2023 after repeatedly building internal tools to bypass rigid legacy CRMs. They designed the platform as an open-source system that engineering teams can version-control and deploy like application code. Today, Twenty provides a TypeScript foundation that lets technical teams shape customer data models directly to their operational workflows.
Salesforce requires dedicated administrators to manage page layouts, permissions, and proprietary Apex triggers, disconnecting engineering from sales operations. Twenty aligns CRM configuration with software development. Ops leads and developers define custom objects, relations, and automations in TypeScript or a clean visual interface, committing schema changes to Git and reviewing them in pull requests alongside the rest of the application stack.
While Salesforce brings an expansive AppExchange catalog, multi-department service desks, and advanced CPQ tools, Twenty focuses on core pipeline execution. It delivers Kanban boards, contact histories, notes, and two-way Gmail and Microsoft 365 email sync without enterprise overhead. Migrating requires exporting records as CSV files and mapping foreign keys to Twenty's PostgreSQL tables, trading complex billing engines for fast keyboard navigation, direct database queries, and zero per-seat fees.
Is Twenty free for commercial use? Yes. You can self-host Twenty for business operations without licensing fees, provided modifications adhere to its copyleft requirements.
Twenty vs Salesforce — which should I choose? Choose Salesforce if you rely on enterprise CPQ modules, a vast third-party marketplace, and global support contracts. Choose Twenty if you want a developer-friendly CRM that you can version in Git and host on private infrastructure.
Can I self-host Twenty with Docker? Yes. The project provides official images and a Docker Compose configuration that runs the application alongside PostgreSQL, Redis, and BullMQ.
Twenty is an ideal choice for technical teams and agencies that treat CRM architecture as software, though it is not intended for teams requiring turn-key outbound dialers or enterprise CPQ suites. Actively maintained with commits through September 2026, its AGPL-3.0 codebase guarantees long-term self-hosting freedom as long as modifications to networked deployments remain open under reciprocal terms.
We started this exact setup from scratch in a clean Linux machine on Nov 1, 2026 and checked it through Twenty's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p twenty && cd twenty
curl -fsSL https://open-source.store/tools/twenty/compose.yml -o compose.ymlcat > .env <<EOF
SERVER_URL=http://localhost:3000
PG_DATABASE_PASSWORD=$(openssl rand -hex 16)
ENCRYPTION_KEY=$(openssl rand -base64 32)
STORAGE_TYPE=local
EOFSERVER_URL — Public URL where Twenty is reached (e.g. http://<your-server>:3000 or https://twenty.example.com); set this to your server's public URL.PG_DATABASE_PASSWORD — Password of the bundled PostgreSQL database. Generated above; keep it secret.ENCRYPTION_KEY — Random 32-byte base64 key that encrypts tokens and secrets stored in the database. Generated above; keep it secret.STORAGE_TYPE — Where uploaded files are kept; local stores them in the server-local-data volume.docker compose up -dname: twenty
services:
server:
image: twentycrm/twenty:v2.54.0
volumes:
- server-local-data:/app/packages/twenty-server/.local-storage
ports:
- "3000:3000"
environment:
NODE_PORT: 3000
PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/${PG_DATABASE_NAME:-default}
SERVER_URL: ${SERVER_URL}
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
REDIS_CACHE_PREFIX: ${REDIS_CACHE_PREFIX:-}
STORAGE_TYPE: ${STORAGE_TYPE}
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: curl --fail http://localhost:3000/healthz
interval: 5s
timeout: 5s
retries: 20
restart: always
worker:
image: twentycrm/twenty:v2.54.0
volumes:
- server-local-data:/app/packages/twenty-server/.local-storage
command: ["yarn", "worker:prod"]
environment:
PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/${PG_DATABASE_NAME:-default}
SERVER_URL: ${SERVER_URL}
REDIS_URL: ${REDIS_URL:-redis://redis:6379}
REDIS_CACHE_PREFIX: ${REDIS_CACHE_PREFIX:-}
DISABLE_DB_MIGRATIONS: "true"
DISABLE_CRON_JOBS_REGISTRATION: "true"
STORAGE_TYPE: ${STORAGE_TYPE}
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
depends_on:
db:
condition: service_healthy
server:
condition: service_healthy
restart: always
db:
image: postgres:16
volumes:
- db-data:/var/lib/postgresql/data
environment:
POSTGRES_DB: ${PG_DATABASE_NAME:-default}
POSTGRES_PASSWORD: ${PG_DATABASE_PASSWORD}
POSTGRES_USER: ${PG_DATABASE_USER:-postgres}
healthcheck:
test: pg_isready -U ${PG_DATABASE_USER:-postgres} -h localhost -d postgres
interval: 5s
timeout: 5s
retries: 10
restart: always
redis:
image: redis:8.2
restart: always
command: ["--maxmemory-policy", "noeviction"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 10
volumes:
db-data:
server-local-data:
Go, gRPC and Protobuf done right, LLM agents in production, and the hard parts of shipping a first product.
Show that Twenty is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 300 s: postgres:16, redis:8.2, twentycrm/twenty:v2.54.0, twentycrm/twenty:v2.54.0.
Based on the upstream setup. Official compose with images pinned (twenty v2.54.0, redis 8.2); unused S3, legacy APP_SECRET/FALLBACK_ENCRYPTION_KEY and commented OAuth/SMTP variables dropped since storage is local.
server-1 | 2026-11-01T15:15:52.593485638Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner transaction summary: 1 actions, total transaction 1.0ms (commit 0.3ms), slowest action create:role 0.6ms
server-1 | 2026-11-01T15:15:52.593509179Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Transaction execution: 1.1ms
server-1 | 2026-11-01T15:15:52.600494304Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Cache invalidation flatRoleMaps,flatRoleTargetMaps,flatObjectPermissionMaps,flatRolePermissionFlagMaps,flatFieldPermissionMaps,flatRowLevelPermissionPredicateMaps,flatRowLevelPermissionPredicateGroupMaps,flatAgentChatChannelRoleMaps: 6.9ms
server-1 | 2026-11-01T15:15:52.600534304Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner post-commit invalidateCache took 6.9ms for 8 flat-maps keys
server-1 | 2026-11-01T15:15:52.600548888Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Total execution: 8.4ms
server-1 | 2026-11-01T15:15:52.600625596Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] workspaceMigrationRunnerService.run took 8.5ms for 1 actions
server-1 | 2026-11-01T15:15:52.652060429Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] matrix computation: 0.0ms
server-1 | 2026-11-01T15:15:52.652100388Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] deletion validation: 0.0ms
server-1 | 2026-11-01T15:15:52.652554138Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] creation validation: 0.4ms
server-1 | 2026-11-01T15:15:52.652723679Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] update validation: 0.0ms
server-1 | 2026-11-01T15:15:52.652727013Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] entity processing: 0.6ms
server-1 | 2026-11-01T15:15:52.652727929Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] validateAndBuild: 0.6ms
server-1 | 2026-11-01T15:15:52.653023513Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] buildWorkspaceMigration took 1.3ms (status=success)
server-1 | 2026-11-01T15:15:52.653059221Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] validateBuildAndRunWorkspaceMigrationFromTo running 1 actions: {"create:logicFunction":1}
server-1 | 2026-11-01T15:15:52.653164346Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Initial cache retrieval: 0.1ms
server-1 | 2026-11-01T15:15:52.653192971Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner initial cache retrieval (getOrRecomputeManyOrAllFlatEntityMaps) took 0.1ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.653246888Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner flat-maps clone took 0.0ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.653861888Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [BaseWorkspaceMigrationRunnerActionHandlerService] create_logicFunction executeForWorkspaceSchema: 0.2ms
server-1 | 2026-11-01T15:15:52.655381846Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [BaseWorkspaceMigrationRunnerActionHandlerService] create_logicFunction executeForMetadata: 1.8ms
server-1 | 2026-11-01T15:15:52.656156888Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner transaction summary: 1 actions, total transaction 2.7ms (commit 0.6ms), slowest action create:logicFunction 2.1ms
server-1 | 2026-11-01T15:15:52.656165096Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Transaction execution: 2.9ms
server-1 | 2026-11-01T15:15:52.658543096Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Cache invalidation flatLogicFunctionMaps: 2.2ms
server-1 | 2026-11-01T15:15:52.658558888Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner post-commit invalidateCache took 2.3ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.658584971Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Total execution: 5.5ms
server-1 | 2026-11-01T15:15:52.658633513Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] workspaceMigrationRunnerService.run took 5.5ms for 1 actions
server-1 | 2026-11-01T15:15:52.671104638Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] matrix computation: 0.0ms
server-1 | 2026-11-01T15:15:52.671140638Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] deletion validation: 0.0ms
server-1 | 2026-11-01T15:15:52.671434596Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] creation validation: 0.3ms
server-1 | 2026-11-01T15:15:52.671456221Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] update validation: 0.0ms
server-1 | 2026-11-01T15:15:52.671471138Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] entity processing: 0.4ms
server-1 | 2026-11-01T15:15:52.671495513Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] validateAndBuild: 0.5ms
server-1 | 2026-11-01T15:15:52.671984138Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] buildWorkspaceMigration took 1.3ms (status=success)
server-1 | 2026-11-01T15:15:52.672013138Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] validateBuildAndRunWorkspaceMigrationFromTo running 1 actions: {"create:logicFunction":1}
server-1 | 2026-11-01T15:15:52.672116929Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Initial cache retrieval: 0.0ms
server-1 | 2026-11-01T15:15:52.672151846Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner initial cache retrieval (getOrRecomputeManyOrAllFlatEntityMaps) took 0.1ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.672200096Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner flat-maps clone took 0.0ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.673383596Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [BaseWorkspaceMigrationRunnerActionHandlerService] create_logicFunction executeForWorkspaceSchema: 0.2ms
server-1 | 2026-11-01T15:15:52.674031221Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [BaseWorkspaceMigrationRunnerActionHandlerService] create_logicFunction executeForMetadata: 0.9ms
server-1 | 2026-11-01T15:15:52.674473138Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner transaction summary: 1 actions, total transaction 2.1ms (commit 0.3ms), slowest action create:logicFunction 1.1ms
server-1 | 2026-11-01T15:15:52.674492346Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Transaction execution: 2.2ms
server-1 | 2026-11-01T15:15:52.675879929Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Cache invalidation flatLogicFunctionMaps: 1.3ms
server-1 | 2026-11-01T15:15:52.675899096Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner post-commit invalidateCache took 1.3ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.675920429Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Total execution: 3.8ms
server-1 | 2026-11-01T15:15:52.675960221Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] workspaceMigrationRunnerService.run took 3.9ms for 1 actions
server-1 | 2026-11-01T15:15:52.680058179Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] matrix computation: 0.0ms
server-1 | 2026-11-01T15:15:52.680091304Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] deletion validation: 0.0ms
server-1 | 2026-11-01T15:15:52.680203138Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] creation validation: 0.1ms
server-1 | 2026-11-01T15:15:52.680225304Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] update validation: 0.0ms
server-1 | 2026-11-01T15:15:52.680228013Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] entity processing: 0.2ms
server-1 | 2026-11-01T15:15:52.680248513Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder logicFunction] validateAndBuild: 0.3ms
server-1 | 2026-11-01T15:15:52.680439638Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] buildWorkspaceMigration took 0.6ms (status=success)
server-1 | 2026-11-01T15:15:52.680472096Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] validateBuildAndRunWorkspaceMigrationFromTo running 1 actions: {"create:logicFunction":1}
server-1 | 2026-11-01T15:15:52.680661221Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Initial cache retrieval: 0.1ms
server-1 | 2026-11-01T15:15:52.680679554Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner initial cache retrieval (getOrRecomputeManyOrAllFlatEntityMaps) took 0.2ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.680721013Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner flat-maps clone took 0.0ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.681258054Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [BaseWorkspaceMigrationRunnerActionHandlerService] create_logicFunction executeForWorkspaceSchema: 0.4ms
server-1 | 2026-11-01T15:15:52.681556763Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [BaseWorkspaceMigrationRunnerActionHandlerService] create_logicFunction executeForMetadata: 0.7ms
server-1 | 2026-11-01T15:15:52.681841888Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner transaction summary: 1 actions, total transaction 1.0ms (commit 0.2ms), slowest action create:logicFunction 0.8ms
server-1 | 2026-11-01T15:15:52.681858804Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Transaction execution: 1.1ms
server-1 | 2026-11-01T15:15:52.683439971Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Cache invalidation flatLogicFunctionMaps: 1.5ms
server-1 | 2026-11-01T15:15:52.683527596Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner post-commit invalidateCache took 1.6ms for 1 flat-maps keys
server-1 | 2026-11-01T15:15:52.683548013Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Total execution: 3.0ms
server-1 | 2026-11-01T15:15:52.683576763Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] workspaceMigrationRunnerService.run took 3.1ms for 1 actions
server-1 | 2026-11-01T15:15:52.697211471Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder commandMenuItem] matrix computation: 0.0ms
server-1 | 2026-11-01T15:15:52.697257054Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder commandMenuItem] deletion validation: 0.0ms
server-1 | 2026-11-01T15:15:52.697422804Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder commandMenuItem] creation validation: 0.2ms
server-1 | 2026-11-01T15:15:52.697439721Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder commandMenuItem] update validation: 0.0ms
server-1 | 2026-11-01T15:15:52.697457179Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder commandMenuItem] entity processing: 0.3ms
server-1 | 2026-11-01T15:15:52.697476638Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [EntityBuilder commandMenuItem] validateAndBuild: 0.3ms
server-1 | 2026-11-01T15:15:52.697878888Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] buildWorkspaceMigration took 0.9ms (status=success)
server-1 | 2026-11-01T15:15:52.697896096Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] validateBuildAndRunWorkspaceMigrationFromTo running 1 actions: {"create:commandMenuItem":1}
server-1 | 2026-11-01T15:15:52.698133013Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Initial cache retrieval: 0.2ms
server-1 | 2026-11-01T15:15:52.698151763Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner initial cache retrieval (getOrRecomputeManyOrAllFlatEntityMaps) took 0.2ms for 4 flat-maps keys
server-1 | 2026-11-01T15:15:52.699763179Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner flat-maps clone took 1.6ms for 4 flat-maps keys
server-1 | 2026-11-01T15:15:52.700178471Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [BaseWorkspaceMigrationRunnerActionHandlerService] create_commandMenuItem executeForWorkspaceSchema: 0.1ms
server-1 | 2026-11-01T15:15:52.700773513Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [BaseWorkspaceMigrationRunnerActionHandlerService] create_commandMenuItem executeForMetadata: 0.8ms
server-1 | 2026-11-01T15:15:52.701145679Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner transaction summary: 1 actions, total transaction 1.2ms (commit 0.3ms), slowest action create:commandMenuItem 0.9ms
server-1 | 2026-11-01T15:15:52.701153471Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Transaction execution: 1.4ms
server-1 | 2026-11-01T15:15:52.715268679Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Cache invalidation flatCommandMenuItemMaps,flatObjectMetadataMaps,flatFrontComponentMaps,flatPageLayoutMaps: 14.0ms
server-1 | 2026-11-01T15:15:52.715314638Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] [install-perf] Runner post-commit invalidateCache took 14.1ms for 4 flat-maps keys
server-1 | 2026-11-01T15:15:52.715319929Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [Runner] Total execution: 17.3ms
server-1 | 2026-11-01T15:15:52.715320804Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [WorkspaceMigrationValidateBuildAndRunService] [install-perf] workspaceMigrationRunnerService.run took 17.4ms for 1 actions
server-1 | 2026-11-01T15:15:52.809986763Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [RestApiCoreController] [REST API] Processing POST request to /rest/companies on workspace cdbf2e4a-56a4-401d-8a84-cc503ef1ca41
server-1 | 2026-11-01T15:15:52.838786513Z [Nest] 1 - 11/01/2026, 3:15:52 PM LOG [RestApiCoreController] [REST API] Processing GET request to /rest/companies/62560d2d-9ff0-425d-8572-03cf3ae2f3cf on workspace cdbf2e4a-56a4-401d-8a84-cc503ef1ca41
server-1 | 2026-11-01T15:15:59.167131459Z [Nest] 1 - 11/01/2026, 3:15:59 PM ERROR [FrontendService] Unable to serve frontend document
server-1 | 2026-11-01T15:15:59.168487251Z [Nest] 1 - 11/01/2026, 3:15:59 PM ERROR [FrontendService] TypeError: Invalid URL
server-1 | 2026-11-01T15:15:59.168493376Z at new URL (node:internal/url:911:25)
server-1 | 2026-11-01T15:15:59.168494626Z at DomainServerConfigService.getSubdomainAndCustomDomainFromUrl (/app/packages/twenty-server/dist/engine/core-modules/domain/domain-server-config/services/domain-server-config.service.js:53:27)
server-1 | 2026-11-01T15:15:59.168495793Z at WorkspaceDomainsService.resolveWorkspaceAndPublicDomain (/app/packages/twenty-server/dist/engine/core-modules/domain/workspace-domains/services/workspace-domains.service.js:84:100)
server-1 | 2026-11-01T15:15:59.168496751Z at FrontendService.serveDocument (/app/packages/twenty-server/dist/engine/core-modules/frontend/frontend.service.js:83:86)
server-1 | 2026-11-01T15:15:59.168497584Z at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
server-1 | 2026-11-01T15:15:59.168498376Z at trimPrefix (/app/node_modules/router/index.js:342:13)
server-1 | 2026-11-01T15:15:59.168499084Z at /app/node_modules/router/index.js:297:9
server-1 | 2026-11-01T15:15:59.168499793Z at processParams (/app/node_modules/router/index.js:582:12)
server-1 | 2026-11-01T15:15:59.168500501Z at next (/app/node_modules/router/index.js:291:5)
server-1 | 2026-11-01T15:15:59.168501251Z at SendStream.error (/app/node_modules/serve-static/index.js:120:7) {
server-1 | 2026-11-01T15:15:59.168502084Z code: 'ERR_INVALID_URL',
server-1 | 2026-11-01T15:15:59.168507709Z input: "http://[::1]' UNION SELECT '/"
server-1 | 2026-11-01T15:15:59.168508418Z }
server-1 | 2026-11-01T15:15:59.168826293Z [Nest] 1 - 11/01/2026, 3:15:59 PM ERROR [FrontendService] Unable to serve frontend document
server-1 | 2026-11-01T15:15:59.168890251Z [Nest] 1 - 11/01/2026, 3:15:59 PM ERROR [FrontendService] TypeError: Invalid URL
server-1 | 2026-11-01T15:15:59.168891543Z at new URL (node:internal/url:911:25)
server-1 | 2026-11-01T15:15:59.168892168Z at DomainServerConfigService.getSubdomainAndCustomDomainFromUrl (/app/packages/twenty-server/dist/engine/core-modules/domain/domain-server-config/services/domain-server-config.service.js:53:27)
server-1 | 2026-11-01T15:15:59.168892918Z at WorkspaceDomainsService.resolveWorkspaceAndPublicDomain (/app/packages/twenty-server/dist/engine/core-modules/domain/workspace-domains/services/workspace-domains.service.js:84:100)
server-1 | 2026-11-01T15:15:59.168899459Z at FrontendService.serveDocument (/app/packages/twenty-server/dist/engine/core-modules/frontend/frontend.service.js:83:86)
server-1 | 2026-11-01T15:15:59.168900168Z at Layer.handleRequest (/app/node_modules/router/lib/layer.js:152:17)
server-1 | 2026-11-01T15:15:59.168900709Z at trimPrefix (/app/node_modules/router/index.js:342:13)
server-1 | 2026-11-01T15:15:59.168901293Z at /app/node_modules/router/index.js:297:9
server-1 | 2026-11-01T15:15:59.168901959Z at processParams (/app/node_modules/router/index.js:582:12)
server-1 | 2026-11-01T15:15:59.168902626Z at next (/app/node_modules/router/index.js:291:5)
server-1 | 2026-11-01T15:15:59.168903418Z at SendStream.error (/app/node_modules/serve-static/index.js:120:7) {
server-1 | 2026-11-01T15:15:59.168904084Z code: 'ERR_INVALID_URL',
server-1 | 2026-11-01T15:15:59.168905668Z input: "http://[::1]' UNION SELECT '/"
server-1 | 2026-11-01T15:15:59.168906209Z }
server-1 | 2026-11-01T15:16:36.412470088Z [Nest] 1 - 11/01/2026, 3:16:36 PM WARN [JwtAuthGuard] Auth failed: Missing authentication token
server-1 | 2026-11-01T15:16:36.413175963Z [Nest] 1 - 11/01/2026, 3:16:36 PM WARN [JwtAuthGuard] Auth failed: Missing authentication token
server-1 | 2026-11-01T15:16:39.338632422Z [Nest] 1 - 11/01/2026, 3:16:39 PM WARN [JwtAuthGuard] Auth failed: Missing authentication token
server-1 | 2026-11-01T15:16:39.397029506Z [Nest] 1 - 11/01/2026, 3:16:39 PM WARN [JwtAuthGuard] Auth failed: Missing authentication token
server-1 | 2026-11-01T15:16:39.400511797Z [Nest] 1 - 11/01/2026, 3:16:39 PM WARN [JwtAuthGuard] Auth failed: Missing authentication token
server-1 | 2026-11-01T15:16:39.426621297Z [Nest] 1 - 11/01/2026, 3:16:39 PM WARN [JwtAuthGuard] Auth failed: Missing authentication token