Skip to content
This repository was archived by the owner on Jul 20, 2026. It is now read-only.

docs: add ComputePlane technical design for code-executing apps - #7

Closed
kvaps wants to merge 1 commit into
mainfrom
docs/compute-plane-design
Closed

docs: add ComputePlane technical design for code-executing apps#7
kvaps wants to merge 1 commit into
mainfrom
docs/compute-plane-design

Conversation

@kvaps

@kvaps kvaps commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Adds the cozyllm-specific technical design for running code-executing apps on a ComputePlane — a hidden, Cozystack-managed cluster the tenant does not see or manage — closing the isolation gap tracked in #6.

The catalog is split by whether an app executes user code: JupyterHub / n8n / ComfyUI / Langflow / Open WebUI route to the ComputePlane (placement: ComputePlane); vLLM / LiteLLM stay on the ManagementPlane (inference / gateway only, no user-code execution). Routing reuses existing Cozystack primitives — the managed kubernetes app, tenant modules, and Flux remote apply via kubeConfig.secretRef — so cozyllm adds no new isolation machinery.

Upstream generic design (Cozystack core primitive): cozystack/community#17

Doc: docs/compute-plane.md

Signed-off-by: Andrei Kvapil <andrei.kvapil@aenix.io>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a technical design document (docs/compute-plane.md) detailing the architecture for isolating arbitrary-code-execution applications onto a separate, hidden Kubernetes cluster (ComputePlane) to secure the management plane. The review feedback suggests minor grammatical improvements to enhance the clarity and flow of the document.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread docs/compute-plane.md

2. **Do not embed remote-apply logic in the app charts.** The `kubeConfig.secretRef` injection is performed centrally by the core app→HelmRelease conversion when `placement == ComputePlane`. cozyllm charts stay unaware of where they land — this keeps every app chart identical whether it runs locally or on a ComputePlane, and avoids duplicating the routing decision per app.

3. **Declare the ComputePlane module dependency.** cozyllm's install/bundle documents that a tenant intended to host code-executing apps must have the ComputePlane Tenant module set (a non-empty `computePlane` profile name). If a `placement: ComputePlane` app is created in a tenant chain with no ComputePlane, creation is rejected (fail closed) rather than silently deploying onto the management cluster.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The phrase 'tenant intended to host' is grammatically awkward. Using 'tenant intending to host' makes the sentence active and clearer.

Suggested change
3. **Declare the ComputePlane module dependency.** cozyllm's install/bundle documents that a tenant intended to host code-executing apps must have the ComputePlane Tenant module set (a non-empty `computePlane` profile name). If a `placement: ComputePlane` app is created in a tenant chain with no ComputePlane, creation is rejected (fail closed) rather than silently deploying onto the management cluster.
3. **Declare the ComputePlane module dependency.** cozyllm's install/bundle documents that a tenant intending to host code-executing apps must have the ComputePlane Tenant module set (a non-empty `computePlane` profile name). If a `placement: ComputePlane` app is created in a tenant chain with no ComputePlane, creation is rejected (fail closed) rather than silently deploying onto the management cluster.

Comment thread docs/compute-plane.md

These mirror the core proposal's guarantees, asserted specifically for cozyllm's apps:

- A JupyterHub notebook (or n8n code node, ComfyUI custom node, Langflow component) runs on the ComputePlane with **no token/kubeconfig for** and **no network route to** the management/infra kube-apiserver.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The phrasing 'no token/kubeconfig for and no network route to the management/infra kube-apiserver' is slightly awkward. Simplifying it to 'no token/kubeconfig and no network route to...' is cleaner and grammatically correct.

Suggested change
- A JupyterHub notebook (or n8n code node, ComfyUI custom node, Langflow component) runs on the ComputePlane with **no token/kubeconfig for** and **no network route to** the management/infra kube-apiserver.
- A JupyterHub notebook (or n8n code node, ComfyUI custom node, Langflow component) runs on the ComputePlane with **no token/kubeconfig** and **no network route** to the management/infra kube-apiserver.

@kvaps

kvaps commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by docs/compute-plane.md in aenix-io/cozyllm#1, rewritten for the final consumer pattern (chart-side opt-in remote apply; the ApplicationDefinition placement enum described here ships separately in cozystack core). This repository is archived; development continues in aenix-io.

@kvaps kvaps closed this Jul 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant