A Jenkins fleet your agents can run
Varroa runs every Jenkins controller as a Kubernetes resource and exposes the whole fleet over the Model Context Protocol. Ask an agent to create a controller, compose its config bundle, and run a job. It works under that agent's own identity and RBAC, not a shared admin token.
Everything an agent can do, you can do declaratively. Provisioning, JCasC bundles, RBAC federation, plugin pinning, and scale-to-zero are all driven from CRDs. It is the open-source alternative to Jenkins sprawl or a CloudBees CI contract.
apiVersion: varroa.dev/v1alpha1
kind: Controller
metadata:
name: team-alpha
namespace: varroa
spec:
version: "2.516.3"
composedBundleRef:
name: platform-standard
className: standardDrive the fleet with an AI agent
varroactl mcp exposes Varroa over the Model Context Protocol. An agent can compose a config bundle, create a controller from it, run a job, and read the result. Every call runs under its own caller identity and RBAC.
Bring up a Jenkins controller for team-alpha and run its smoke-test job.
create_composed_bundle({ name: "team-alpha-baseline", inputs: [...] })
→ ComposedBundle/team-alpha-baseline ready, contentRef resolved
create_controller({ name: "team-alpha", namespace: "teams-platform", composedBundleRef: "team-alpha-baseline" })
→ Controller/team-alpha created, phase: Provisioning
call_jenkins_tool({ name: "team-alpha", method: "tools/call", params: { name: "build_job", … } })
→ Build #1 queued, then SUCCESS
call_jenkins_tool({ name: "team-alpha", method: "tools/call", params: { name: "get_build_log", … } })
→ "smoke-test PASSED"
Example session. Tool names and arguments are real; the responses are illustrative.
What Varroa gives you
CRD/GitOps-native controllers
Every Jenkins controller is a Kubernetes Controller CR, reconciled by an operator. Provision, configure, and observe it the same way you manage everything else in the cluster.
Fleet scale
A sharded, active/active operator and stateless gateway/BFF tiers scale independently of brood size, from a handful of controllers to hundreds.
RBAC federation
Cluster-scoped JenkinsRole/JenkinsRoleBinding CRDs generate every controller's role-strategy configuration. You never hand-configure Jenkins authorization again.
In-cluster update center + air-gap
An in-cluster update center serves the exact plugin set Varroa pins, with sha256-verified pull-through, so air-gapped and restricted-egress installs stay servable.
Hibernation & cost
Idle controllers scale to zero and wake on the next request or webhook, so brood cost tracks actual usage instead of always-on Jenkins pods.
MCP & agentic development
A Model Context Protocol endpoint lets AI assistants create controllers, compose bundles, and drive Jenkins jobs, each under the calling identity's own RBAC.