Skip to content

feat: add custom runner image support to ProjectSettings#1584

Draft
quay-devel wants to merge 2 commits into
ambient-code:mainfrom
quay-devel:feat/custom-runner-image
Draft

feat: add custom runner image support to ProjectSettings#1584
quay-devel wants to merge 2 commits into
ambient-code:mainfrom
quay-devel:feat/custom-runner-image

Conversation

@quay-devel
Copy link
Copy Markdown
Contributor

Summary

  • Add runner_image and runner_image_pull_secret fields to ProjectSettings across the full stack: proto/gRPC, API server (model, migration, handler with input validation, presenters), CRD schema, operator, control-plane reconciler, Go/Python/TypeScript SDKs, and frontend settings UI
  • Image selection follows strict precedence: ProjectSettings > agent registry > operator default
  • Security controls: registry allowlist via RUNNER_IMAGE_ALLOWED_REGISTRIES, pull secret type validation (kubernetes.io/dockerconfigjson), feature flag gating (feature.custom-runner-image.enabled)
  • Frontend uses port/adapter pattern with ProjectSettingsPort / ProjectSettingsAdapter, gated by workspace-scoped Unleash flag
  • New imageref package with 22 table-driven unit tests (both operator and control-plane modules)
  • Runner conformance test suite (run-conformance.sh) validating non-root execution, filesystem paths, health endpoints, env var isolation, OCI labels, and SUID checks
  • CI pipeline updated with runner contract version label

Test plan

  • All 3 Go modules pass go vet ./... (operator, control-plane, ambient-api-server)
  • Frontend passes tsc --noEmit with zero errors
  • 22 imageref unit tests pass in both Go modules
  • 5 ProjectSettings adapter unit tests pass
  • 3 amber review cycles completed — zero blockers, zero criticals remaining
  • E2E: verify custom runner image settings persist and display in UI
  • E2E: verify image override takes effect when creating a session
  • E2E: verify registry allowlist rejects disallowed registries

🤖 Generated with Claude Code

@netlify
Copy link
Copy Markdown

netlify Bot commented May 14, 2026

Deploy Preview for cheerful-kitten-f556a0 canceled.

Name Link
🔨 Latest commit b2d13b8
🔍 Latest deploy log https://app.netlify.com/projects/cheerful-kitten-f556a0/deploys/6a05ea2e7b94160008501b92

@quay-devel quay-devel marked this pull request as draft May 14, 2026 09:34
Allow workspace admins to configure a custom runner container image
per project, with registry allowlist validation, pull secret support,
and feature flag gating across all layers.

Image selection precedence: ProjectSettings > agent registry > operator
default. Includes API input validation, gRPC presenter fields, frontend
settings UI with port/adapter pattern, conformance test suite, and
comprehensive imageref unit tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@quay-devel quay-devel force-pushed the feat/custom-runner-image branch from 66eb3c3 to cb76a49 Compare May 14, 2026 09:35
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 14, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 5195c9a5-c37f-4635-bbac-3ab7c4ac2bc1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
✨ Simplify code
  • Create PR with simplified code

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 14, 2026

CodeRabbit chat interactions are restricted to organization members for this repository. Ask an organization member to interact with CodeRabbit, or set chat.allow_non_org_members: true in your configuration.

- Detect docker/podman at script start via $RUNTIME variable
- Change RUNNER_TYPE from claude-code to claude-agent-sdk
- Check AG-UI / endpoint by HTTP status code (405 is valid)
- Make SUID/SGID check advisory (SecurityContext prevents escalation)
- Fix find pipeline under pipefail with -xdev, timeout, tr
- Add /workspace and /home/user directories to runner Dockerfile
- Fix TSL search query syntax for project_settings lookup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant