mirrord Preview Environments

Instantly Preview Your Pull Requests in a Real Environment

mirrord gives every pull request an isolated preview environment on your shared staging cluster, connected to real services, real databases, real queues.

No ephemeral clusters Seconds, not minutes Request-level isolation

Trusted by engineering teams at

monday.com SurveyMonkey CoLab zooplus Personio Mercari NAB

Open a PR, get a live preview.

Every PR โ€” opened by a developer or by an AI agent โ€” gets a live preview URL the moment it opens. Reviewers click the link and see the change running against real services, no deploy required.

Preview environments workflow diagram

Up and running in minutes

Three steps to set up preview environments on your existing staging cluster. No new infrastructure to provision. Read the full setup guide →

1
Terminal
helm install mirrord-operator metalbear/mirrord-operator

Install the mirrord Operator

One Helm install on your existing staging cluster. The Operator handles per-PR isolation, traffic routing, queue splitting, and database branching.

2
.github/workflows/preview.yml
- uses: metalbear-co/mirrord-preview@main
  with:
    action: start
    target: deployment/my-app
    namespace: staging
    image: myrepo/myapp:${{ github.sha }}
    key: pr-${{ github.event.pull_request.number }}

Wire it into your CI

Add one step to your CI workflow. On every PR, mirrord deploys the WIP image and gives that PR its own isolated session.

3
action output
โœ” Header: baggage: mirrord-session=pr-142

Open a PR, see it live

The action outputs a unique session header per PR. Hit your staging URL with that header and you see the change live against real services โ€” devs, PMs, designers, QA all share the same preview. Close the PR and the preview tears itself down.

Not on the engineering team?

Forward this page โ€” one Helm install plus one CI step is all your platform team needs.

Everything you need for production-grade previews

No custom tooling. No ephemeral clusters. Just real previews on your real cluster.

🔒

Request isolation

The mirrord Operator filters traffic so only tagged requests reach your preview deployment. Other developers and services are unaffected.

📨

Queue splitting

Preview environments can consume from real message queues (Kafka, SQS, RabbitMQ) with automatic splitting โ€” no duplicate processing.

🗄️

Database branching

Each preview gets an isolated copy-on-write branch of your real database. Test schema changes and seed data against production-shaped data, with no risk of polluting shared state.

☁️

Zero per-PR infrastructure

No clusters to provision, no namespaces to manage, no Terraform to maintain. Preview deployments run on your existing shared staging cluster.

🔄

CI/CD integration

Works with GitHub Actions, GitLab CI, CircleCI, Jenkins, and any pipeline that can run a CLI command. Drop-in setup, no vendor lock-in.

🌐

Any language or framework

mirrord works at the syscall level. Rust, Go, Node.js, Python, Java, .NET, Ruby โ€” if it runs on Linux, it works with mirrord.

Every role in the PR loop

Platform engineers
No new clusters. No namespace sprawl. No Terraform.

Per-PR previews run on your existing shared staging cluster. The mirrord Operator handles isolation, RBAC, and traffic routing.

  • โ€” Zero per-PR infrastructure
  • โ€” Works with your existing cluster
  • โ€” Operator-level isolation, no leaks
Your cluster
staging-sharedโ—
โ†ณ pr-1247โ—
โ†ณ pr-1248โ—
โ†ณ pr-1252โ—
Engineering managers
Catch integration bugs at PR review. Not at staging.

Every PR is reviewed against real services and real data. Reviewers see what production will see โ€” before merge.

  • โ€” Real integration testing per PR
  • โ€” Faster cycle from open to merge
  • โ€” Fewer staging escapes, fewer rollbacks
PR #1248 ยท Checks
Unit testspassed
Lintpassed
Integration suitepassed
Product managers
Click the PR. See the feature live.

Click any open PR and get a live preview against real data. Review the actual experience, leave feedback, ship.

  • โ€” Live preview link per PR
  • โ€” Real data, no mocks
  • โ€” Feedback before merge, not after
PR #1248 ยท Preview
pr-1248.preview.app
โ˜… New feature live here

Got a question?

How is this different from spinning up an ephemeral cluster per PR?
Ephemeral clusters provision a full copy of your environment for every PR โ€” expensive, slow, and prone to drift. mirrord preview environments run on your existing shared staging cluster. The mirrord Operator isolates traffic at the request level, so you get the same isolation guarantees without any per-PR infrastructure.
Do preview environments work with message queues?
Yes. mirrord supports queue splitting for Kafka, SQS, and RabbitMQ. Messages destined for the service under preview are automatically routed to the preview deployment, while other messages continue to flow normally.
Can multiple PRs be previewed at the same time?
Yes. Each preview session is isolated by the mirrord Operator. Multiple developers can have concurrent preview environments on the same cluster without interfering with each other.
What CI/CD systems does this work with?
mirrord works with any CI/CD system that can run a CLI command โ€” GitHub Actions, GitLab CI, CircleCI, Jenkins, and more. See our docs for setup guides.
Which plan includes preview environments?
Preview environments are available on the Enterprise plan. See pricing for details, or book a demo to get set up.
Get started

Every PR deserves a real preview.

Works with your existing staging cluster. Live in minutes.

Read the docs →