Polaris - Battery, range and charging status — always one glance away

Polaris is a tiny native macOS menu bar app for your Polestar: battery, range, charging status and time-to-full, refreshed every five minutes and every minute while charging. It notifies you when charging starts, finishes or faults — and nothing else. A desktop widget in three sizes reads what the app already fetched, so it costs the car nothing. AppKit, not Electron. Your password lives in the Keychain, it talks only to Polestar's own API, and there are no trackers. MIT licensed.

Add a comment

Replies

Best
Hi Product Hunt 👋 I drive a Polestar, and every time I wanted to know whether it had finished charging I had to find my phone, unlock it, open an app and wait for it to wake the car. That is a lot of ceremony for one number. Polaris is that number, in the menu bar. Click it and you get the whole picture: battery, range, charging state and time-to-full, the charger's live power and whether it's AC or DC, odometer, service interval, and a studio render of your exact car. It refreshes every five minutes, or every minute once you plug in. Three things I decided early and don't regret: - Native AppKit, not Electron. The whole app is one small signed binary, and it idles at nothing. - No backend. There is no Polaris server – your Mac talks to Polestar's own API with OAuth2/PKCE, your password and session live in the macOS Keychain, and there are no analytics or trackers anywhere. - Notifications only when something changed: charging started, charging complete, charger fault. Each is its own switch, and nothing else ever pings you. The two things that took longest were not the ones I expected. Charging power and AC/DC aren't in the GraphQL API at all, so that reads from the gRPC battery service underneath it. And the desktop widget turned into a lesson in code signing: WidgetKit only registers a sandboxed extension, and macOS only honours an App Group container for a build signed with a real team – so an ad-hoc build gets handed a container it is then denied every read from. It's free, MIT licensed. Happy to answer anything – and if you have a Polestar and something reads wrong, tell me which model and year and I'll fix it.