camelAI Documentation

Plan

Self-host camelAI

Run camelAI on a single Linux VM with Docker Compose, your identity provider, and your AI provider.

camelAI supports a single-node deployment for organizations that need to run the control plane and project data in their own environment. The supported topology is one x86_64 Linux VM running Docker Engine and Docker Compose.

The deployment includes the camelAI application, local project storage, Pomerium authentication, and isolated containers for builds, notebooks, and database queries.

Install with a coding agent

In a shell on the target VM (or with SSH access), paste this prompt into a coding agent such as Codex, Claude Code, or OpenCode:

Read the canonical installation instructions at
https://camelai.com/docs/self-hosting/overview and every linked guide relevant
to the installation, then install and configure self-hosted camelAI on this
VM.

Supported topology

The self-hosted application runs under local workerd. It stores application state and project Git repositories in Docker volumes. When a user builds an app, runs a notebook, or queries a database, workerd starts a dedicated Docker container for that job.

ComponentImplementation
Web application and APIscamelAI application container running local workerd
AuthenticationBundled Pomerium with OIDC, existing Pomerium, or Cloudflare Access
Application stateLocal Durable Objects, KV, R2, D1, queues, and workflows
Project source and historyLocal Artifact repositories in a persistent Docker volume
Project builds and deploysAttached project-build containers
Notebook analysisAttached Jupyter analysis containers
SQL queries and exportsAttached database-query containers
Published appsLocal dispatcher served through your wildcard app domain

Publishing generated apps does not require a Cloudflare account or Cloudflare Workers API token. A Cloudflare DNS token is optional and is used only when you choose Cloudflare DNS for automatic TLS certificate validation.

This target does not provide multi-node failover or a managed control plane. Backups, VM availability, network policy, monitoring, and disaster recovery remain the operator's responsibility.

Requirements

Use a VM with:

  • x86_64 Ubuntu 24.04 or another current x86_64 Linux distribution
  • At least 4 vCPUs and 8 GiB allocated RAM
  • 100 GiB of persistent disk recommended
  • Docker Engine and Docker Compose v2
  • Git, Node.js 22, and Bun 1.3.14
  • Outbound HTTPS access to GHCR, your AI provider, and package registries

You also need:

  • A hostname for camelAI, such as camel.example.com
  • A separate Pomerium authenticate hostname, such as authenticate.example.com
  • A wildcard domain for deployed apps, such as *.apps.example.com
  • An OIDC application, or an existing Pomerium or Cloudflare Access deployment
  • An API key for Bedrock, Anthropic, OpenAI, OpenRouter, or a compatible custom provider
  • Cloudflare or Route 53 DNS-validation access for automatic certificates, an existing enterprise TLS terminator, or a certificate covering the required hostnames

Docker may report 7.5 to 7.8 GiB of usable memory on an 8 GiB VM after normal kernel overhead.

Capability status

CapabilityStatus
Chat with Bedrock, Anthropic, OpenAI, OpenRouter, or a compatible providerSupported with an API key
Build and deploy generated applicationsSupported
Run notebooksSupported
Query connected databasesSupported
Browser renderingSupported
Keep workspace connections unavailable to deployed appsSupported with CONNECTIONS_BINDING_ENABLED=false
Add organization-specific agent instructions and skillsSupported through .selfhost/agent/
Password signup and email verificationNot supported
Outbound emailDisabled
Internal SMTPNot implemented
Multi-node failoverNot included

Self-hosted camelAI does not send email. Verification email, invitation delivery, the email-backed help form, and the agent's email tool are unavailable. Invitations can still be created so an administrator can deliver the invitation URL through an approved internal channel.

SMTP settings do not enable delivery. Support for an operator-managed internal SMTP server is planned, but no SMTP transport is included today.

Security boundaries

The application container has read-write access to the Docker socket so it can create the isolated execution containers. Anyone who can control that container has root-equivalent control of the VM.

Sandbox storage synchronization does not require privileged containers. Do not give generated-code containers /dev/fuse, SYS_ADMIN, or an unconfined AppArmor profile; current self-host releases synchronize local R2 data through the sandbox file APIs.

The application, local Artifact service, and Pomerium upstream bind to loopback by default. Keep them there and expose camelAI only through the Caddy front door and a supported identity-aware proxy. Do not expose the Docker socket over TCP.

The bundled Pomerium route protects the camelAI control-plane hostname. Wildcard deployed-app hosts use a separate route so public apps remain public. Private app access is still enforced by camelAI.

Choose a deployment path

Use Docker Compose when you already have a Linux VM and want to manage its network, storage, and TLS directly.

Use AWS single-node deployment when you want Terraform or CloudFormation to provision the EC2 instance, encrypted data volume, IAM permissions, Secrets Manager access, DNS, and system services.

Read Authentication and Pomerium before creating DNS or the OIDC application. After installation, use the operations guide for health checks, runtime smokes, backups, and upgrades. Use agent customization to teach the coding agent about internal APIs and application standards.