Get started with Plane AI Commercial Edition
Plane AI brings AI-powered features to your workspace, including natural language chat, duplicate detection, and search across work items, pages, and projects. This guide walks you through configuring Plane AI on your self-hosted instance.
For an overview of what Plane AI can do, see Plane AI.
Plane AI requires four things to work:
- An LLM API key (OpenAI or Anthropic) — powers AI responses.
- OpenSearch — Search over your workspace data (issues, pages, docs) runs through OpenSearch indices.
- A dedicated database — Plane AI must not share the main Plane application database.
- Read access to the main Plane database — PI reads workspace data directly from the main Plane DB.
For an overview of what Plane AI can do, see Plane AI.
Supported LLM providers
OpenAI (OPENAI_API_KEY)
- GPT-5.4
- GPT-5.2
Anthropic (CLAUDE_API_KEY)
- Claude Sonnet 4.5
- Claude Sonnet 4.6
Set both keys to give users access to models from both providers. If only one is set, users only see that provider's models.
Custom or self-hosted models
To use Ollama, Groq, LiteLLM, AWS Bedrock, or any OpenAI-compatible endpoint, see Custom LLM models.
Step 1 — Set up databases
Plane AI needs two database connections:
PLANE_PI_DATABASE_URL=postgresql://user:password@host:5432/plane-pi
FOLLOWER_POSTGRES_URI=postgresql://user:password@host:5432/planePLANE_PI_DATABASE_URL— PI's own dedicated database. Must not be shared with the main Plane application database.FOLLOWER_POSTGRES_URI— Read connection to the main Plane database. PI reads workspace data (issues, pages, projects) directly from here. Can be a read replica.
Both are checked at startup — PI will not start if either is unreachable.
Step 2 — Configure OpenSearch
Add to /opt/plane/plane.env:
OPENSEARCH_URL=https://your-opensearch-instance:9200/
OPENSEARCH_USERNAME=admin
OPENSEARCH_PASSWORD=your-secure-passwordIf you haven't set up OpenSearch yet, see OpenSearch for advanced search first.
Step 3 — Add an LLM API key
Add at least one to /opt/plane/plane.env:
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
CLAUDE_API_KEY=xxxxxxxxxxxxxxxxStep 4 — Connect Plane AI to your Plane deployment
Plane AI runs as a separate service and must be wired to your Plane deployment. Two things matter here:
In the Plane API env (/opt/plane/plane.env), tell Plane where PI is reachable:
PI_BASE_URL=https://plane.example.comPlane builds the PI URL as PI_BASE_URL + PI_BASE_PATH — with the default PI_BASE_PATH=/pi this becomes https://plane.example.com/pi.
In the PI env (/opt/plane/plane.env), set the OAuth redirect URI to match:
PLANE_OAUTH_REDIRECT_URI=https://plane.example.com/pi/api/v1/oauth/callback/Step 5 — Enable Plane AI services
Other deployment methods
For Coolify, Portainer, Docker Swarm, and Podman Quadlets, use the same environment variables as Docker Compose — only the replica variables differ.
In /opt/plane/plane.env, set replica counts to 1:
PI_API_REPLICAS=1
PI_BEAT_REPLICAS=1
PI_WORKER_REPLICAS=1
PI_MIGRATOR_REPLICAS=1Step 6 — Restart Plane
prime-cli restartOr directly:
docker compose down
docker compose up -dOptional
Voice input
Enables speech-to-text in Plane AI chat. Get a key at console.groq.com.
GROQ_API_KEY=your-groq-api-keyFile uploads
Enables file attachments in Plane AI.
AWS_S3_BUCKET_NAME=your-bucket-name
AWS_S3_REGION=us-east-1
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-keyFor MinIO or S3-compatible storage, also add:
AWS_S3_ENDPOINT_URL=http://your-minio-host:9000
USE_MINIO=1
