$ 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 #142env-142.preview.bunnyshell.dev• Running
PR #143env-143.preview.bunnyshell.dev• Running
PR #144env-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 onboardingnew developers start coding in minutes with standardized, preconfigured environments
  • Self-service autonomyteams create, pause, or discard environments without waiting on DevOps
  • Consistent & reliableevery environment mirrors production, ensuring predictable results across the stack
  • Clone any environmentduplicate 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 openenvironment spins up in minutes, with a shareable preview URL
  • Auto-destroy on mergeno forgotten resources, no bill creep
  • Full-stack replicationnot 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 runtimeedit locally, changes sync instantly to your cloud environment
  • Remote debuggingstep-through for Node.js, PHP, Java. Attach your debugger to cloud containers
  • Port forwardingaccess any remote service locally, as if running on your machine
  • SSH accessdrop 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 typesDocker Compose, Helm, K8s Manifests, Terraform, Custom Docker Image, Static App, Generic
  • Dependency orchestrationdependsOn controls execution order; independent components deploy in parallel
  • Powerful variablesTwig-like interpolation with conditionals, filters, cross-component references
  • Variable Groupsshare 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 templatesLaravel, Next.js, Sylius, Magento, Django, PyTorch, and more
  • Custom templates from Gitenforce org standards, compliance requirements baked in
  • Template Syncdetect drift between environment and template with built-in diff editor
  • One-click deploydevelopers, 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 workflowsDeploy, Destroy, Start, Stop — each auto-generated from your environment definition. No pipeline YAML to write
  • Dependency-aware stagingdependsOn controls execution order across stages. Independent components run in parallel within each stage
  • Real-time DAG visualizationstages as columns, jobs within stages, step-by-step output with commands, stdout/stderr, and exit codes
  • Smart deploy strategiesRollingUpdate (zero-downtime) or Recreate. Auto-detects PVC usage and forces Recreate when needed
  • Managed or self-hosted runnerscontrol 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 logsevery workflow job with timestamps, stdout/stderr, exit codes. Failed steps auto-expand and highlight in red
  • K8s Logsreal-time container output streaming. Filter by pod and container. Search across log lines
  • K8s Eventspod scheduling, image pulls, crash loops, OOM kills, restarts — all surfaced without cluster access
  • K8s Manifestsinspect 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 chainsuse dependsOn to control which services launch first — great for DBs, caches, legacy systems
  • Dynamic concurrencyset how many environments run in parallel — match cluster capacity in real-time
  • Built-in queuing & retrieshandle quick-succession commits without pipeline collisions
  • Fully configurableorder, 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 controlcreate, update, delete environments programmatically. Open-source Go SDK
  • GitHub Actions & GitLab CInative integrations — trigger environments as part of your existing CI flow
  • Built-in queuinghandle quick-succession commits without collisions. Automatic retries on failure
  • Environment ready in secondseven 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 schedulesstop at 8 PM, start at 8 AM. Custom per environment
  • Auto-destroy on mergeno forgotten resources, no surprise cloud bills
  • Per-environment costsKubecost integration shows what each environment costs per hour. Group by project, cluster, or team
  • Termination protectionlock 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 AM08:00 PM
Saturday10:00 AM04: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-detectionBunnyshell notifies you when an environment drifts from its template
  • Built-in diff editorreview exactly what changed — line by line, component by component
  • One-click syncpull template updates into your environment or acknowledge the divergence
  • Version trackingsee 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 Timemeasure how long from first commit to production deploy
  • Deployment Frequencytrack how often your team ships — daily, weekly, monthly trends
  • Cycle Time Breakdownsee where time is spent — coding, pickup, review, deploy
  • Per-repo analyticscompare 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 Infrastructurechoose managed or self-hosted builders per environment
  • Workflow Settingsparallel jobs, status check timeouts, image pull policies
  • Environment Variablesinherited from project, overridable per environment
  • URL Handlecustom 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 streamingstream container logs live with pod and container filtering
  • K8s Eventssee pod scheduling, image pulls, crashes, and restarts in real-time
  • K8s Manifest viewerinspect the actual running manifest for any component
  • Multi-pod supportaggregate 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 databasesInitContainer pattern — download dumps from S3, import via /docker-entrypoint-initdb.d. Skip re-download on restart
  • Cloud-managed databasesAWS RDS, Azure Database — restore from snapshots (fast) or import SQL dumps via GenericComponent
  • SaaS / serverless databasesNeon, PlanetScale, Xata — database branching in seconds. Full data, zero-copy. The fastest option
  • Secure credentialsbns_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 URLsevery component gets a unique URL under bunnyenv.com. Variable interpolation for dynamic hostnames
  • Custom domainsselfManagedDns: true — Bunnyshell creates the Ingress, you manage DNS. ExternalDNS + cert-manager supported
  • IP whitelistingrestrict environment access to specific IP ranges (CIDR). Keep staging private, block public access
  • Public endpoint exceptionsmark 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.

  • Projectsgroup environments, share variables, set availability rules. Project-level settings cascade to all environments
  • Project variablesdefine once, inherit everywhere. Accessible during builds, deploys, and runtime. Override per environment
  • Workspacespersistent KubeVirt VMs with Git, Docker, Node.js, Python, Java, Go, PHP, Ruby. SSH into any IDE
  • AI-readyCursor, 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.