A comprehensive guide to agentic development — how AI coding agents like Claude Code, Codex, and Devin are transforming software engineering, and what infrastructure teams need to support autonomous code generation, testing, and deployment.
A coding agent sandbox isolates AI-generated code in an ephemeral environment with full filesystem access, network policies, and resource limits. Learn how to run Claude Code, Codex, and custom agents safely with Bunnyshell hopx.ai.
Compare gVisor, Kata Containers & Firecracker for Claude Code, Cursor & Windsurf. Step-by-step setup, MCP integration patterns & network isolation best practices.
Learn how to set up automated preview environments for Express.js and Node.js applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Ruby on Rails applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for FastAPI applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Spring Boot applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for NestJS applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for ASP.NET Core applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Flask applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Go Gin applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments and a ~15MB final image.
Learn how to set up automated preview environments for Phoenix and Elixir applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Ruby Sinatra applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Actix-Web Rust applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments and near-zero-overhead containers.
Learn how to set up automated preview environments for Go Fiber applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments and lightning-fast container starts.
Learn how to set up automated preview environments for Django applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Laravel applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Next.js applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Nuxt.js applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Remix applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for SvelteKit applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Astro applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to set up automated preview environments for Angular applications using Bunnyshell. Three approaches: Bunnyshell UI (easiest), Docker Compose import, and Helm charts — all with automatic PR deployments.
Learn how to import your existing docker-compose.yml into Bunnyshell and get automatic preview environments for every pull request. Full walkthrough of the conversion process, advanced patterns, and common pitfalls.
Learn how to set up automatic preview environments for monorepos using Bunnyshell. Covers Nx, Turborepo, Lerna, and plain workspace monorepos with three deployment approaches and selective rebuild strategies.
Learn how to set up automated preview environments for microservices architectures using Bunnyshell. Deploy 4-5 services per PR with service discovery, shared databases, and message queues — all fully isolated.
Learn how to set up automated preview environments on Kubernetes using Bunnyshell. Three approaches: Bunnyshell-managed components, Helm charts, and raw K8s manifests — with namespace isolation, ingress, TLS, and auto-sleep.
Learn how to provision ephemeral cloud infrastructure (RDS, ElastiCache, S3) per pull request using Terraform components in Bunnyshell. Full IaC lifecycle — create, connect, and destroy — automated for every PR.
Learn how to use Helm charts — public repos, custom charts, and umbrella charts — to create fully isolated preview environments for every pull request with Bunnyshell.
Learn how to set up preview environments for serverless applications (AWS Lambda, Azure Functions) using Bunnyshell. Containerize functions, emulate AWS services with LocalStack, and get per-PR deployments.
Bunnyshell automatically provisions per-PR environments for microservices across multiple repositories. Define all services in one environment.yaml — from any Git repo — and get an isolated, full-stack environment per pull request. Auto-destroyed on PR close.
Learn how to integrate Bunnyshell with GitHub Actions for automated preview environments. Two approaches: zero-config webhooks or full CI control with the Bunnyshell GitHub Action.
Learn how to integrate Bunnyshell preview environments with GitLab CI pipelines. Two approaches: webhook-only (zero config) and full pipeline integration with .gitlab-ci.yml — automatic deploy on merge request, destroy on merge.
Learn how to integrate Bunnyshell preview environments with CircleCI workflows. Two approaches: webhook-only (zero config) and full pipeline integration with .circleci/config.yml — automatic deploy on PR, destroy on merge.
Learn how to integrate Bunnyshell with Bitbucket Pipelines for automatic preview environments on every pull request. Two approaches: webhook-only (zero pipeline config) and full pipeline integration with the Bunnyshell CLI.
Learn how to integrate Bunnyshell with Azure DevOps Pipelines for automatic preview environments on every pull request. Two approaches: webhook-only (zero pipeline config) and full pipeline integration with the Bunnyshell CLI.
Learn how to integrate Bunnyshell with Jenkins for automatic preview environments on every pull request. Two approaches: webhook-only (zero pipeline config) and full Jenkinsfile integration with the Bunnyshell CLI.
Point your existing E2E suite at a real, per-PR environment instead of localhost or shared staging. Config, CI wiring, parallelization, and the pitfalls dynamic URLs actually cause.
Learn how to provision isolated PostgreSQL databases for every preview environment. Three approaches: built-in Database component, Bitnami Helm chart, and Terraform-managed instances — with automatic lifecycle management.
Learn how to provision isolated MongoDB instances for every preview environment. Three approaches: built-in Database component, Bitnami Helm chart, and Terraform-managed instances — with seeding, index management, and lifecycle automation.
Learn how to provision isolated MySQL databases for every preview environment. Three approaches: built-in Database component, Bitnami Helm chart, and Terraform-managed instances — with seeding, migrations, and character set configuration.
Step-by-step guide to migrating from AWS Proton to Bunnyshell. Covers concept mapping, migration paths for CloudFormation and Terraform, API migration, RBAC setup, and a complete checklist.
Step-by-step guide to migrating AWS Proton CloudFormation templates to Bunnyshell. Your CF templates stay as-is — wrap them in GenericComponent with aws cloudformation deploy.
Step-by-step guide to migrating AWS Proton Terraform templates to Bunnyshell. Native Terraform component support with automatic state management, plan/apply workflows, and output wiring.
Your Procfile and app.json do not have to be thrown away. Here is how a Heroku app's process types, config vars, add-ons, and Review Apps map onto a real Kubernetes stack.
Every line in a Procfile is a decision about what runs and how. Here is exactly how each one, plus app.json and the release phase, becomes a component in bunnyshell.yaml.
Review Apps were Heroku's best idea: a disposable environment for every pull request. Here is how to keep that exact workflow while moving off Heroku's dyno pricing and buildpack constraints.
Learn how Bunnyshell works as the orchestration layer of your Internal Developer Platform. Templates define golden paths, RBAC enforces governance, and a full API enables extensibility.
Your homegrown ephemeral environment solution worked at 10 developers. At 30+, it is breaking. Learn how to migrate from DIY scripts to Bunnyshell without rewriting your infrastructure code.
Why do most internal developer platforms fail? Learn the 5 most common IDP failures — from maintenance burden to tribal knowledge — and how to avoid them. Data-backed guide for platform engineers.
How to wire pull requests to full-stack ephemeral environments so end-to-end tests run automatically on every push — and the environment tears itself down when the PR closes.
How QA engineers and reviewers control a pull request's ephemeral environment directly from GitHub, GitLab, or Bitbucket comments — no CLI, no dashboard, no waiting on a developer.
How Git webhooks drive automatic redeploys of PR test environments on every commit, so your E2E suite never runs against stale code — with the exact pipeline mechanics involved.
How to configure ephemeral test environments to delete themselves automatically when a pull request merges or closes — with real teardown output and a cost-control checklist.
Ephemeral test environments get real public URLs — which means they need real access control. How to restrict who can reach a PR environment and handle secrets safely in CI.
A complete, from-scratch setup guide: connect your cluster, define your stack once, wire up your Git provider, and get a real preview URL on every pull request — automatically.
A pull request environment that deploys successfully but has no reachable URL has not actually solved anything for the reviewer. Here is how automatic URL exposure is supposed to work, end to end.
An E2E test environment with an empty database catches almost nothing. A real production dump catches almost everything, including a data leak. Here is the middle path that actually works.
A failed PR environment deploy is not automatically a bug in the code. Half the time it is the pipeline, the image, or a stale password. Here is how to tell the difference fast, before it holds up a merge.
Sharding an E2E suite across CI runners only helps if each shard has its own environment to run against. Point every shard at one shared instance and parallelization just moves the bottleneck.
A preview environment for a fork pull request is running code nobody has reviewed yet, on infrastructure with a public URL. IP allowlisting is the control that makes that combination survivable.
How to let developers clone a full staging environment on demand — via CLI or UI — instead of queuing for a single shared staging slot.
Why every ephemeral and cloned environment should trace back to a single, well-maintained primary environment — and how to structure that relationship in Bunnyshell.
Multi-VCS support means PR-triggered ephemeral environments work the same way regardless of where your code lives — including self-hosted GitLab and Bitbucket Server.
How to give staging and preview environments branded, stable hostnames with real SSL — and how to keep them network-isolated from each other and from the public internet where it matters.
Staging environments get real public URLs by default — here is how to restrict access to specific IP ranges so only your team, VPN, or CI can reach them.
Deciding to replace a homegrown ephemeral environment setup is the easy part. Here is the actual phased playbook for doing it without a week of broken PR previews.
Deployment frequency and lead time for changes are usually estimated from ticket timestamps. Your environment platform already has the real, precise numbers, if you know where to look.
Five teams, five copies of a similar bunnyshell.yaml, five slightly different versions of the same fix. Here is how a shared template registry keeps them from drifting apart.
A demo running against production data is one wrong click from an awkward moment in front of a prospect. A demo running against a stale, months-old snapshot looks obviously fake. Neither is necessary.
Auto-destroy handles the PRs that actually merge or close. It does the environments that got abandoned mid-review, forgotten branches, and manual test instances nobody remembers creating.
How to get an interactive shell or run one-off commands inside a running Bunnyshell environment, for debugging that a log line alone cannot explain.
A complete tour of the bns CLI environment lifecycle commands — for scripting, CI integration, or just not needing to open a dashboard for routine operations.
The difference between stopping and deleting an environment, when each is the right call, and how to schedule stop/start automatically to cut idle-hours cloud spend.
How to keep credentials out of plaintext in bunnyshell.yaml and git history entirely, using bns secrets encrypt/decrypt — with a real, live encrypt/decrypt round trip.
For automation that lives outside the CLI or Git provider integrations — an internal tool, a custom dashboard, a non-Git-triggered workflow — the REST API is the direct integration point.
Bring-your-own-cluster means environments deploy into infrastructure you already control and already pay for, not a black-box managed cluster. Here is the actual connection process and what it requires beforehand.
Not every component in an environment needs to run. Some exist purely to build an image other components then reference. Here is the DockerImage component kind and when it earns its place in a stack.
One template, many environments, each with its own generated values, none of them hardcoded. Interpolation is the mechanism that makes a single bunnyshell.yaml work correctly for every environment created from it.
One file describes the whole environment: every component, every volume, every domain, every remote-dev binding. A guided walkthrough of the full bunnyshell.yaml schema, top to bottom.
A feature branch built with an AI coding assistant over several days needs a real environment that survives between sessions, not a fresh ephemeral one recreated (and re-seeded) every morning.
The environment is automatically destroyed — its compute, storage, and networking resources are torn down, and its URL stops resolving. Here is exactly how that works and how to configure it.
Bunnyshell supports ChatOps commands directly on the pull request — /bns:deploy, /bns:stop, /bns:start — so reviewers and QA can control an environment without a CLI or dashboard.
Bunnyshell redeploys a pull request's ephemeral environment automatically on every push via Git webhooks — no CI step required, and only the changed components rebuild.
Bunnyshell assigns every deployed environment a real, stable HTTPS URL automatically — no manual DNS, no ingress configuration per environment.
Bunnyshell automatically creates a complete, isolated environment — frontend, backend, database, and dependencies — for every pull request, on Kubernetes, not just a single-container sandbox.
The fix is not a better queue for one shared staging environment — it is giving every PR or developer their own isolated environment, cloned or spawned on demand, so there is no queue at all.
By eliminating the shared resource entirely — every PR gets its own isolated environment, so no team is ever blocked by, or blamed for, what another team deployed.
By giving every pull request a real, running, shareable environment automatically — a reviewer clicks a link and sees the actual feature working, instead of reading a diff and trusting it.
Both help teams deploy and run applications with less infrastructure overhead — but they are built for different problems. Here is an honest breakdown of where each one actually wins.
Qovery and Signadot solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Qovery and Release solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Qovery and Okteto solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Qovery and DIY GitHub Actions + K8s solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Qovery and Coder solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Qovery and vCluster solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Northflank and Signadot solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Northflank and Release solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Northflank and Okteto solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Northflank and DIY GitHub Actions + K8s solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Northflank and Coder solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Northflank and vCluster solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Signadot and Release solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Signadot and Okteto solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Signadot and DIY GitHub Actions + K8s solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Signadot and Coder solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Signadot and vCluster solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Release and Okteto solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Release and DIY GitHub Actions + K8s solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Release and Coder solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Release and vCluster solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Okteto and DIY GitHub Actions + K8s solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Okteto and Coder solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Okteto and vCluster solve overlapping but distinct problems. An honest breakdown of category, pricing, and where each one actually wins.
Merge queues were designed for the pace of human commits. AI coding agents open and update pull requests fast enough to break the assumptions the queue was built on.
A team that adopts AI coding assistants outgrows its single shared staging environment fast. Here is what actually needs to change as PR volume climbs from a handful a week to dozens a day.
AI code review tools read diffs well but never actually run the code. Pairing them with a real ephemeral environment closes the gap between "looks correct" and "actually works."
A single shared staging environment has a real, calculable capacity. Here is the actual math behind when contention starts, why AI-accelerated PR volume crosses that line faster than teams expect, and how to calculate your own number.
AI agents can write both the code and the tests for it, which sounds like full automation until you notice the same agent is grading its own work. A real environment is where a human still checks.
Every PR gets its own environment. Every developer ships faster. 14-day trial, no credit card.