Eighteen real controls
Keep Awake, Dark Mode, Screen Clean, Clean URL, Color Picker, Lock Keyboard, Audio Output, Quit App, Microphone Mute, Screen Draw: every action calls a real system API. Keep Awake registers an IOKit power assertion; it doesn't fake a state and hope the display stays on.
// Services/KeepAwakeService.swift
let result = IOPMAssertionCreateWithName(
kIOPMAssertionTypeNoDisplaySleep as CFString,
IOPMAssertionLevel(kIOPMAssertionLevelOn),
"Fluxa Keep Awake" as CFString,
&assertionID
)
guard result == kIOReturnSuccess else { throw … }
Hardware you can watch
CPU, GPU, memory, die temperature, disk space & throughput, network I/O, battery health, and connected Magic peripherals, pinned to the popover, the menu bar, or both. Click the strip and the readings expand into a 30-minute dashboard with separate percentage and degree axes. Threshold alerts notify you via UNUserNotificationCenter with dwell time and hysteresis for CPU, temperature, and disk space so a brief spike never spams you. A failed sensor pass leaves an honest gap. It never repeats old numbers.
// Services/SystemStatsService.swift: in memory only
static let historyDuration: TimeInterval = 30 * 60
history.append(SystemStatsHistorySample(
timestamp: timestamp,
values: measuredValues
))
let cutoff = timestamp.addingTimeInterval(-Self.historyDuration)
if let firstRetained = history.firstIndex(where: { $0.timestamp >= cutoff }),
firstRetained > 0 {
history.removeFirst(firstRetained)
}
Your agent quota, in the menu bar
Live session and weekly meters with reset countdowns for Claude, Codex, and Antigravity, plus daily token history grids. The quotas come from each agent's own CLI endpoints; for Antigravity, Fluxa queries its local language server directly over loopback via CSRF token authentication: zero credentials stored, and no request ever leaves your Mac. Token spend is scanned on-the-fly from session logs and local conversation SQLite databases via fast Protobuf parsing. All providers gracefully honor Retry-After rate limits.
// Services/AgentUsageReaders.swift: 0 credentials stored
if let retryAfter = AgentRetryAfter.parse(response: httpResponse) {
throw AgentUsageReadError.rateLimited(retryAfter: retryAfter)
}
let (json, _) = try await AgentHTTP.getJSON(url: Self.usageURL, …)
The hinge, at 60 fps
On Apple Silicon the lid angle is a HID sensor whose feature report returns whole degrees; on Intel it's an IORegistry property in raw units. Fluxa tries both and animates a goniometer from whichever answers. On a desktop Mac the feature simply reports itself unavailable.
// Services/LidAngleMonitor.swift
/// 1. Apple Silicon: HID sensor (usage 0x8A).
/// Feature report: [reportID, lo, hi] -> lo|hi<<8 = degrees.
/// 2. Intel: `LidAngle` IORegistry property (~16384 = 180°).
init() {
if openHIDSensor() { isAvailable = true }
else { … }
}
A scale hiding in your trackpad
Force Touch strain gauges already report pressure in grams, but only under a capacitive touch, and
NSEvent.pressure only fires during a click. Fluxa
dlopens the private MultitouchSupport framework,
validates the frame layout at runtime, and hides the feature entirely if that layout ever changes.
// Services/TrackpadWeightService.swift
// off 8: timestamp | off 52: float pressure (GRAMS)
let pressure = record.loadUnaligned(
fromByteOffset: offsetPressure,
as: Float.self
)
guard total.isFinite, pressure.isFinite,
(0...20_000).contains(pressure) else { continue }
Draw on the slide you're presenting
Press ⌘⇧D and a transparent canvas covers every display. Circle a number, point an arrow at it, highlight a title, then switch to the laser or the spotlight to guide the room. Hold ⇧ for straight lines and perfect circles, hold ⌥ to click through to the app underneath, and press ESC when you're done.
The toolbar follows your Fluxa appearance and stays on your screen only. In Zoom, Meet, Teams or a recording, people see your annotations and never the controls.
// Services/ScreenDraw/ScreenDrawHUDPanel.swift
// Screen sharing and recordings capture the ink, not the toolbar.
panel.sharingType = service.hideHUDFromScreenCapture ? .none : .readOnly
Customize · 5 tabs
Settings that stopped being one list
Preferences are grouped into General,
Actions, System,
Agents and Updates, and all of it
still transitions in place inside the MenuBarExtra
instead of opening a settings window, so the popover never loses focus. General holds the three visual
styles, subtitles, Launch at Login and the door into Permissions & First Run.
Actions: order and visibility
Every action gets a tinted icon tile and a switch in its own colour. Drag to reorder, turn one off to
hide it from the dashboard; the layout survives relaunches through UserDefaults.
// Models/AppSettings.swift: @Observable source of truth
@Observable
final class AppSettings {
var actionOrder: [ActionID] = ActionCatalog.defaultOrder
var hiddenActions: Set<ActionID> = []
var controlStyle: ControlStyle = .classic
}
System: pick the readings and where they go
CPU, GPU, memory, die temperature, disk space & throughput, network throughput, battery health, peripheral battery, and threshold alerts each carry their current value right in the row, with dual destinations: the popover, the menu bar, or both. Up to 4 readings can be pinned simultaneously in the menu bar with enlarged 17pt glyphs and independent symbol sizing, while the popover wraps chips into an adaptive two-column grid. Sampling runs at 1, 2, 5 or 10 seconds, and the dashboard reuses that same loop rather than doubling sensor work.
Agents: quota windows and refresh rate
Each detected quota window across Claude, Codex, and Antigravity is listed with its live percentage. Claude credentials persist seamlessly via the macOS security tool without recurring authorization prompts. The refresh choices aren't round numbers: a 5-hour session window spends 100 points over 300 minutes, so one percentage point takes three minutes. Polling faster can't return a different integer. It only spends requests. Rate limits back off gracefully with standard Retry-After headers.
// Models/UsageRefreshInterval.swift
// "About 1.7% of a session window between reads."
case everyFiveMinutes // ≈1.7% (default)
case everyThreeMinutes // min. 1% change interval
Updates: checked daily, installed on your word
Automatic checking is a consent toggle, not a default that acts on its own: it checks daily, and downloading and installing still require confirmation. Updates arrive over an HTTPS feed as Ed25519-signed archives, and releases are signed with the stable Fluxa Code Signing certificate, preserving macOS Keychain ACLs and Accessibility TCC permissions across every update without repetitive authorization prompts.
No ads. No analytics. No system profiling.
That line sits at the bottom of the About screen, and it's the whole policy. There is no Fluxa server of any kind. The only network calls are the agent quota endpoints and (only while About is open) GitHub's public API for the developer card. Token counts, the scan cache and your preferences live in Application Support and UserDefaults, never in a release artifact.
About now fits it all on one screen: version and build, the live GitHub profile card with stars, repos and followers, Check for Updates… with its last-checked timestamp, and the optional coffee link. No scrolling, no second window. FluxaCore separates core logic into an independently testable module with 152 automated tests across 25 suites and Swift 6 strict concurrency compliance.
Screenshots show Cyber Dark appearance, the native Control Deck look.