Fluxa icon

Fluxa

Essential macOS system controls, one click away in your menu bar.

Eighteen quick actions, every one backed by a real system API. No fake toggles. Built in Swift + SwiftUI with zero third-party runtime dependencies.

macOS 14+ Swift 5.9 SwiftUI FluxaCore Apache-2.0 Sparkle 2
⬇ Download the DMG Source Watch Demo (20s)

Apple silicon, macOS 14 or later, about 3 MB. Release notes and checksums

Scroll
Live Demo · 20 Seconds

See Fluxa in motion

Eighteen quick actions, real hardware sensors, and live AI quota meters in action.

Fluxa-Launch-Trailer.mp4
Cyber Dark
0:00 / 0:21
Moments:
PopoverRootView.swift CPU 7%
Fluxa menu-bar panel with system readings and quick actions Fluxa System Dashboard with CPU, GPU, memory and temperature charts Agent Usage window with Claude, Codex, and Antigravity quota meters and daily token contribution grids Fluxa Lid Angle window Fluxa Trackpad Scale window Customize General tab with appearance, startup and permissions controls Customize Actions tab with per-action visibility switches and drag reordering Customize System tab with hardware readings, destinations and sampling interval Customize Agents tab with quota windows, refresh interval and Claude permission guidance Customize Updates tab with automatic-check preference and manual update button Fluxa About page with version, updates, GitHub details and support link A slide annotated with Screen Draw: a highlighted title, a red circle and arrow on the tallest bar, and the floating toolbar at the bottom of the screen
One fluid menu-bar surface, no separate settings window.

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.

SwiftUI IOKit MenuBarExtra @MainActor
// 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.

Swift Charts IOKit / SMC Disk & Network Battery & Alerts 1-10 s sampling
// 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.

Claude, Codex, Antigravity Local loopback Protobuf & SQLite Retry-After aware
// 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.

IOKit.hid CADisplayLink Apple Silicon + Intel
// 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.

dlopen MultitouchSupport UnsafeRawPointer
// 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.

The Screen Draw toolbar tools: pen, highlighter, arrow, line, rectangle, ellipse, text, laser, spotlight and eraser, followed by the current ink color
The tools and ink color at actual size, in the Cyber Dark appearance.
New in 2.11 10 tools Multi-display NSWindow.sharingType
// 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.

In-panel navigation SMAppService 5 visual styles

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.

Two-column popover grid 4 in the menu bar Threshold alert toggles

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.

Sparkle 2.9.4 Ed25519 Stable certificate signing HTTPS appcast

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.

Local first No telemetry FluxaCore (152 tests) Apache-2.0 Zero dependencies

Screenshots show Cyber Dark appearance, the native Control Deck look.

All eighteen quick actions

Every one backed by a real system API. No placeholder toggles.

Keep Awake

IOKit power assertion, indefinitely or 15 min / 1 h / 4 h with auto-off.

Dark Mode

Switches the system appearance instantly via System Events.

Hide Desktop Icons

Clean screenshots and presentations, one toggle away.

Show Hidden Files

Reveals dotfiles and hidden folders in Finder.

Auto-hide Dock

Shows the Dock only on hover.

Screen Saver

Launches the macOS system screen saver immediately.

Screen Clean

Black overlay on every display; hot-plug aware, exits on click or ESC.

Clean URL

Strips tracking parameters (utm_*, fbclid, gclid…) with platform rules for YouTube, Amazon, and X.

Color Picker

Samples screen pixels via NSColorSampler and copies sRGB #RRGGBB hex with an instant HUD.

Lock Keyboard

Blocks keyboard input globally; the mouse stays free to unlock.

Focus Mode

Do Not Disturb through two clean, user-created Shortcuts.

Audio Output

CoreAudio output device switcher with one click, hot-plug aware.

Bluetooth Audio

Connect paired AirPods and headphones without digging through menus.

Quit App

Process manager listing user apps sorted by CPU time, with safety confirmation.

Microphone Mute

Mutes the default input device via CoreAudio with live state.

Lid Angle

Live hinge readout on Apple Silicon (HID) and Intel (IORegistry).

Trackpad Scale

Weighs small objects on Force Touch trackpad strain gauges in grams.

Screen Draw NEW

Draw over any app while you present: pen, shapes, text, laser and spotlight on every display. The toolbar stays hidden from screen sharing. ⌘⇧D.

Full Customization

Drag to reorder, toggle visibility, and pick from 5 visual styles with the interactive preview selector.

5 tabs, in-panel
AI

Multi-Agent Quotas

Live quota meters for Claude, Codex, and Antigravity in the menu bar. Antigravity connects on-device via loopback to its local server with CSRF protection: zero tokens stored or transmitted. Fast Protobuf scanning computes daily token burn without lagging.

HW

Deep Hardware Monitoring

Real-time metrics: CPU, GPU, memory, die temp, disk usage & throughput, network I/O, battery health, and Magic peripherals. Rolling 30-min history and proactive threshold alerts with dwell time and hysteresis to eliminate alert spam.

OS

Stable Identity & Privacy

Signed with the stable Fluxa Code Signing certificate, preserving macOS Accessibility TCC grants and Keychain access across Sparkle updates. Zero telemetry, 100% local first, and completely open source.

Install it in a minute

Download the DMG and drag Fluxa.app into Applications.

Or build from source

git clone https://github.com/zEhmsy/fluxa.git
cd fluxa
./build.sh
cp -r Fluxa.app /Applications/

Fluxa is self-signed with the persistent Fluxa Code Signing identity, not notarized. If macOS blocks the first launch, verify the download's origin and use System Settings → Privacy & Security → Open Anyway, if offered. Don't disable Gatekeeper. Once approved, subsequent updates install in place seamlessly. Requires macOS 14 (Sonoma) or later.

⬇ Download Fluxa.dmg

Already running Fluxa? About → Check for Updates… installs it in place. · All releases

Fluxa runs on your Mac

It's a menu bar app for macOS 14+ on Apple silicon, so it can't be installed on this device. Send yourself the link and download it from your Mac.

Email me the link