v0.1.0First public pre-release is out →

Keep your MacBook's battery calm.

Calma limits how far your Mac charges, so the battery isn't sitting at 100% all day. Pick a limit, and the adapter powers your Mac while the battery rests.

  • Free forever
  • Open source
  • No telemetry
  • Apple Silicon & Intel
Calma's menu bar popover showing 78% battery held below an 80% charge limit, with Full Charge, Drain and Pause buttons Calma's menu bar popover showing 78% battery held below an 80% charge limit, with Full Charge, Drain and Pause buttons
Charge limit range
20–100%Any charge limit you like
Price
$0Every feature, no Pro tier
Telemetry
ZeroNo analytics or account
Compatibility
macOS 13+One universal build
Why limit charging?

Batteries age fastest when they're full and warm.

Lithium-ion cells wear faster at a high state of charge. A Mac that stays plugged in on a desk spends most of its life at 100%.

  • 1Hold it lower.Keeping the battery around 50–80% while plugged in puts less stress on the cells.
  • 2Keep it cool.Heat Guard pauses charging when the battery runs warm.
  • 3Charge fully when you need to.Full Charge gets you to 100% before a trip, then goes back to your limit.
Illustration: battery stress rises with state of charge A qualitative curve showing that stress on a lithium-ion battery is low at mid-range charge levels and climbs steeply toward 100%. The recommended 50 to 80 percent band is highlighted. Calma sweet spot 0% 50% 80% 100% State of charge Wear (qualitative)
Illustrative only. Real ageing depends on temperature, chemistry and usage.
Features

Everything included. Nothing locked.

Every feature is free. There's no Pro tier, no licence key and no account.

Core

Charge Limit

Hold the battery anywhere from 20% to 100%. The adapter powers the Mac while the battery rests.

Protection

Heat Guard

Pause charging when the battery runs warmer than your threshold, with 5-minute windows so it doesn't flip back and forth.

Automation

Schedule

Set a limit, full charge, drain, pause or recalibrate daily, on weekdays, weekly, every two weeks or monthly, with a history log.

Drain to… & Auto Drain

Run from the battery while plugged in, down to a level you choose, or automatically whenever you lower the limit.

Drift Range

After reaching the limit, charging resumes only once the level drops a few percent below it. No constant 1% top-ups.

Recalibrate

A guided 100% → 10% → 100% cycle with a one-hour hold that keeps the battery's percentage reading accurate.

Full Charge

One tap to 100% before a trip. Your limit comes back as soon as you unplug.

Sleep-aware

Pause on Sleep stops charging to 100% overnight, and Stay Awake to Limit keeps the Mac awake until the limit is reached.

Power Flow

A live diagram of where the watts go between the adapter, battery and system.

MagSafe Light

Green at your limit, amber on the way there, optionally blinking while draining, or off. Only shown on Macs with MagSafe 3.

True Percentage & health

See the battery controller's raw percentage, cycle count, capacity and temperature.

CLI & Shortcuts

Script everything with the calma command, or use calma:// links in Shortcuts.

Every user, one limit

The helper runs system-wide, so your limit carries across fast user switching and keeps working when the app is closed, if you choose.

Low & High Power Mode

Switch the macOS power modes from the menu bar or the command line.

Accessible

VoiceOver labels, full keyboard navigation and reduced motion support. Available in English and (partially) Hindi.

A look inside

Native, quiet, and easy to read.

Built with SwiftUI and SF Symbols, with light and dark mode. No web views and no custom chrome.

Calma dashboard showing battery health, temperature, cycle count and a Power Flow diagram Calma dashboard in dark mode showing battery health, temperature, cycle count and a Power Flow diagram

Dashboard. Battery health, temperature and live Power Flow.

How it works

Small, auditable, and separated by privilege.

Charging is controlled by keys on the System Management Controller that only root can write. Calma keeps that part tiny and locked down.

1

Install and pick a limit

Drag Calma to Applications, open it, and choose a limit from the menu bar. 80% is a good start.

2

Approve the helper once

A small helper, calmad, runs as root. It's the only process that talks to the charging controller, and it only accepts a fixed set of commands from admins.

3

Forget about it

The helper checks your battery continuously and pauses or resumes charging. It keeps working across sleep and user switching.

Calma architecture Calma.app and the calma command-line tool run unprivileged and send JSON commands over a local Unix socket to calmad, a root helper. calmad runs the charge engine and writes only allowlisted keys to the SMC. It reads battery data from the IORegistry. Calma.app menu bar · your user calma CLI scripts · Shortcuts JSON socket calmad root helper ChargeEngine · schedule allowlisted writes read-only SMC charging controller IORegistry battery telemetry
No generic "write any key" command exists. The helper refuses any key that isn't on its allowlist.
Everything free

No tiers. No subscriptions.

Many charge limiters keep their most useful features behind a subscription or a Pro upgrade. Calma doesn't.

FeatureCalmaTypical paid charge limiters
Charge limit✓ FreeUsually free
Drain while plugged in✓ FreeOften paid
Heat protection✓ FreeOften paid
Recalibration cycle✓ FreeOften paid
Scheduling✓ FreeOften paid
Sleep handling✓ FreeOften paid
MagSafe LED control✓ FreeOften paid
Live power flow✓ FreeOften paid
Command-line tool✓ FreeVaries
Source code you can audit✓ GPL-3.0Usually closed
Telemetry✓ NoneVaries
Safety & privacy

Built to fail safe.

Calma controls real hardware, so it assumes things will go wrong and plans for it.

Safety

  • Normal charging comes back when the helper stops, the Mac shuts down, or you uninstall.
  • A heartbeat watchdog restores charging if the app goes quiet.
  • Only a short allowlist of documented keys can be written, and every write is logged locally.
  • Draining is refused below 20% or when temperature can't be read.
  • An Emergency Reset button and calma reset restore everything, and an SMC reset always does too.

Privacy

  • No analytics, crash reporting or account.
  • The only network request is an optional update check against GitHub Releases, and it's off by default.
  • Logs stay on your Mac.
  • Everything is open source, so you can read exactly what it does.
For power users

Script your battery.

The calma command talks to the same helper as the app. Use it in scripts, cron jobs, or Shortcuts with Run Shell Script.

calma://links work in Shortcuts too.
$ calma status
$ calma limit 80          # hold the battery at 80%
$ calma drift on 5        # resume charging below 75%
$ calma heat on 35        # pause charging above 35 °C
$ calma fullcharge        # 100% once, back to limit on unplug
$ calma drain 60          # run from battery down to 60%
$ calma reset             # emergency reset

A note about macOS 27

macOS 27 firmware removed every publicly documented charge-control key. We confirmed this on an M4 MacBook Pro. Apple's replacement keys aren't documented and can't be read, so on macOS 27 Calma runs in monitoring mode: live telemetry, Power Flow and battery health work, but charge limiting is off.

We won't write guessed values to your charging hardware, or cycle the adapter on and off in a way that wears the battery. Until the new interface is understood, macOS's own System Settings → Battery → Charge Limit (80–100%) works, and Calma shows it. Help us research it →

FAQ

Questions, answered.

Is Calma really free?

Yes. Every feature is free, with no Pro tier, licence key, ads or account. Calma is licensed under GPL-3.0, so it stays open source.

Which charge limit should I use?

80% is a good everyday choice. If your Mac almost never leaves the desk, 50–60% is kinder still. Use Full Charge the evening before a day away from an outlet.

Why does it ask for an administrator password?

Only root can change charging behaviour. Calma installs one small helper, calmad, for that job. Everything else runs as your normal user.

macOS says Apple can't verify Calma. What do I do?

Community builds aren't notarized yet, so Gatekeeper can't confirm who built the app. Click Done, then open → System Settings → Privacy & Security, scroll to Security and click Open Anyway. On macOS 13–14, right-click the app and choose Open instead. The install guide has the full steps, and building from source avoids the warning entirely.

Why did my Mac charge past the limit overnight?

The helper can't act while the Mac is fully asleep. Turn on Pause on Sleep, which stops charging before sleep, or Stay Awake to Limit.

My Mac stopped charging. Help!

Use Emergency Reset in the app or run calma reset. On Apple Silicon, a full shutdown followed by a 30-second wait always restores stock behaviour. The full recovery guide covers Intel Macs too.

Does it work on Intel Macs?

Yes. The universal build supports Intel MacBooks from 2016 onwards on a best-effort basis. Hardware reports from Intel owners are very welcome.

Can I run it alongside another battery app?

Please don't. Two apps writing the same controller keys will fight each other. Remove the other app and its helper first.

Open source

Made in the open.

You don't have to write Swift to help.

Built by Milan Patel

Calma is created and maintained by @Milanpatel35, free for everyone under GPL-3.0.

Follow on GitHub

Hardware reports

Tell us which features work on your MacBook. This is the most valuable contribution there is.

File a report →

Translations

Bring Calma to your language. It only takes a text editor.

Translation guide →

Code & docs

Pick up a good first issue, improve the docs, or help research macOS 27.

Contributing guide →
Calma app icon

Give your battery a break.

Free and open source. Works on macOS 13 and later, with Apple Silicon and Intel in one universal build.

Skip the macOS warning — install from Terminal:
curl -fsSL https://raw.githubusercontent.com/Milanpatel35/calma/main/Scripts/install.sh | bash
Downloading the .dmg instead? macOS asks you to approve it once in System Settings → Privacy & Security → Open Anyway. Install guide →