Update Plane AI documentation with deployment instructions#226
Update Plane AI documentation with deployment instructions#226danciaclara merged 4 commits intomasterfrom
Conversation
… Compose and Kubernetes, including version updates for setup commands.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughAdds Plane AI (PI) deployment documentation across Docker Compose and Kubernetes, including enablement flags, per-workload replica settings, PI env/secrets, ingress/route updates, and bumps documented release references from v2.3.4 to v2.4.0. Changes
Sequence Diagram(s)sequenceDiagram
rect rgba(200,230,255,0.5)
Operator->>Configurator: enable Plane AI (services.pi.enabled / set envs)
end
rect rgba(200,255,200,0.5)
Configurator->>Orchestrator: apply Helm values or docker-compose envs
end
rect rgba(255,230,200,0.5)
Orchestrator->>PI_API: start PI API (replicas)
Orchestrator->>PI_Worker: start PI Worker (replicas)
Orchestrator->>PI_Beat: start PI Beat (replicas)
Orchestrator->>PI_Migrator: start PI Migrator (replicas)
end
rect rgba(230,200,255,0.5)
PI_API->>Database: connect using DATABASE_URL
PI_API->>AI_Provider: call provider with API key
PI_Worker->>Queue: consume jobs
PI_Beat->>Scheduler: run periodic tasks
end
Estimated Code Review Effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
docs/self-hosting/methods/download-config.md (1)
21-25: Resolve the Markdown formatting warning in CI.Please run Prettier on this file to clear the pipeline warning.
As per coding guidelines "
**/*.{ts,tsx,js,jsx,vue,json,md,mts}: Prettier formatting checks must pass in CI...".🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/self-hosting/methods/download-config.md` around lines 21 - 25, The CI warning is due to Prettier formatting on the Markdown table that starts with "| Parameter | Required | Default | Description |"; run Prettier to reformat this file (apply prettier --write via your project's formatting script or editor integration) so the table spacing/line endings conform, then stage and commit the formatted file so CI formatting checks pass.docs/self-hosting/methods/kubernetes.md (1)
625-635: Please run Prettier on this file to fix CI warning.The markdown formatting check is currently failing in CI; formatting this file should resolve it.
As per coding guidelines "
**/*.{ts,tsx,js,jsx,vue,json,md,mts}: Prettier formatting checks must pass in CI...".Also applies to: 670-684
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/self-hosting/methods/kubernetes.md` around lines 625 - 635, CI is failing due to Prettier formatting in the markdown table (see entries like pi_api_env_existingSecret, OPENAI_API_KEY, CLAUDE_API_KEY, GROQ_API_KEY); run the project's Prettier formatter (e.g., npx prettier --write) on the affected markdown to fix table/spacing/linebreak issues, then commit the formatted file so the Prettier CI check passes.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/self-hosting/methods/download-config.md`:
- Line 23: Update the example value for the `version` parameter in the markdown
table row that currently shows `v2.4.04` to the correct tag `v2.4.0` so it
matches the rest of the page and prevents 404s when users copy the example;
modify the table cell containing `version` accordingly.
In `@docs/self-hosting/methods/kubernetes.md`:
- Around line 401-454: Add a PI migrator subsection mirroring the existing Plane
AI (PI) Worker and Beat-Worker tables: include a "Plane AI (PI) Migrator
Deployment" header and document keys such as services.pi_migrator.replicas,
services.pi_migrator.memoryLimit, services.pi_migrator.cpuLimit,
services.pi_migrator.memoryRequest, services.pi_migrator.cpuRequest,
services.pi_migrator.nodeSelector, services.pi_migrator.tolerations,
services.pi_migrator.affinity, services.pi_migrator.labels, and
services.pi_migrator.annotations with the same defaults/descriptions as the
other PI workloads; also add any relevant env vars (e.g., env.pg_pi_db_name /
env.pg_pi_db_remote_url / env.pi_envs.internal_secret) to note migrator database
and secret requirements and ensure wording matches the per-workload guidance
used for services.pi_worker and services.pi_beat_worker.
---
Nitpick comments:
In `@docs/self-hosting/methods/download-config.md`:
- Around line 21-25: The CI warning is due to Prettier formatting on the
Markdown table that starts with "| Parameter | Required | Default |
Description |"; run Prettier to reformat this file (apply prettier --write via
your project's formatting script or editor integration) so the table
spacing/line endings conform, then stage and commit the formatted file so CI
formatting checks pass.
In `@docs/self-hosting/methods/kubernetes.md`:
- Around line 625-635: CI is failing due to Prettier formatting in the markdown
table (see entries like pi_api_env_existingSecret, OPENAI_API_KEY,
CLAUDE_API_KEY, GROQ_API_KEY); run the project's Prettier formatter (e.g., npx
prettier --write) on the affected markdown to fix table/spacing/linebreak
issues, then commit the formatted file so the Prettier CI check passes.
ℹ️ Review info
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
docs/self-hosting/govern/plane-ai.mddocs/self-hosting/methods/download-config.mddocs/self-hosting/methods/kubernetes.md
| | Parameter | Required | Default | Description | | ||
| | ----------- | -------- | ------- | ---------------------------------------------------------------------------- | | ||
| | `version` | Yes | — | Release tag (e.g., `v2.3.4`) | | ||
| | `version` | Yes | — | Release tag (e.g., `v2.4.04`) | |
There was a problem hiding this comment.
Fix version example typo in version parameter.
Line 23 shows v2.4.04, while the rest of the page uses v2.4.0. This can lead to 404s when users copy the parameter example.
Suggested fix
-| `version` | Yes | — | Release tag (e.g., `v2.4.04`) |
+| `version` | Yes | — | Release tag (e.g., `v2.4.0`) |📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| | `version` | Yes | — | Release tag (e.g., `v2.4.04`) | | |
| | `version` | Yes | — | Release tag (e.g., `v2.4.0`) | |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/self-hosting/methods/download-config.md` at line 23, Update the example
value for the `version` parameter in the markdown table row that currently shows
`v2.4.04` to the correct tag `v2.4.0` so it matches the rest of the page and
prevents 404s when users copy the example; modify the table cell containing
`version` accordingly.
| #### Plane AI (PI) Deployment | ||
|
|
||
| | Setting | Default | Required | Description | | ||
| | -------------------------------------- | :--------------------------------------------------: | :------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | services.pi.enabled | false | No | Set to `true` to enable the Plane AI service and its API, worker, beat, and migrator workloads. | | ||
| | services.pi.replicas | 1 | Yes | Number of replicas for the Plane AI (PI) API deployment. It must be >=1. | | ||
| | services.pi.memoryLimit | 1000Mi | | Memory limit for the Plane AI (PI) API deployment. | | ||
| | services.pi.cpuLimit | 500m | | CPU limit for the Plane AI (PI) API deployment. | | ||
| | services.pi.memoryRequest | 50Mi | | Memory request for the Plane AI (PI) API deployment. | | ||
| | services.pi.cpuRequest | 50m | | CPU request for the Plane AI (PI) API deployment. | | ||
| | services.pi.image | artifacts.plane.so/makeplane/plane-pi-commercial | | Docker image for the Plane AI (PI) service. | | ||
| | services.pi.pullPolicy | Always | | Image pull policy for the Plane AI (PI) deployment. | | ||
| | services.pi.assign_cluster_ip | false | | Set it to `true` if you want to assign `ClusterIP` to the Plane AI (PI) API service. | | ||
| | services.pi.nodeSelector | {} | | Node selector for the Plane AI (PI) API deployment. | | ||
| | services.pi.tolerations | [] | | Tolerations for the Plane AI (PI) API deployment. | | ||
| | services.pi.affinity | {} | | Affinity rules for the Plane AI (PI) API deployment. | | ||
| | services.pi.labels | {} | | Custom labels to add to the Plane AI (PI) API deployment. | | ||
| | services.pi.annotations | {} | | Custom annotations to add to the Plane AI (PI) API deployment. | | ||
| | env.pg_pi_db_name | plane_pi | | PostgreSQL database name used by Plane AI (PI) when `postgres.local_setup=true`. | | ||
| | env.pg_pi_db_remote_url | "" | | PostgreSQL connection URL for Plane AI (PI) when using a remote database. Required when `postgres.local_setup=false` and Plane AI (PI) is enabled. | | ||
| | env.pi_envs.internal_secret | tyfvfqvBJAgpm9bzvf3r4urJer0Ehfdubk | | Internal secret used by Plane AI (PI) for OAuth and internal APIs. | | ||
| | env.pi_envs.plane_api_host | "" | | Override for the Plane API host URL used by Plane AI (PI). Defaults to the license domain. | | ||
| | env.pi_envs.cors_allowed_origins | "" | | CORS allowed origins for Plane AI (PI) API. Defaults to the license domain. | | ||
|
|
||
| #### Plane AI (PI) Worker Deployment | ||
|
|
||
| | Setting | Default | Required | Description | | ||
| | ----------------------------------- | :-----: | :------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | services.pi_worker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for the Plane AI (PI) worker. This key helps you set the number of replicas. It must be >=1. | | ||
| | services.pi_worker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for the Plane AI (PI) worker deployment to use. | | ||
| | services.pi_worker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for the Plane AI (PI) worker deployment to use. | | ||
| | services.pi_worker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for the Plane AI (PI) worker deployment to use. | | ||
| | services.pi_worker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for the Plane AI (PI) worker deployment to use. | | ||
| | services.pi_worker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of `pi_worker`. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | | ||
| | services.pi_worker.tolerations | [] | | This key allows you to set the tolerations for the deployment of `pi_worker`. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | | ||
| | services.pi_worker.affinity | {} | | This key allows you to set the affinity rules for the deployment of `pi_worker`. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | | ||
| | services.pi_worker.labels | {} | | Custom labels to add to the Plane AI (PI) worker deployment | | ||
| | services.pi_worker.annotations | {} | | Custom annotations to add to the Plane AI (PI) worker deployment | | ||
|
|
||
| #### Plane AI (PI) Beat-Worker Deployment | ||
|
|
||
| | Setting | Default | Required | Description | | ||
| | ---------------------------------------- | :-----: | :------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | services.pi_beat_worker.replicas | 1 | Yes | Kubernetes helps you with scaling up/down the deployments. You can run 1 or more pods for the Plane AI (PI) beat-worker. This key helps you set the number of replicas. It must be >=1. | | ||
| | services.pi_beat_worker.memoryLimit | 1000Mi | | Every deployment in kubernetes can be set to use maximum memory they are allowed to use. This key sets the memory limit for the Plane AI (PI) beat-worker deployment to use. | | ||
| | services.pi_beat_worker.cpuLimit | 500m | | Every deployment in kubernetes can be set to use maximum cpu they are allowed to use. This key sets the cpu limit for the Plane AI (PI) beat-worker deployment to use. | | ||
| | services.pi_beat_worker.memoryRequest | 50Mi | | Every deployment in kubernetes can be set to use minimum memory they are allowed to use. This key sets the memory request for the Plane AI (PI) beat-worker deployment to use. | | ||
| | services.pi_beat_worker.cpuRequest | 50m | | Every deployment in kubernetes can be set to use minimum cpu they are allowed to use. This key sets the cpu request for the Plane AI (PI) beat-worker deployment to use. | | ||
| | services.pi_beat_worker.nodeSelector | {} | | This key allows you to set the node selector for the deployment of `pi_beat_worker`. This is useful when you want to run the deployment on specific nodes in your Kubernetes cluster. | | ||
| | services.pi_beat_worker.tolerations | [] | | This key allows you to set the tolerations for the deployment of `pi_beat_worker`. This is useful when you want to run the deployment on nodes with specific taints in your Kubernetes cluster. | | ||
| | services.pi_beat_worker.affinity | {} | | This key allows you to set the affinity rules for the deployment of `pi_beat_worker`. This is useful when you want to control how pods are scheduled on nodes in your Kubernetes cluster. | | ||
| | services.pi_beat_worker.labels | {} | | Custom labels to add to the Plane AI (PI) beat-worker deployment | | ||
| | services.pi_beat_worker.annotations | {} | | Custom annotations to add to the Plane AI (PI) beat-worker deployment | | ||
|
|
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
Add PI migrator settings (or adjust wording) for completeness.
This new PI values section documents API, worker, and beat-worker, but not migrator. Since this section is referenced as the per-workload configuration block, missing migrator settings creates a guidance gap.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/self-hosting/methods/kubernetes.md` around lines 401 - 454, Add a PI
migrator subsection mirroring the existing Plane AI (PI) Worker and Beat-Worker
tables: include a "Plane AI (PI) Migrator Deployment" header and document keys
such as services.pi_migrator.replicas, services.pi_migrator.memoryLimit,
services.pi_migrator.cpuLimit, services.pi_migrator.memoryRequest,
services.pi_migrator.cpuRequest, services.pi_migrator.nodeSelector,
services.pi_migrator.tolerations, services.pi_migrator.affinity,
services.pi_migrator.labels, and services.pi_migrator.annotations with the same
defaults/descriptions as the other PI workloads; also add any relevant env vars
(e.g., env.pg_pi_db_name / env.pg_pi_db_remote_url /
env.pi_envs.internal_secret) to note migrator database and secret requirements
and ensure wording matches the per-workload guidance used for services.pi_worker
and services.pi_beat_worker.
…alternative methods, including Coolify, Portainer, Docker Swarm, and Podman Quadlets.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
docs/self-hosting/methods/kubernetes.md (1)
405-454:⚠️ Potential issue | 🟠 MajorDocument PI migrator settings or remove migrator from scope claims.
Line 405 says PI enables API, worker, beat, and migrator workloads, but lines 425-454 only document worker and beat-worker settings. Please add a PI migrator subsection (matching the other PI workload tables) or adjust wording to avoid incomplete configuration guidance.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/self-hosting/govern/plane-ai.md`:
- Line 90: Update the broken anchor in the link target referenced by "[Plane AI
values block]" by replacing the incorrect fragment "#plane-ai-pi-deployment"
with the correct heading slug "#plane-ai-deployment" so the internal link in the
sentence that mentions activating PI API, worker, beat-worker, and migrator
points to the actual "Plane AI deployment" section.
docs/self-hosting/govern/plane-ai.md
Outdated
| enabled: true | ||
| ``` | ||
|
|
||
| This activates the PI API, worker, beat-worker, and migrator workloads. Replica counts and resource limits for each workload can be configured through the [Plane AI values block](/self-hosting/methods/kubernetes#plane-ai-pi-deployment) in your `values.yaml`. |
There was a problem hiding this comment.
Fix the Kubernetes anchor link target.
Line 90 points to #plane-ai-pi-deployment, but the documented section heading is Plane AI deployment, so this anchor is likely broken. Please update it to the actual heading slug to avoid a dead internal link.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/self-hosting/govern/plane-ai.md` at line 90, Update the broken anchor in
the link target referenced by "[Plane AI values block]" by replacing the
incorrect fragment "#plane-ai-pi-deployment" with the correct heading slug
"#plane-ai-deployment" so the internal link in the sentence that mentions
activating PI API, worker, beat-worker, and migrator points to the actual "Plane
AI deployment" section.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
docs/self-hosting/methods/kubernetes.md (1)
401-454:⚠️ Potential issue | 🟠 MajorDocument
pi_migratorsettings to match the stated Plane AI workloads.This section says Plane AI enables API, worker, beat, and migrator workloads, but only API/worker/beat-worker settings are documented here. Please add a
services.pi_migrator.*subsection for parity and operator completeness.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/self-hosting/methods/kubernetes.md` around lines 401 - 454, Add missing configuration docs for the Plane AI migrator by creating a "Plane AI Migrator Deployment" subsection mirroring the structure and keys used for services.pi_worker and services.pi_beat_worker; include settings such as services.pi_migrator.replicas, memoryLimit, cpuLimit, memoryRequest, cpuRequest, nodeSelector, tolerations, affinity, labels, and annotations, with the same descriptions and defaults as the other Plane AI workloads so the README reflects API, worker, beat, and migrator parity.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/self-hosting/methods/kubernetes.md`:
- Around line 586-596: The required-condition keys are inconsistent: replace
occurrences of `rabbitmq.local_setup`, `postgres.local_setup`, and
`opensearch.local_setup` with the normalized `services.rabbitmq.local_setup`,
`services.postgres.local_setup`, and `services.opensearch.local_setup`
respectively in the table rows for RABBITMQ_DEFAULT_USER /
RABBITMQ_DEFAULT_PASS, POSTGRES_PASSWORD / POSTGRES_DB / POSTGRES_USER, and
OPENSEARCH_INITIAL_ADMIN_PASSWORD (and any other opensearch rows that reference
the local_setup flag) so the required-condition paths match the rest of the
document.
---
Duplicate comments:
In `@docs/self-hosting/methods/kubernetes.md`:
- Around line 401-454: Add missing configuration docs for the Plane AI migrator
by creating a "Plane AI Migrator Deployment" subsection mirroring the structure
and keys used for services.pi_worker and services.pi_beat_worker; include
settings such as services.pi_migrator.replicas, memoryLimit, cpuLimit,
memoryRequest, cpuRequest, nodeSelector, tolerations, affinity, labels, and
annotations, with the same descriptions and defaults as the other Plane AI
workloads so the README reflects API, worker, beat, and migrator parity.
ℹ️ Review info
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
docs/self-hosting/govern/plane-ai.mddocs/self-hosting/methods/download-config.mddocs/self-hosting/methods/kubernetes.md
🚧 Files skipped from review as they are similar to previous changes (2)
- docs/self-hosting/methods/download-config.md
- docs/self-hosting/govern/plane-ai.md
| | rabbitmq_existingSecret | RABBITMQ_DEFAULT_USER | Required if `rabbitmq.local_setup=true` | The default RabbitMQ user | plane | | ||
| | | RABBITMQ_DEFAULT_PASS | Required if `rabbitmq.local_setup=true` | The default RabbitMQ password | plane | | ||
| | pgdb_existingSecret | POSTGRES_PASSWORD | Required if `postgres.local_setup=true` | Password for PostgreSQL database | plane | | ||
| | | POSTGRES_DB | Required if `postgres.local_setup=true` | Name of the PostgreSQL database | plane | | ||
| | | POSTGRES_USER | Required if `postgres.local_setup=true` | PostgreSQL user | plane | | ||
| | opensearch_existingSecret | OPENSEARCH_ENABLED | Yes | Flag to enable OpenSearch | 1 (enabled) or 0 (disabled) | | ||
| | | OPENSEARCH_URL | Required if OpenSearch is enabled | OpenSearch connection URL | **k8s service example:** `http://plane-opensearch.plane-ns.svc.cluster.local:9200` **external service example:** `https://your-opensearch-host:9200` | | ||
| | | OPENSEARCH_USERNAME | Required if OpenSearch is enabled | Username for OpenSearch | **local setup:** plane **remote setup:** your_remote_username | | ||
| | | OPENSEARCH_PASSWORD | Required if OpenSearch is enabled | Password for OpenSearch | **local setup:** Secure@Pass#123!%^&\* **remote setup:** your_remote_password | | ||
| | | OPENSEARCH_INITIAL_ADMIN_PASSWORD | Required if `opensearch.local_setup=true` | Initial admin password for local OpenSearch | Secure@Pass#123!%^&\* | | ||
| | | OPENSEARCH_INDEX_PREFIX | Optional | Prefix for OpenSearch indices | plane\_ | |
There was a problem hiding this comment.
Fix inconsistent value-key paths in required conditions (services.* prefix mismatch).
These required-condition labels use rabbitmq.local_setup, postgres.local_setup, and opensearch.local_setup, but this page otherwise uses services.<component>.local_setup. Please normalize these to the same key paths to prevent configuration mistakes.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/self-hosting/methods/kubernetes.md` around lines 586 - 596, The
required-condition keys are inconsistent: replace occurrences of
`rabbitmq.local_setup`, `postgres.local_setup`, and `opensearch.local_setup`
with the normalized `services.rabbitmq.local_setup`,
`services.postgres.local_setup`, and `services.opensearch.local_setup`
respectively in the table rows for RABBITMQ_DEFAULT_USER /
RABBITMQ_DEFAULT_PASS, POSTGRES_PASSWORD / POSTGRES_DB / POSTGRES_USER, and
OPENSEARCH_INITIAL_ADMIN_PASSWORD (and any other opensearch rows that reference
the local_setup flag) so the required-condition paths match the rest of the
document.
Description
Update Plane AI documentation with deployment instructions for DockerCompose and Kubernetes, including version updates for setup commands.
Type of Change
Summary by CodeRabbit