$ bns environments list

Ship Software
10x Faster.

Modern CI/CD, cloud development, preview, and ephemeral environments — all in one platform built for modern engineering teams.

No credit card required

// See Bunnyshell in action in 3 minutes

environments.bunnyshell.com
Bunnyshell product demo
How Bunnyshell works — architecture diagram

$ cat how-it-works.md

How Bunnyshell works

01

Connect your repo

Link your GitHub, GitLab, or Bitbucket repository. Define your environment using Docker Compose, Helm, or Terraform — tools you already use.

GitHubGitHub
GitLabGitLab
BitbucketBitbucket
DockerDocker
HelmHelm
K8sK8s
02

Open a pull request

Bunnyshell auto-provisions an isolated, full-stack environment for every PR. Share the preview URL with your team.

PR #142→env-142.preview.bunnyshell.dev• Running
PR #143→env-143.preview.bunnyshell.dev• Running
PR #144→env-144.preview.bunnyshell.dev• Running
03

Merge and move on

Tests pass, code is reviewed, PR merges. The environment auto-destroys. No cleanup. No surprise cloud bills.

✓End-to-end tests passed
✓Code review approved
✓Merged — environment destroyed
✦✦

See it in action.

Deploy your first environment in under 30 minutes. 14-day trial, no credit card required.

01

Unified Environment
Management.

Centralize control of all your environments with a single global view. Create, clone, start, stop, and deactivate environments through one intuitive interface. Full oversight across projects, teams, and clusters.

  • ✓Faster onboarding — new developers start coding in minutes with standardized, preconfigured environments
  • ✓Self-service autonomy — teams create, pause, or discard environments without waiting on DevOps
  • ✓Consistent & reliable — every environment mirrors production, ensuring predictable results across the stack
  • ✓Clone any environment — duplicate a running environment in one click — same config, same data, new namespace
Environments
AllPrimaryEphemeral
+ Create environment
EnvironmentStateClusterLast update
frontend-checkoutDeployedProduction-US2 hours ago
api-gateway-v2DeployedProduction-US2 hours ago
dev-rewardsDeployedStaging-EU5 hours ago
dev-billing-msRunningStaging-EU1 day ago
PR #312 — checkoutRunningStaging-EU12 min ago
PR #310 — auth-flowRunningProduction-US45 min ago
PR #308 — refactorSleepingStaging-EU3 days ago
dev-ai-assistantDeployedStaging-EU12 days ago
staging-mainDeployedProduction-US1 hour ago
PR #305 — hotfixDestroyedStaging-EU5 days ago
10 results
02

Ephemeral
Environments.

Every pull request gets its own full-stack environment — your app, your database, your infrastructure. Isolated, production-like, destroyed on merge. No more "who broke staging?"

  • ✓Auto-deploy on PR open — environment spins up in minutes, with a shareable preview URL
  • ✓Auto-destroy on merge — no forgotten resources, no bill creep
  • ✓Full-stack replication — not just frontend previews. App + database + infrastructure
  • ✓Git ChatOps — /bns:deploy, /bns:stop, /bns:start from PR comments
See ephemeral environments →
bunnyshellbotcommented just now

✅ Preview Environment deployed on Bunnyshell

ComponentEndpoints
argocdhttps://argocd-nwmok2.bunnyenv.com/
argocd-ttydhttps://argocd-web-cli-nwmok2.bunnyenv.com/

See: Environment Details | Pipeline Logs

Available commands (reply to this comment):

  • 🔴 /bns:stop to stop the environment
  • 🚀 /bns:deploy to redeploy the environment
  • ❌ /bns:delete to remove the environment
03

Remote
Development.

Code in a cloud replica of production from your local IDE. VS Code, JetBrains — real-time file sync, step-through debugging, zero local dependencies. Start coding in minutes, not hours.

  • ✓Local IDE, cloud runtime — edit locally, changes sync instantly to your cloud environment
  • ✓Remote debugging — step-through for Node.js, PHP, Java. Attach your debugger to cloud containers
  • ✓Port forwarding — access any remote service locally, as if running on your machine
  • ✓SSH access — drop into any container. Inspect logs, run commands, troubleshoot in real-time
See remote development →
Terminal
$ bns remote-development up --component YMtxx2Oelq
Local Sync Path /Users/dev/Projects/my-app
Remote Sync Path /usr/src/app
INFO: All files will be synchronized...
Pod is ready for Remote Development.
Bunnyshell Remote Development Environment
/usr/src/app/backend #  
VS Code—/usr/src/app
● Remote: bunnyenv.com
Explorer
src/
app.ts
routes/
api.ts
auth.ts
models/
user.ts
config.ts
package.json
Dockerfile
app.tsapi.ts
1import express from 'express'
2import { router } from './routes/api'
3import { authMiddleware } from './routes/auth'
4
5const app = express()
6app.use(authMiddleware)
7app.use('/api', router)
8
9app.listen(8080, () => {
10  console.log('Server running on :8080')
11})
● Remote Dev ActivebackendTypeScript
Ln 7, Col 32UTF-8
04

Your entire stack,
in a single YAML file.

Define your app, databases, and infrastructure in bunnyshell.yaml. Version-controlled, reproducible, drift-free. Bunnyshell extends Infrastructure-as-Code to the entire environment — not just infra.

  • ✓7 component types — Docker Compose, Helm, K8s Manifests, Terraform, Custom Docker Image, Static App, Generic
  • ✓Dependency orchestration — dependsOn controls execution order; independent components deploy in parallel
  • ✓Powerful variables — Twig-like interpolation with conditionals, filters, cross-component references
  • ✓Variable Groups — share secrets and config across environments, override per-env
Docker
Kubernetes
Helm
Terraform
See Environment as Code →
bunnyshell.yaml
1-
2  kind: Application
3  name: backend
4  gitRepo: 'https://github.com/my-org/api.git'
5  gitBranch: main
6  gitApplicationPath: /
7  dockerCompose:
8    build:
9      context: .
10      dockerfile: ./Dockerfile
11    ports:
12      - '80:8080'
13    deploy:
14      resources:
15        limits:
16          cpus: '2'
17          memory: '4096M'
18  hosts:
19    - hostname: 'api-{{env.base_domain}}'
20      path: /
21      servicePort: 80
05

Templates &
Service Catalog.

28+ pre-built templates or bring your own from Git. Any team member spins up a full stack from the catalog — no DevOps knowledge required. The easiest way to set up your environment.

  • ✓Pre-built templates — Laravel, Next.js, Sylius, Magento, Django, PyTorch, and more
  • ✓Custom templates from Git — enforce org standards, compliance requirements baked in
  • ✓Template Sync — detect drift between environment and template with built-in diff editor
  • ✓One-click deploy — developers, QA, and product managers self-serve without tickets
See templates →
Sylius 1.12 Development
Full Sylius ecommerce setup with Nginx, PHP-FPM, MySQL
PHPNginxMySQL
DeployView repo
Express + React + PostgreSQL + AWS S3 (Terraform)
Full-stack app with Terraform-managed S3 bucket
NodeReactPGTF
DeployView repo
Express + React + AWS RDS PostgreSQL (Terraform)
Cloud-native stack with managed RDS database
NodeReactRDS
DeployView repo
Express + React + PostgreSQL (Helm + K8s manifests)
Kubernetes-native with Helm chart deployment
NodeReactHelm
DeployView repo
PyTorch Hello World
ML model training environment with GPU support
PythonPyTorch
DeployView repo
Spring Boot + React + MySQL
Java backend with React frontend and MySQL database
JavaReactMySQL
DeployView repo
06

Workflow Pipelines.
Dependency-aware.

Every environment action — deploy, destroy, start, stop — runs as a workflow of stages, jobs, and steps. Bunnyshell reads your dependsOn graph, parallelizes independent components, and sequences the rest. Deploy and Start respect dependency order. Destroy and Stop run everything in parallel.

  • ✓4 lifecycle workflows — Deploy, Destroy, Start, Stop — each auto-generated from your environment definition. No pipeline YAML to write
  • ✓Dependency-aware staging — dependsOn controls execution order across stages. Independent components run in parallel within each stage
  • ✓Real-time DAG visualization — stages as columns, jobs within stages, step-by-step output with commands, stdout/stderr, and exit codes
  • ✓Smart deploy strategies — RollingUpdate (zero-downtime) or Recreate. Auto-detects PVC usage and forces Recreate when needed
  • ✓Managed or self-hosted runners — control concurrency, timeouts, and retry behavior. Use Bunnyshell runners or bring your own
See workflow documentation → →
Deployment workflowSuccessful
Pipeline ID: 304409
✓Pre checks
✓Connect to cluster
→
✓Cloud access
✓Fetch Git latest SHA
✓Ensure env namespace
→
✓Build app
✓Build nginx
→
✓Deploy app
✓Create volumes
✓Deploy mysql
→
✓Finalize cleanup
→
✓Check env status
Job Pre checks
✅ 2026-03-13 11:01:22.572Z Run "check environment"
✅ 2026-03-13 11:01:23.104Z Validate cluster connectivity
✅ 2026-03-13 11:01:24.891Z Fetch Git SHA a3f7c2d
✅ 2026-03-13 11:01:26.337Z Build app — using cached layers (3/5)
✅ 2026-03-13 11:01:41.012Z Build nginx — image pushed to registry
✅ 2026-03-13 11:01:55.448Z Deploy app — RollingUpdate 1/1 ready
✅ 2026-03-13 11:01:58.221Z Deploy mysql — pod stabilized
✅ 2026-03-13 11:02:10.667Z Finalize cleanup — removed 0 orphaned resources
07

Application & K8s
Logs.

Three log types, one interface. Pipeline logs show every workflow step with auto-expanded errors. Application logs stream live from running containers. Kubernetes logs surface pod events, manifests, and cluster-level diagnostics — no kubectl required.

  • ✓Pipeline logs — every workflow job with timestamps, stdout/stderr, exit codes. Failed steps auto-expand and highlight in red
  • ✓K8s Logs — real-time container output streaming. Filter by pod and container. Search across log lines
  • ✓K8s Events — pod scheduling, image pulls, crash loops, OOM kills, restarts — all surfaced without cluster access
  • ✓K8s Manifests — inspect the full YAML manifest for any running resource. Debug configuration drift in real-time
See troubleshooting docs → →
B
Acme Corp > staging > rabbitmq
rabbitmqRunning
RestartShell
K8s LogsK8s EventsK8s Manifest
Pods:All podsContainer:All containers
Streaming...
2026-03-13T14:22:01.112Z accepting AMQP connection <0.1234.0> (10.0.2.15:43210 -> 10.0.1.5:5672)
2026-03-13T14:22:01.118Z connection <0.1234.0> (10.0.2.15:43210 -> 10.0.1.5:5672): user 'guest' authenticated
2026-03-13T14:22:01.124Z connection <0.1234.0> (10.0.2.15:43210 -> 10.0.1.5:5672) has a client-provided name: app.consumer
2026-03-13T14:22:05.201Z accepting AMQP connection <0.1235.0> (10.0.2.16:43211 -> 10.0.1.5:5672)
2026-03-13T14:22:05.208Z connection <0.1235.0>: user 'guest' authenticated and granted access to vhost '/'
2026-03-13T14:22:10.334Z Queue 'tasks.default' in vhost '/': consumer added, 3 consumers total
2026-03-13T14:22:15.402Z accepting AMQP connection <0.1236.0> (10.0.3.20:52100 -> 10.0.1.5:5672)
2026-03-13T14:22:15.410Z connection <0.1236.0>: user 'app_worker' authenticated
08

Built for Scale.
Not hello-world demos.

Run thousands of environments without crashing your cluster. Smart parallel deploys for complex apps with 100+ microservices. Bunnyshell deploys real-world applications with dependency control and full visibility.

  • ✓Dependency chains — use dependsOn to control which services launch first — great for DBs, caches, legacy systems
  • ✓Dynamic concurrency — set how many environments run in parallel — match cluster capacity in real-time
  • ✓Built-in queuing & retries — handle quick-succession commits without pipeline collisions
  • ✓Fully configurable — order, concurrency, resources, and visibility — all as code
See enterprise capabilities → →
B
Acme Corp > staging > Components
stagingStopped
DeployStartConfigurationURLs
⚠Warning: There is a new version of the template used by this environment. Review changes
Histio-configs
acme/platform-inframaina3c81f2Stopped
Histio-routing
acme/platform-inframaina3c81f2Stopped
Histio-ingress
acme/platform-inframaina3c81f2Stopped
Hmysql-8
acme/platform-inframainb7d2e4aStopped
Hkafka
acme/platform-inframainb7d2e4aStopped
istio-configs
Pipeline LogsConfigurationExported Variables
✓ Pipeline completed — all steps finished
09

Automate everything.
Full API & CI/CD control.

Use your stack, your pipelines, your rules. Trigger PR environments with GitHub Actions, CLI, or ChatOps — no lock-in, no friction. Common setup: GitHub PR → CI job → Call Bunnyshell API → Get live URL → Run Playwright tests.

  • ✓Full API control — create, update, delete environments programmatically. Open-source Go SDK
  • ✓GitHub Actions & GitLab CI — native integrations — trigger environments as part of your existing CI flow
  • ✓Built-in queuing — handle quick-succession commits without collisions. Automatic retries on failure
  • ✓Environment ready in seconds — even for complex apps — parallel deploys, queuing, and CI-built images supported
Explore the API docs → →
Ephemeral environments
Automate environment creation from pull requests.
Create ephemeral environments on Pull Request
Auto-deploy a new environment when a PR is opened
Destroy environment after Merge or close Pull Request
Auto-destroy when the PR is merged or closed
REST API & CLI
# Create environment via API
curl -X POST https://api.bunnyshell.com/v2/environments \
-H "Authorization: Bearer $BNS_TOKEN" \
-d '{"name": "pr-142", "template": "tmpl_abc"}'
# Deploy via CLI
$ bns environments deploy --id env_12345
# ChatOps from PR comments
/bns:deploy /bns:stop /bns:start /bns:delete
GitHub Actions
- name: Deploy Preview Environment
uses: bunnyshell/deploy-action@v2
with:
access-token: ${{ secrets.BNS_TOKEN }}
environment-id: ${{ steps.create.outputs.env_id }}

Your terminal. Your IDE.
Your way of working.

CLI

CLI

Create, clone, start, stop, deploy, port-forward — all from your terminal. Shell autocomplete, profiles, secrets management.

API

REST API & Go SDK

Full programmatic access. Provision environments, query status, trigger teardowns — integrate with any workflow.

AI

MCP Server

AI-native environment management. Create, deploy, and manage environments from Claude Code or any MCP-compatible agent.

Git

Git ChatOps

/bns:deploy, /bns:stop, /bns:start, /bns:delete — manage environments from PR comments. Auto-posted URLs and status.

DNS

Custom Domains

Assign custom domains to any environment. Per-component URL customization, load balancer config, IP whitelisting.

CI/CD

Webhooks & CI/CD

Trigger environment actions from GitHub Actions, GitLab CI, or any CI system. Fully scriptable, event-driven.

✦✦

Deploy your first environment today.

14-day trial, no credit card. Free white-glove onboarding — we set it up with you. Most teams ship their first PR environment in under 30 minutes.

Teams that stopped
fighting over staging.

10

Cost & Lifecycle
Management.

Environments that manage themselves. Auto-sleep, auto-destroy, auto-update — so you stop paying for idle resources and your team never has to remember cleanup. Detailed cost analysis with grouping, filtering, and comparative charts.

  • ✓Auto-sleep schedules — stop at 8 PM, start at 8 AM. Custom per environment
  • ✓Auto-destroy on merge — no forgotten resources, no surprise cloud bills
  • ✓Per-environment costs — Kubecost integration shows what each environment costs per hour. Group by project, cluster, or team
  • ✓Termination protection — lock critical environments against accidental deletion
See cost management docs → →
Environment availability rules
Auto-stop
2
hours of inactivity
Timeframes
Define when environments should be running. Outside these windows, environments will be automatically stopped.
Monday – Friday08:00 AM→08:00 PM
✕
Saturday10:00 AM→04:00 PM
✕
Sunday—→—
✕
+ Add timeframe
Auto-destroy on merge
Destroy environment when pull request is merged or closed
Termination protection
Prevent accidental deletion of this environment
11

Environment Drift
Management.

Get notified when your environment configuration diverges from the template. Review changes through a built-in diff-editor, adjust settings, or acknowledge changes without modification. Keep environments aligned with the latest template versions.

  • ✓Auto-detection — Bunnyshell notifies you when an environment drifts from its template
  • ✓Built-in diff editor — review exactly what changed — line by line, component by component
  • ✓One-click sync — pull template updates into your environment or acknowledge the divergence
  • ✓Version tracking — see which template version each environment is running against
bunnyshell.yaml
CopyShortcuts
1 kind: Environment
2- name: pr-demo-1
3- type: ephemeral
4
5 components:
6 - kind: Helm
7 name: api
8- version: 1.2.0
9- replicas: 1
10
11 environmentVariablesGroups:
12 common:
13 ENV_DOMAIN: acme-corp.app
14- LOG_LEVEL: debug
15 CACHE_TTL: 300
1 kind: Environment
2+ name: staging
3+ type: primary
4+ urlHandle: staging
5 components:
6 - kind: Helm
7 name: api
8+ version: 1.3.0
9+ replicas: 2
10
11 environmentVariablesGroups:
12 common:
13 ENV_DOMAIN: acme-corp.app
14+ LOG_LEVEL: info
15 CACHE_TTL: 300
CopyChanges reviewed

Enterprise-grade security.
Your data stays in your cloud.

Bunnyshell connects to YOUR Kubernetes cluster. Your code and data never leave your infrastructure. SOC 2, ISO 27001, and ISO 9001 compliant.

SOC 2
ISO 27001
ISO 9001

RBAC

Three-layer permission model: Policies, Resource Selectors, and Teams. Granular enough for enterprise.

SSO

Enterprise single sign-on. Integrate with your existing identity provider.

Network Isolation

Dedicated Kubernetes namespace per environment. Pods accessible only within their namespace.

Secrets Management

Environment variables and secrets handled securely. Never hard-coded, always encrypted.

IP Whitelisting

Restrict access to specific IP ranges. Control who can reach your environments.

Audit Logs

Full audit trail for every environment action. Who deployed what, when, and where.

✦✦

Enterprise-ready from day one.

SOC 2 compliant. BYOC model. RBAC, SSO, audit logs — all built in. Book a demo to see how Bunnyshell fits your security requirements.

12

DORA Metrics,
Built In.

Prove your team is shipping faster. Track Cycle Time and Deployment Frequency across your repositories — without buying another tool. PR-based or tag-based release detection, monthly breakdowns, and per-repo analytics.

  • ✓Average Cycle Time — measure how long from first commit to production deploy
  • ✓Deployment Frequency — track how often your team ships — daily, weekly, monthly trends
  • ✓Cycle Time Breakdown — see where time is spent — coding, pickup, review, deploy
  • ✓Per-repo analytics — compare performance across repositories and teams
Bunnyshell DORA metrics — Cycle Time, Deploy Frequency, monthly charts and per-repo analytics
13

Full Configurability.
Per Environment.

Every environment has granular settings you can tune independently. From builder infrastructure to deployment runners, from workflow parallelism to custom URL handles — configure exactly what you need without touching other environments.

  • ✓Builder Infrastructure — choose managed or self-hosted builders per environment
  • ✓Workflow Settings — parallel jobs, status check timeouts, image pull policies
  • ✓Environment Variables — inherited from project, overridable per environment
  • ✓URL Handle — custom domains and URL handles per environment
B
Acme Corp > staging > Settings
General Settings
Build Settings
Deployment Runner Settings
Workflow Settings
URL Handle
Environment Variables Groups
Environment Variables
Availability Rules
Ephemeral Environments
Build Settings
Builder Infrastructure
Project Default
Managed Builder
Self-Hosted Builder
Container registry
Project Default (Bunnyshell Registry)
Build Engine
Project Default (BuildKit)

12 Component Types.
One unified platform.

Docker

Docker Compose

Automatic conversion to Kubernetes resources. Health checks, volumes, cron jobs, ingress, and HPA — all from your docker-compose.yaml.

App

Application

Full application lifecycle management. Build, deploy, start, stop, and destroy with dependency orchestration.

Svc

Service

Long-running services with custom deploy, start, stop, and destroy scripts. Full control over lifecycle.

Static

Static App

Build and serve static sites. Node.js build pipeline with customizable output directory and build arguments.

Image

Docker Image

Deploy pre-built container images directly. Skip the build step when you already have CI-built images.

Helm

Helm Chart

Deploy Helm charts from any repository. Full Helm lifecycle with custom values and version pinning.

K8s

K8s Manifest

Apply raw Kubernetes manifests with kubectl. Kustomize support, custom scaling, and full RBAC control.

TF

Terraform

Provision cloud infrastructure alongside your app. S3 buckets, RDS databases, CDNs — all as code.

Gen

Generic

Run any script on any runner image. Cloud Run, Lambda, custom CLIs — bring your own deployment logic.

Neon

Neon (Postgres)

Native Neon database branching. Each environment gets its own isolated Postgres branch — instant, zero-copy.

PS

PlanetScale (MySQL)

Native PlanetScale database branching. Schema-aware MySQL branches per environment with zero data copying.

Xata

Xata (Data)

Native Xata database branching. Serverless data platform with per-environment isolated branches.

14

Kubernetes-Native
Observability.

Real-time K8s logs, events, and manifests for every component. Stream container logs live, inspect pod events, and view raw manifests — all from the Bunnyshell UI. No kubectl required, no cluster access needed.

  • ✓Real-time log streaming — stream container logs live with pod and container filtering
  • ✓K8s Events — see pod scheduling, image pulls, crashes, and restarts in real-time
  • ✓K8s Manifest viewer — inspect the actual running manifest for any component
  • ✓Multi-pod support — aggregate logs from all pods or filter by specific pod and container
B
Acme Corp > staging > rabbitmq
rabbitmqRunning
RestartShell
K8s LogsK8s EventsK8s Manifest
Pods:All podsContainer:All containers
Streaming...
2026-03-13T14:22:01.112Z accepting AMQP connection <0.1234.0> (10.0.2.15:43210 -> 10.0.1.5:5672)
2026-03-13T14:22:01.118Z connection <0.1234.0> (10.0.2.15:43210 -> 10.0.1.5:5672): user 'guest' authenticated
2026-03-13T14:22:01.124Z connection <0.1234.0> (10.0.2.15:43210 -> 10.0.1.5:5672) has a client-provided name: app.consumer
2026-03-13T14:22:05.201Z accepting AMQP connection <0.1235.0> (10.0.2.16:43211 -> 10.0.1.5:5672)
2026-03-13T14:22:05.208Z connection <0.1235.0>: user 'guest' authenticated and granted access to vhost '/'
2026-03-13T14:22:10.334Z Queue 'tasks.default' in vhost '/': consumer added, 3 consumers total
2026-03-13T14:22:15.402Z accepting AMQP connection <0.1236.0> (10.0.3.20:52100 -> 10.0.1.5:5672)
2026-03-13T14:22:15.410Z connection <0.1236.0>: user 'app_worker' authenticated
15

Data Seeding.
Real data, not empty databases.

Bunnyshell deploys your services — but databases start empty. Data seeding bridges that gap. Three strategies for three scenarios: container databases, cloud-managed databases, and SaaS/serverless databases. All configured in bunnyshell.yaml.

  • ✓Container databases — InitContainer pattern — download dumps from S3, import via /docker-entrypoint-initdb.d. Skip re-download on restart
  • ✓Cloud-managed databases — AWS RDS, Azure Database — restore from snapshots (fast) or import SQL dumps via GenericComponent
  • ✓SaaS / serverless databases — Neon, PlanetScale, Xata — database branching in seconds. Full data, zero-copy. The fastest option
  • ✓Secure credentials — bns_secret() wrapper for sensitive values. AWS keys, DB passwords — never exposed in config
See data seeding guide → →
Container DB — InitContainer
initContainers:
- image: bunnyshell/s3-download:0.1.0
env:
AWS_BUCKET: my-dumps
SKIP_IF_EXISTS: 1
Cloud DB — RDS Snapshot
resource "aws_db_instance" "main" {
snapshot_identifier = "staging-2026-03"
instance_class = "db.t3.micro"
}
SaaS DB — Neon BranchingFastest
kind: NeonDatabase
branch_from: main
# Full data in seconds — zero-copy branching
16

Custom Domains.
Full URL control.

Every environment gets auto-generated URLs under bunnyenv.com. Need your own domain? Set selfManagedDns, point your DNS, and Bunnyshell handles the Ingress. IP whitelisting keeps staging environments private. Public endpoint exceptions let webhooks through.

  • ✓Auto-generated URLs — every component gets a unique URL under bunnyenv.com. Variable interpolation for dynamic hostnames
  • ✓Custom domains — selfManagedDns: true — Bunnyshell creates the Ingress, you manage DNS. ExternalDNS + cert-manager supported
  • ✓IP whitelisting — restrict environment access to specific IP ranges (CIDR). Keep staging private, block public access
  • ✓Public endpoint exceptions — mark individual hosts as public to receive webhooks while keeping everything else locked down
See custom domains guide → →
Environment URLs
frontendfrontend-abc123.bunnyenv.comActive
apiapi-abc123.bunnyenv.comActive
adminadmin.acme-corp.comCustom
IP Whitelisting
security:
access:
allowedIps:
- 203.0.113.0/24 # Office
- 198.51.100.0/24 # VPN
17

Workspaces & Projects.
Organize everything.

Two organizational layers. Projects group environments, share variables, and enforce availability rules. Workspaces are persistent KubeVirt VMs with Docker, SSH, and full IDE integration — your cloud development machine that never goes stale.

  • ✓Projects — group environments, share variables, set availability rules. Project-level settings cascade to all environments
  • ✓Project variables — define once, inherit everywhere. Accessible during builds, deploys, and runtime. Override per environment
  • ✓Workspaces — persistent KubeVirt VMs with Git, Docker, Node.js, Python, Java, Go, PHP, Ruby. SSH into any IDE
  • ✓AI-ready — Cursor, Windsurf, GitHub Copilot — connect your AI coding tools to cloud workspaces via SSH
See workspaces documentation → →
Project: Acme Corp
stagingPrimary3 envs
frontend-teamProject8 envs
backend-teamProject5 envs
WorkspaceRunning
$ ssh workspace-abc123.bunnyenv.com
Connected to workspace dev-frontend
OS: Ubuntu 22.04 · Docker: 24.0 · Node: 20 LTS
Python: 3.10 · Go: 1.21 · Java: 17
$ bns environments list --project acme-corp
3 environments found

Plugs into the tools
you already use.

Git Providers
GitHub
GitHub (Self-Hosted)
GitLab
GitLab (Self-Hosted)
Bitbucket
Azure DevOps
Azure DevOps (Self-Hosted)
Kubernetes Clusters
AWS (EKS)
Azure (AKS)
Google Cloud (GKE)
DigitalOcean
Scaleway
DT Cloud
Private Cluster
Bunnyshell Managed
Image Registries
AWS ECR
Azure Container Registry
Docker Hub
GitHub Container Registry
GitLab Container Registry
Google Container Registry
Google Artifact Registry
Harbor
JFrog Artifactory
Scaleway Registry
Sonatype Nexus
Private Registry
Infrastructure as Code
Docker Compose
Helm Charts
Terraform
K8s Manifests
CI/CD & ChatOps
GitHub Actions
GitLab CI
Git ChatOps
Database Connectors
Neon (Postgres)
PlanetScale (MySQL)
Xata (Data Platform)
Notifications & Cost
Slack
Microsoft Teams
Kubecost

Frequently asked
questions

Can’t find what you’re looking for? Talk to our team

Most teams deploy their first environment in under 30 minutes. Connect your Kubernetes cluster, point to your Git repo, and deploy. No agents to install. We also offer free white-glove onboarding to get you up and running.

✦✦

Your staging bottleneck ends here.

Start with one team, one project. Free white-glove onboarding — we help you set up your first environment. Most teams see value in the first week.