Self-hosted service
kubeshop/testkube avatar
kubeshop/testkube

Testkube: a Kubernetes-native control plane for tests you already wrote

☸️ The Open Testing Platform for AI-Driven Engineering Teams

1,656 stars173 forksGoNOASSERTION

At a glance

What is it?
Testkube treats test execution as a Kubernetes workload. The OSS agent in this repo runs your existing scripts inside a cluster and records what came out. The design pays off in multi-tool, event-triggered setups and costs you a cluster and a CRD vocabulary.
Who is it for?
Adopt the OSS agent if your tests already belong in a cluster: you have several runners (k6, Playwright, Postman, custom scripts) and you want one place where their results, artifacts and logs land. Do not adopt it if your pipeline is a single test runner in CI and nothing needs to run inside the cluster, or if you cannot give it a namespace and RBAC to schedule pods in.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem Testkube addresses is test execution, not test authoring

Testkube does not replace your test framework. The README describes it as a platform for defining, running and analyzing automated tests "using your existing testing tools/scripts, running in your Kubernetes infrastructure." That sentence is the whole product thesis. If you already have Cypress specs, k6 scripts or Postman collections, Testkube is the layer that schedules them, gives each run an isolated environment, and collects the results in one place.

The audience is teams whose test surface has outgrown a single CI job. The README lists API, E2E, performance, security and infrastructure tests as the kinds of things you can execute, which implies several toolchains rather than one. Once you have three or four of those, the question stops being "how do I run this test" and becomes "where do all these results live, and what triggers each one." Testkube answers the second question.

It is also explicitly aimed at the current wave of AI-assisted workflows. The repo description calls it "The Open Testing Platform for AI-Driven Engineering Teams," and the README points to an MCP Server as one of the ways to trigger tests and as a route for AI agents to do troubleshooting and analysis. Treat that as a positioning statement rather than a capability claim: the MCP integration is documented as an interface, and the README does not describe what an agent can and cannot do through it.

Two deployment shapes, and only one of them lives in this repository

The README splits Testkube into an Open Source Agent and an Enterprise offering. The agent is what this repo contains: MIT-licensed, running standalone in your Kubernetes cluster, with no control plane required. The README recommends it for single-cluster setups, self-managed environments and evaluation.

That split matters more than most project/enterprise divides, because it tells you where the boundary of the free tier sits. The enterprise feature list in the README is SSO/SCIM, RBAC, Teams, Resource-Groups and Audit-logs. Those are the controls a platform team needs when several groups share one installation. The OSS agent gives you execution and results; the enterprise side gives you the multi-tenant governance around it. If your organization already has a way to isolate namespaces and authenticate users, the agent alone may be sufficient. If you need per-team resource grouping and audit trails out of the box, you are looking at the commercial product, and the README does not describe a migration path between the two.

The badge at the top of the README links to an MCP toplist entry for the Testkube MCP server, which is a directory listing rather than a technical claim. It tells you the MCP server exists as a separate artifact; it tells you nothing about how it behaves.

How a test actually gets from a definition to a result

The mechanism visible in the material is a Kubernetes controller pattern. You install the agent into a cluster, define tests, and the platform schedules execution. The README's feature list names the trigger surfaces in one place: manual runs, schedules, CI/CD and GitOps pipelines, Kubernetes Events, the REST API, and MCP. That is a wide fan-in, and it is the part of the design that distinguishes Testkube from a CI job: a Kubernetes Event can start a test, which means the cluster itself can react to state changes without a pipeline being involved.

On the output side, the README states that "all test results, artifacts, logs and resource-metrics are aggregated for centralized troubleshooting and reporting." The mention of resource-metrics is worth noting, because it implies the agent is collecting data about the pods the tests ran in, not just the test process output. For a performance test that distinction matters: a k6 run that passes its thresholds while the node was under memory pressure is a different result from one that passed on an idle cluster.

Integration is handled through Webhooks, the Testkube REST API, and the MCP Server, per the README. Those are three different consumers: webhooks push events outward, the REST API lets you drive runs programmatically, and MCP exposes the same surface to AI tooling. The README links to an interactive TestWorkflows showcase that demonstrates a workflow growing from a single test into a full pipeline, which suggests TestWorkflows are the composition primitive for multi-step runs. The README does not spell out the CRD names or the workflow schema, so anything beyond that is in the documentation, not here.

Installing the standalone agent

The README gives two installation routes for the OSS agent: Helm or the CLI, both documented under the standalone-agent install page. It does not reproduce the commands inline, so the concrete flags and chart values are not available in the material I have. What the README does commit to is the shape of the process: you deploy the agent into a target cluster, then follow the Quickstart to run a first test.

The absence of inline commands is a small signal about the project's documentation strategy. Testkube keeps installation instructions in versioned docs rather than in the README, which is reasonable for a project that ships releases as frequently as this one does (2.12.1, 2.12.2 and 2.13.1 all landed within about a month). It does mean the README alone is not enough to get running, and you should read the install page for your chosen version rather than a blog post.

Before you install, decide two things the README leaves open. First, where artifacts and logs are stored: the feature list promises aggregation but does not name a backing store in this material. Second, whether you are installing the standalone agent or connecting to an enterprise control plane, since the README presents those as distinct deployment architectures with separate overview pages. Getting that wrong means a reinstall, not a config change.

The cost is a cluster, a namespace and a new vocabulary

Testkube's main limitation is structural: it assumes your tests can run inside Kubernetes. The README says so plainly. Tests that need a physical device, a licensed desktop application, or a network position your cluster cannot reach are out of scope. That is not a bug, but it excludes a real class of test suites, and teams often discover the boundary after they have started.

The second cost is operational surface. You are adding a controller, a set of custom resources, and a results store to a cluster. Every one of those is something that can fail, and a failing test platform is worse than no test platform because it erodes trust in the results. The README's own feature list hints at the mitigation: resource-metrics are captured alongside results, so you can tell a broken test from a broken cluster. Whether that is enough depends on your monitoring.

The third issue is the licence. The repository metadata reports NOASSERTION, while the README states the OSS agent is MIT-licensed. Those two statements are not the same, and the difference usually means there are additional files or terms in the repo beyond a plain MIT grant. I cannot resolve it from the material here, and I am not going to guess. If you are adopting this inside a company with a licence review process, read the LICENSE file and any notices in the repository rather than the README badge.

Why not just run the tests as a CI job

The obvious alternative is a CI runner: GitHub Actions, GitLab CI, Jenkins, or a Kubernetes executor on top of any of them. The difference in approach is where the test process lives and what can start it.

In a CI runner, the trigger is a repository event or a pipeline schedule, and the test executes in a job container that the CI system provisions and discards. Results live in the CI system's UI and whatever artifact storage you configured. This works well when tests are tied to code changes and the pipeline is the natural gate.

Testkube inverts the relationship. The cluster is the host, the trigger set includes Kubernetes Events and the REST API, and results are aggregated by the platform rather than by the CI provider. That matters when you want to test a running environment rather than a commit: a nightly performance run against staging, a security scan triggered when a deployment changes, or a smoke test that a cluster operator can fire without touching a pipeline. It also means a test result is not implicitly tied to a build, which is a benefit for environment-level testing and a drawback if your compliance story requires every result to trace back to a commit.

A reasonable split is to keep unit and integration tests in CI, where they belong next to the code, and use Testkube for the tests that need a live cluster. The README's own framing supports that: it lists API, E2E, performance, security and infrastructure tests, not unit tests.

Maintenance, releases and what you inherit

The release cadence visible in the material is tight: 2.12.1 on 2026-08-10, 2.12.2 on 2026-08-20, and 2.13.1 on 2026-08-27. Three releases in roughly three weeks, including two patch releases on the 2.12 line. For an operator that means upgrade planning is not a quarterly exercise. You should expect to track minor versions and to read the changelog before each bump, because patch releases at that frequency usually carry fixes you want but can also change behaviour you depend on.

The cost of that cadence is real for anyone running the agent in a regulated environment. Every upgrade is a change to a controller that schedules workloads in your cluster, and the agent's CRDs are part of your cluster's API surface. The README links to a changelog on the docs site, which is the right place to check, but the material here does not describe a support window or an LTS line. If you need a version to sit still for a year, that is a question for the maintainers, not something you can infer from the repository.

On licensing, the practical implication of the NOASSERTION metadata against the README's MIT claim is that you should treat the licence as unverified until you read the file. MIT would let you embed the agent in a commercial product with attribution; anything more restrictive would not. That determination is yours or your counsel's, and it is worth doing before the agent reaches production rather than after.

Editorial conclusion

Adopt the OSS agent if your tests already belong in a cluster: you have several runners (k6, Playwright, Postman, custom scripts) and you want one place where their results, artifacts and logs land. Do not adopt it if your pipeline is a single test runner in CI and nothing needs to run inside the cluster, or if you cannot give it a namespace and RBAC to schedule pods in. Verify three things before committing: which artifact and log storage your install uses, whether you want the standalone agent or an enterprise control plane, and what the repository's licence file actually contains, since the metadata reports NOASSERTION while the README states MIT for the agent.

Official sources

  1. Issues
  2. kubeshop/testkube on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes