Quick Start
How to (very) quickly start using mirrord
Get mirrord running in under 5 minutes. You'll need:
Locally: macOS (Intel/Apple Silicon), Linux (x86_64), or Windows (x86_64/WSL).
kubectlconfigured and pointing at your cluster.In the cluster: A running workload (deployment, pod, etc.) you want to work with. Linux kernel 4.20+, Docker or containerd runtime.
Install
brew install metalbear-co/mirrord/mirrordor:
curl -fsSL https://raw.githubusercontent.com/metalbear-co/mirrord/main/scripts/install.sh | bashchoco install mirrordExtensions → search mirrord → Install.
Works with all VS Code forks (Cursor, Windsurf, Antigravity, PearAI, Trae).
You can also download it from the VS Code Marketplace.
Preferences → Plugins → search mirrord → Install.
Works with IntelliJ, GoLand, PyCharm, and other JetBrains IDEs.
You can also download it from the JetBrains Marketplace.
Try it
CLI
To run a local process in the context of the remote target:
mirrord exec --target <target-path> <command to run locally>For example, to run a Python app as if it were the remote pod:
mirrord exec --target pod/app-pod-01 python main.pyOr run a local container instead of a native process:
mirrord container --target pod/app-pod-01 -- docker run nginxUse mirrord exec --help or mirrord container --help for all options.
Multiple services
To run several services together from one config file (think docker compose, but for mirrord), use mirrord up:
This walks you through an interactive wizard and writes a mirrord-up.yaml for you, so you don't need to write any config by hand. Once you have a mirrord-up.yaml, start the services by running mirrord up.
IDE Extensions
VS Code: Click Enable mirrord in the status bar at the bottom of the window.
JetBrains: Click the mirrord icon in the navigation toolbar (top right).
Then start a debug session. You'll be prompted to select a pod — pick the one you want to impersonate, and your local process will be plugged into it.
Send a request to your remote target — you should see it arriving at your local process as well!
What just happened?
By default, mirrord does the following:
Incoming traffic
Mirrored — your local process receives a copy of traffic hitting the remote pod
Outgoing traffic
Tunneled through the remote pod, so your local process can access cluster-internal services
Environment variables
Imported from the remote pod into your local process
File reads
Read from the remote pod's filesystem
DNS
Resolved on the remote pod
Your remote pod continues running normally — nothing is disrupted.
Watch your sessions
Launch the local dashboard to see your mirrord sessions live:
It opens in your browser and shows every active session on your machine, with a live event stream (HTTP requests, file operations, DNS, outgoing connections). With the mirrord Operator installed, it also shows your teammates' sessions across the cluster. See Local UI.
Test from your browser
Install the mirrord browser extension to route requests you make from Chrome to your local process. It works together with a running mirrord session that steals traffic with an HTTP filter: join the session from the extension popup (with mirrord ui running), and the extension injects the header matching the session's filter into every browser request. Hit a staging URL in Chrome and your local code answers, without changing any application code or configuring proxies. No operator? Set the header manually in the extension to match your session's filter. See Debugging from Browser for setup.
Configuration
mirrord reads config from <project-path>/.mirrord/mirrord.json (also supports .toml and .yaml). You can also prefix config files, e.g. my-config.mirrord.json.
Run mirrord wizard to generate a config file interactively, or see the full configuration options.
Next Steps
What are you trying to do?
Not sure where to start? Run mirrord wizard to walk through common use cases interactively.
Test against live traffic
Steal incoming traffic so your local process responds to real requests instead of the remote pod
Debug several microservices together
mirrord up runs multiple sessions from a single config file and manages their lifecycle as one
Test through your browser
The browser extension routes requests from Chrome to your local process, no proxy setup needed
Debug a queue consumer
Queue splitting lets your local process consume messages without competing with the deployed service
Run a tool in cluster context
Targetless mode lets you run scripts or tools with cluster network access, without impersonating a specific pod
Use mirrord with an AI agent
Set up Claude Code, Cursor, or Codex to test generated code against your cluster automatically
Set up for your team
Install the mirrord Operator for access control, policies, and multi-user support
Need help or want to share feedback? Join our Slack community
Last updated
Was this helpful?

