Skip to content

matthewrball/abendrot

Repository files navigation

Abendrot

Abendrot

A macOS app for your circadian rhythm.
Your Mac's screen warms with the evening — on every display — so your nights stay calm and your mornings stay sharp.
Free, open-source, and grounded in peer-reviewed light research. Read every line of it.

MIT license macOS 26 Tahoe Apple Silicon Pre-release GitHub stars

Built in the open · abendrot.app · Signed builds + brew install --cask abendrot land with v1.0


Abendrot (German: the red glow of sunset) warms your screen's color temperature across every display — built-in and external — to support your circadian rhythm in the evening. It has an instant Reveal True Color hotkey for color-critical work, a Liquid Glass interface, and zero telemetry by default.

It's the f.lux / Night Shift successor built to do the thing the incumbents quietly fail at: reliably warm external monitors and the buttonless Apple displays — Studio Display, Pro Display XDR, LG UltraFine — and keep working on the newest Apple Silicon Macs, where the classic gamma trick silently stops warming. Without tracking you.

Status: pre-release. The warmth engine is implemented and unit-tested (112 tests) and verified warming real hardware. There's no signed download yet — you can build it from source today (see Build from source). The first notarized release lands here when it's ready.

Grounded in the science

Your eye has a non-visual light sensor — melanopsin, in a class of retinal cells called ipRGCs — that is most sensitive to short-wavelength blue light around 480–490 nm and helps tell your brain whether it's day or night (Berson et al., 2002; CIE S 026:2018). Warmer, dimmer light in the evening puts less energy in that band.

Abendrot is designed around that: it attenuates the display's blue channel as it warms, and at its warmest everyday setting (~1900 K) the warming curve takes the blue channel to zero. We link the research rather than asserting health outcomes — and because the dose depends on intensity as much as color, the honest advice is to also lower your screen brightness in the evening. See The science for citations.

General wellness, not medical advice. Abendrot reduces evening blue-light exposure; it is not a medical device and makes no claim to treat or improve any condition.

Why Abendrot

  • Warmth that actually lands on every display. A layered engine warms each display with the best true-warming method available — and tells you which one each display is using, never a silent no-op.
  • Reveal True Color. Hold a global hotkey and warmth lifts across every display for color-critical work; release and it eases back. Built for designers and photographers.
  • Scriptable & AI-controllable. An abendrot CLI drives the running app from your terminal — or from an AI assistant like Claude Code, Codex, or Cursor. Read live state as JSON, set warmth, trigger a reveal. (see Scripting & AI control)
  • Health is the reason; reliability is the proof. Abendrot helps you keep warmer, lower-blue light in the evening, and links the circadian research instead of making medical claims.
  • Genuinely trustworthy. MIT-licensed, no telemetry by default, no account, runs entirely on your Mac. The anti-NightOwl.

How it works

Warmth is applied per display by a layered engine that picks the best working method and reports it in the UI:

Layer What it is Role
Gamma The system display transfer table (CGSetDisplayTransferByTable) The universal true-warm default — works OS-level on built-in and external displays, including buttonless Apple displays. Chip/OS-aware: used where it genuinely warms, never where it would silently no-op.
Hardware (DDC) Real panel RGB-gain over DDC/CI Opt-in per display — a hardware upgrade where a monitor exposes gain control.
Overlay A per-screen Metal veil The universal floor — works on every display type, always available as a fallback.

Each connected display shows a small badge — Gamma / Hardware / Overlay — so you always know what's actually happening. The schedule follows your system Night Shift window when available, or a custom/manual schedule.

Scripting & AI control

Abendrot ships a command-line tool, abendrot, that drives the running app — so you can script screen warmth from a shell, a keybinding, a launchd/cron job, or hand the same commands to an AI coding assistant like Claude Code, Codex, or Cursor. It's the same auditable engine the menu bar drives, now with a command surface you can read and automate.

abendrot set warmth 0.8        # warm the screen to 80%
abendrot status --json         # read live state as JSON — pipe it anywhere
abendrot reveal --hold 10      # momentary true-color peek, then ease back

Trust boundary, stated honestly: abendrot talks to the app as the same macOS user, in your local session, and changes visual state only — no network listener, no privileged helper. An AI assistant "controlling Abendrot" is just running the same abendrot command you could type yourself, and it can't reach any further than you can. When you install the app, the binary ships inside the bundle and the Homebrew cask symlinks it onto your PATH.

Common tasks → commands — the v1 surface (abendrot --help for everything)
Task Command
Set warmth (0–1, or by Kelvin) abendrot set warmth 0.8 · abendrot set warmth --kelvin 2700
Read live status as JSON abendrot status --json
Read one configured setting abendrot get warmth
Turn warming on / off abendrot on · abendrot off
Set the schedule mode abendrot set mode sunset (or always-on / off)
Set the warmest point the slider maps to abendrot set max-warmth 1900
Toggle cozy mode (the deepest candle/ember warmth) abendrot cozy on · abendrot cozy off
Choose hold vs toggle for reveal abendrot set reveal-mode hold (or toggle)
Set location for the sunset schedule abendrot set location --auto (or <lat> <lon>)
Exclude an app from warming abendrot exclude add com.apple.FinalCut
List / remove exclusions abendrot exclude list · abendrot exclude remove <bundle-id>
Momentary true-color reveal abendrot reveal --hold 8

Machine-readable everywhere: every command takes --json, and exit codes are scriptable (0 ok · 2 bad input · 3 app not running · 4 live-apply timeout). See AGENTS.md for the full agent-facing reference.

How it compares

Abendrot Apple Night Shift f.lux Redshift
Platform macOS 26+ macOS / iOS macOS / Windows / Linux Linux / X11
Warmest setting ~1900 K — the warming curve takes the blue channel to its practical minimum ~2700–3400 K 1 (Apple publishes no value); never reaches ~1900 K ~1900 K ("Candle") Configurable
Blue at the warmest setting Driven to its practical zero Reduced, but not eliminated 2 Deep (candle) Depends on setting
Warms Apple's buttonless displays (Studio Display, Pro Display XDR) Yes Yes (Apple's own) No No
Reliable on third-party external monitors Yes (layered, with fallback) Inconsistent 1 Gamma only; unreliable X11 only
Shows the actual color temperature + method, per display Yes No — a "Less / More Warm" slider No Per-output
Reveal-true-color hotkey Yes (hold) No No Toggle only
Scriptable CLI / AI control Yes (abendrot, --json) No No Partial (CLI)
Open source Yes (MIT) No No (freeware, closed) Yes (GPL)
Telemetry None by default Apple's Unknown (closed-source) None
Price Free forever Free (built in) Free Free

Night Shift is a fine, free, built-in option — especially on a MacBook's own display. Abendrot is for deeper warmth and reliable warming across every external display, with the actual Kelvin and warming method shown per screen.

1 Apple publishes no Kelvin value for Night Shift; ~2700–3400 K is a third-party estimate (Iris, f.lux). On external displays, Apple states performance "depends on the characteristics of the display" (Apple Support). 2 Per Michael Herf of f.lux (2017 spectrometer measurement, macOS 10.12.4), Night Shift removes under ~30% of blue light's biological impact at its default setting. Figures reflect third-party measurements/estimates and our own testing. General wellness, not medical advice.

Install

Pre-release. Abendrot isn't downloadable yet. Signed, notarized builds and a Homebrew cask arrive with v1.0 — watch Releases or abendrot.app. Until then, build from source below.

Coming with v1.0: download a .dmg from Releases, or brew install --cask abendrot (which also puts the abendrot CLI on your PATH). Requirements: macOS 26 "Tahoe" or later, Apple Silicon.

The science

Abendrot makes no health claims of its own — it links the research and lets you read it. A few starting points, all peer-reviewed:

Individual responses to light vary widely; these are general-wellness references, not a promise of any outcome. Pair warmth with lower brightness for the biggest reduction in evening light exposure.

Build from source

Requires macOS 26 "Tahoe", Xcode 26, and XcodeGen (brew install xcodegen).

git clone https://github.com/matthewrball/abendrot.git
cd abendrot

# Engine package — builds and tests headlessly, no app bundle needed
swift test --package-path WarmthKit          # 112 tests / 22 suites

# The app
xcodegen generate                            # generates Abendrot.xcodeproj from project.yml
open Abendrot.xcodeproj                       # build & run the Abendrot scheme in Xcode

# The CLI (optional) — a standalone thin client to the running app
swift build -c release --package-path cli
./cli/.build/release/abendrot --version      # → 0.1.0

It runs in the menu bar — look for the sunset arc. Quit from the popover footer (power icon) or ⌘Q.

Tech

Native Swift 6 (SwiftUI + AppKit), macOS 26 "Tahoe", Apple Silicon. No Electron, no bundled runtime. The warmth engine lives in a standalone, unit-tested Swift package (WarmthKit); the app is a small menu-bar agent; the abendrot CLI is a separate thin client that talks to the running app.

Privacy

No telemetry by default. No account, no identifiers, nothing leaves your Mac unless you explicitly opt in to anonymous, aggregate usage stats later. See PRIVACY.md.

Contributing

Issues and pull requests are welcome — bug reports from real display setups are especially valuable, since the whole point is reliability on hardware we can't all test on. See CONTRIBUTING.md. Security disclosures: SECURITY.md.

License

MIT © Matthew Ball. Free forever — never behind a paywall. If Abendrot helps your evenings, you can support its maintenance via GitHub Sponsors.


Soften into the evening.

About

A macOS app for your circadian rhythm — warms your screen on every display. Free, open-source, zero telemetry.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors