Open-source project
rurza/BatFi avatar
rurza/BatFi

BatFi: a macOS charge limiter whose current version is no longer open source

Battery charge limiter for macOS. Hold any limit, below 80% too, change it by time and place, and charge to 100% when you need it.

593 stars63 forksSwiftMIT

At a glance

What is it?
BatFi holds a MacBook's charge at any limit, changes that limit by time and place, and charges to 100% on demand. This repository holds the Swift code up to version 2.3 from 2025, while the current BatFi 4 app is developed separately and sold for a one-off 15 dollars, so what is open source here is the older app rather than the product you can buy today.
Who is it for?
BatFi fits a macOS user on Apple silicon who wants a charge limit below the 80% that the system offers, and who is willing to run a small menu bar utility and, for the current version, to buy a one-off licence. It does not fit anyone looking for an actively developed open source project, because the code in this repository stops at version 2.3 while the app being sold is BatFi 4.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 7 days ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the app does beyond the system charge limit

BatFi is a battery charge limiter for Mac, and the README states its value proposition in one line: stop charging at 80%, or hold any limit, change it by time and place, and charge to 100% the moment you need it. The underlying reason is stated plainly in the next section, that keeping a lithium-ion battery at a high charge wears it faster. The interesting part is the gap between that and what macOS does on its own. Since macOS Tahoe 26.4, a Mac with Apple silicon can stop charging anywhere from 80% to 100%, and BatFi's claim is that it does much more than that. It holds any limit, including below 80%. It changes the limit by time and place, so the threshold can follow your schedule. It charges to 100% in one click when you need the power, and it pauses charging when the battery gets hot. The audience is a MacBook user who treats the machine as a long-lived machine and wants more control than the system setting offers.

Battery health details, energy hungry apps and a nudge to discharge

The rest of the feature list is where the app stops being a single setting and becomes a small utility. BatFi shows which apps are using a lot of energy, which is the kind of information that changes behaviour rather than just a number. It shows battery health, cycle count, temperature and the time left on battery. It reminds you when the battery has not been run down and fully charged in a while, which is the behaviour that keeps a battery's calibration honest, and it turns on Low Power Mode from a keyboard shortcut in any app. That last one is a small convenience with a large convenience value, since it removes the trip to system settings. The trade-off is that the app sits in the menu bar and does things on your behalf, so the limit it applies is the limit you chose, and the OS limit has to be out of the way first, which the README addresses directly and which this article returns to below.

The repository stops at 2.3 while the product you buy is BatFi 4

This is the single most important fact in the README and it is easy to skim past. The repository holds BatFi's code up to version 2.3 from 2025, and the current app, BatFi 4, is developed separately. The download link points at micropixels.software/batfi, and the buy link goes to a Gumroad page, where the app is 15 dollars once, not a subscription, and one licence covers every Mac you own. So the open source project and the current product have diverged. What you can read here is the Swift implementation of the 2.x generation, which is a real app with real features, and it is genuinely useful for anyone who wants to study, fork or maintain that generation. It is not the source of the app you would download today, and any claim that it is would be wrong. The release history backs this up, with 2.3.0 published on 2025-02-17 and 2.0.1 on 2024-06-25, and the last push to the repository on 2026-10-16.

The system limit and Optimized Battery Charging have to be off

There is a configuration step that the README treats as mandatory, and skipping it is the most likely way to end up with an app that appears to do nothing. With BatFi, you turn off the limit in macOS and turn off Optimized Battery Charging. The reason is straightforward once you see how the two overlap. The system decides when to stop charging based on its own policy, and BatFi decides when to stop charging based on yours, and two controllers writing the same setting will fight. So the system behaviour is switched off and the app takes over that decision entirely, which also means the limit you see in macOS system settings is no longer the one in force. The system setting is not removed, only deferred to the app, and you need to know that before you look for a change and do not find one.

Requirements: Sonoma 14.8, Apple silicon, and a paid licence for the current build

BatFi runs on macOS Sonoma 14.8 and later, and it requires a Mac with Apple silicon. Both constraints are hard. The Apple silicon requirement reflects how the app talks to the machine's charging behaviour, and the operating system floor reflects the APIs the app relies on, so an Intel Mac or an older macOS cannot run it at all. The commercial terms are the third constraint and the one that changes how you should read this repository. The current BatFi 4 build is sold for 15 dollars as a one-time purchase, and the README is explicit that one licence covers every Mac you own, which is a different model from a per-machine subscription. The repository itself is MIT licensed with a LICENSE file at the root, so the 2.3 code you read here can be studied and reused under that licence, and the distinction between the two is the one to hold on to when you decide what to build on.

The Xcode project layout, and the pieces a fork would touch

The repository layout gives a good picture of how a menu bar Swift app of this kind is put together. There is an App directory for the application target, a BatFiKit directory for the reusable code, a Helper directory, an Installer directory, a LetsMove directory, a Previews directory for SwiftUI previews, a Supporting Files directory for assets, a BatFi.xcodeproj project file, and a ci_scripts directory for the continuous integration side. There is also a .swiftformat configuration, which tells you the project formats its own source rather than leaving it to each contributor's editor, and a .gitmodules file, so at least one dependency arrives as a submodule. The interesting split for anyone reading the code is App versus BatFiKit, since the menu bar interface and the logic behind it are separated, and the Helper and Installer directories suggest the app also ships a privileged helper and an installer component. The .gitignore, the LICENSE and the README complete the list.

What a new user should verify before trusting it on a real machine

Two things are worth checking before you install anything like this. The first is the operating system and hardware, since a Mac that is Intel based or on an older macOS than Sonoma 14.8 simply cannot run the app, and the failure will look like a compatibility problem rather than an unsupported platform. The second is the interaction with the system charge limit and Optimized Battery Charging, which have to be off for BatFi to take effect. Beyond that, the ordinary care applies to any utility that manages charging: it is adjusting a hardware behaviour, so it is worth knowing how to undo it, and the README says the download and the extended FAQ are at micropixels.software/batfi and micropixels.software/support. The fact that the current app is closed source and the open code is a generation behind is the fact to weigh if your intent is to contribute upstream rather than simply to use the tool.

Editorial conclusion

BatFi fits a macOS user on Apple silicon who wants a charge limit below the 80% that the system offers, and who is willing to run a small menu bar utility and, for the current version, to buy a one-off licence. It does not fit anyone looking for an actively developed open source project, because the code in this repository stops at version 2.3 while the app being sold is BatFi 4. Before deciding to build on this repository, confirm which version you would actually be modifying, check that your Mac runs macOS Sonoma 14.8 or later on Apple silicon, and remember that the current release also expects you to turn off the macOS charge limit and Optimized Battery Charging.

Frequently asked questions

What does BatFi do that macOS does not?

macOS Tahoe 26.4 lets a Mac with Apple silicon stop charging anywhere from 80% to 100%. BatFi holds any limit including below 80%, changes the limit by time and place, charges to 100% in one click, pauses charging when the battery is hot, and reports energy use per app, battery health, cycle count and temperature.

Is the current BatFi app open source?

No. The README states that this repository holds BatFi's code up to version 2.3 from 2025, while the current app, BatFi 4, is developed separately and is sold at micropixels.software/batfi for 15 dollars as a one-off purchase, with one licence covering every Mac you own.

What do I need before BatFi works on my Mac?

macOS Sonoma 14.8 or later on a Mac with Apple silicon, and you must turn off the charge limit in macOS and Optimized Battery Charging so the app can control charging itself.

What licence is the BatFi source under?

The repository is MIT licensed, with the LICENSE file at the root of the tree. The 2.3 generation of the app in this repository is therefore readable and reusable under those terms, separately from the commercial licence for the current BatFi 4 build.

Official sources

  1. License: MIT
  2. Project website
  3. README
  4. Releases
  5. rurza/BatFi on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/rurza-batfi.svg)](https://hysenlabs.com/projects/rurza-batfi)

Was this useful?