ClusterNap

Now in beta · Kubernetes on AWS

Cut your Dev/Staging Cloud Costs by 60% in 5 Minutes.

Dev environments are idle 108 of the 168 hours in a week, and they bill for every one. ClusterNap puts them to sleep at night and on weekends, wakes them when someone needs them, and finds the AWS resources you forgot to delete.

  • Read-only audit first
  • No code changes
  • Outbound-only agent
A typical dev cluster, one weekeach cell is one hour

In use

60 h

Idle, still billing

108 h

The problem

You pay for dev environments while everyone sleeps

108 of 168

hours a week are nights and weekends

Dev and staging run around the clock, but people use them about 60 hours a week.

$1,357

a month for 8 modest dev environments

4 vCPU and 16 GiB each, priced at AWS Fargate rates, running 24/7.

64%

of that compute is paid for while idle

Nobody turns them off by hand, and scripts break the first time someone deploys at night.

Savings calculator

What idle environments cost you

Move the sliders to match your setup. The audit gives you the real numbers for your cluster.

8
4 vCPU
16 GiB
Sleep schedule

Estimated savings

$873 / month

$10,470 a year, or 64% of the $1,357/month those environments cost running around the clock.

Priced at AWS Fargate rates ($0.04048/vCPU-hour, $0.004445/GiB-hour). Node-based clusters save when the autoscaler removes the freed nodes.

How it works

Live in five minutes

No agents on laptops, no code changes, no new cloud accounts.

  1. 1

    See what you'd save

    On a 30-minute call we run a read-only audit of your cluster together. It prices every namespace by what its pods request and lists unattached disks and idle IPs. Nothing is installed.

    Request the free audit →
  2. 2

    Install the agent

    One Helm command adds a small agent to your dev cluster. It only changes replica counts, and only in namespaces you opt in.

    helm install cost-optimizer oci://ghcr.io/j1bu/charts/cost-optimizer \
      -n cost-optimizer --create-namespace \
      --set api.token=<from the dashboard>
  3. 3

    Choose what sleeps

    Annotate a namespace with a schedule. At bedtime the agent scales it to zero and remembers every replica count; in the morning it puts them all back.

    kubectl annotate namespace feature-checkout \
      cost-optimizer.io/schedule="sun-fri 20:00-08:00; sat-sun 00:00-24:00"

Where the pieces run

Your Slack
  • Sleep and wake notices
  • Weekly savings in dollars
  • Warnings when GitOps reverts
straight from your cluster
Your dev cluster
  • One small agent pod from one Helm chart
  • Applies schedules; wakes on request in ~15 s
  • Remembers every replica count
outbound HTTPS only
ClusterNap dashboard
  • Savings per namespace and day
  • Wake buttons for late nights
  • Unused AWS resources

The dashboard

See every dollar, namespace by namespace

Savings are priced from what your pods request, recorded each time a namespace wakes, and kept per day.

DashboardExample data

Saved, last 30 days

$1,137

Active rules

4

Sleeping now

2

  • feature-checkoutAsleep · 3h$412
  • feature-searchAsleep · 3h$298
  • qaAwake until 23:00$355
  • preview-42Awake$187

Daily savings

$0$50$100Sep 14Sep 19Sep 24Sep 29Oct 4Oct 9

Features

Built for the way dev clusters actually get used

Schedules in plain words

“sun-fri 20:00-08:00; sat-sun 00:00-24:00”, in each team's own time zone. Different namespaces, different hours.

Back exactly as it was

Each workload's replica count is stored on the workload itself, so the morning restore needs no database and survives restarts.

Wake on demand

Open the environment's URL and it wakes by itself, or press 2h or 8h on the dashboard: it is back within seconds.

Opt in, opt out

Only annotated namespaces sleep. Keep a shared database or a demo running with one annotation on the workload.

GitOps-aware

If Argo CD or Flux scales a sleeping workload back up, ClusterNap steps aside, stops counting it as saved, and tells you how to fix it.

Savings in dollars

Every sleep is priced from the CPU and memory the pods requested, per namespace and per day, with a weekly report in Slack.

Forgotten resources

Unattached EBS volumes and idle Elastic IPs bill every hour. The scan lists them with a monthly cost and never deletes anything.

Try before you trust

A read-only audit shows the numbers first, and dry-run mode shows every change the agent would make without making it.

Built to pass your security review

Every permission is listed, with the reason it is needed.

Read the security overview →
Outbound only
The agent calls the API over HTTPS; nothing has to reach into your network.
Least privilege
Get, list and update on namespaces, Deployments and StatefulSets. By default nothing is created or deleted, and Secrets are never read.
Read-only AWS
Two permissions: ec2:DescribeVolumes and ec2:DescribeAddresses.
No secrets leave
We receive namespace names, schedules and dollar figures. Never pod specs, env vars, logs or Secrets.

FAQ

Questions teams ask before they try it

Will it break my applications?
No. Sleeping only sets replicas to zero; Deployments, Services, ConfigMaps, Secrets and volumes stay exactly as they are. In the morning every workload comes back to the replica count it had, which is stored on the workload itself.
What about databases and persistent volumes?
StatefulSets sleep the same way and their PersistentVolumeClaims are kept, so data is there when they wake. Disks keep billing while asleep; the savings come from compute.
Someone needs the environment at night. Now what?
They just open its URL: with wake on visit they see a waking-up page that turns into the app when it is ready. Or they press 2h or 8h on the dashboard, and the agent starts it within about 15 seconds. The schedule takes over again when the time runs out.
Do I actually save money, or just free up pods?
You save when the freed capacity stops billing: on Fargate immediately, and on EC2 node groups when Cluster Autoscaler or Karpenter removes the empty nodes. The audit checks this with you before anything is installed.
We deploy with Argo CD or Flux. Will they fight it?
Without one setting they scale things back up. ClusterNap notices, leaves those workloads running instead of fighting, and warns you. The fix is one line; see the GitOps guide.
What can the agent access?
Get, list and update on namespaces, Deployments and StatefulSets, and only acting on namespaces you annotate. It cannot read Secrets, and by default cannot create or delete anything. Every permission is listed on the security page.
Can I keep some workloads running?
Yes. Annotate any Deployment or StatefulSet with cost-optimizer.io/exclude: "true" and it is never scaled.
Which clusters are supported?
Any Kubernetes 1.27 or newer: EKS, self-managed, kind or minikube for trying it out. The unused-resource scan currently covers AWS.

Free, 30 minutes

Get Free Cloud Waste Audit

We walk through your dev and staging clusters with you and show what sleeping them would save, plus every unattached disk and idle IP we find. It changes nothing.

  • Savings per namespace, from your real resource requests
  • Unattached EBS volumes and idle Elastic IPs, with monthly cost
  • Whether your autoscaler turns freed capacity into savings

We use your details only to reply to this request. See our privacy policy.