Solaris is a professional Windows application built with Flutter that synchronizes your monitor’s brightness and color temperature with natural circadian rhythms. By calculating the precise position of the sun (elevation and azimuth) based on your geographic location, Solaris ensures a comfortable, healthy, and fully automated computing experience 24/7.
The core of Solaris. The app automatically calculates the sun’s position relative to your horizon and adjusts monitor brightness according to a customizable curve.
Don’t settle for defaults. Visualize and refine your lighting profile.
Full control over your entire workspace.
Protect your eyes from blue light. Solaris shifts your display to warmer tones as the sun goes down.
Focus on the win without distractions.
The first monitor controller that cares about the sky.
Control your environment without leaving your current app.
Solaris supports automatic updates directly from within the app:
actions/attest-build-provenance@v4 / SLSA Provenance v1). Ensures that updates were compiled directly by GitHub Actions CI/CD from open-source code and rejects any manually modified or replaced files.solaris_updater.exe): Written in C++17 (using miniz), creates a backup, protects against vulnerabilities (Zip Slip), and performs an automatic rollback in case of failure.[!NOTE] Custom Builds (
IS_OFFICIAL_RELEASE=false): Automatic updates are disabled by default. Note that updating from a custom build to an official release may reset your saved API keys due to Windows DPAPI encryption mechanics.
Solaris supports sleep data integration to fine-tune monitor brightness and color temperature according to your sleep patterns. You can choose between a local offline integration or sync with Google Fit.
When Smart Circadian Regulation is enabled, Solaris applies four physiological models based on your sleep history:
If you prefer not to use Google Fit or want a completely offline, internet-free setup, Solaris features a built-in Local API Web Server. This allows third-party desktop sleep trackers, smart alarms, or automation scripts running on your PC to feed sleep data directly into the app.
45321).127.0.0.1), meaning it is inaccessible from the local network or the internet. Your sleep data remains entirely on your machine.POST http://127.0.0.1:45321/api/sleep/sessions):
Expects a JSON array of sleep session objects:
[
{
"id": "unique-session-id-123",
"startTime": "2026-07-17T00:30:00Z",
"endTime": "2026-07-17T08:00:00Z",
"title": "Night Sleep",
"source": "local_api"
}
]
POST http://127.0.0.1:45321/api/sleep/status):
Expects a JSON object indicating if the user is currently asleep:
{
"is_sleeping": true
}
Solaris supports direct synchronization with Google Fit to retrieve your sleep history, enabling high-precision adjustments to monitor color temperature and brightness based on your personal circadian rhythms.
[!IMPORTANT] Access & Security Policy: Due to Google’s stringent security policies regarding health data (Restricted Scopes), public applications are prohibited from accessing sleep history without undergoing an extensive and costly independent security audit.
Consequently, official releases of Solaris do not ship with built-in Google Fit credentials. However, you can easily bypass this restriction using your own personal Google Cloud credentials.
To use Google Fit synchronization, you need to obtain your own Client ID and Client Secret:
fitness.sleep.read scope, and add your Google account to the test users list.Once you have the credentials, you have two options to integrate them:
.env.example to .env in the solaris/ directory, insert your credentials, and compile the app from source.Solaris is designed to be fully functional out-of-the-box, but advanced features (Mapbox maps, WeatherAPI forecasts, Google Fit sleep sync) require specific API credentials. Instead of forcing you to build the application from source code to insert these keys, Solaris features a Dynamic API Keys Management System built directly into the UI.
The application relies on Riverpod’s reactive state architecture. When you save or clear a key in the settings UI:
Your custom API keys are secure:
.env file during compilation).Solaris includes a built-in, local HTTP & WebSocket control server that enables third-party applications (Home Assistant, BitFocus Companion, Stream Deck, Raycast, Node-RED, or custom scripts) to query state, adjust monitor parameters, trigger presets, subscribe to real-time events, and receive outbound webhooks.
set_brightness, set_temperature, set_auto_brightness, manage_game_mode_whitelist, etc.).display-1, lg-ultragear-a1f9, primary) or system paths (\\\\.\\DISPLAY1).X-Solaris-Signature-256), WAL Staging Buffer, and Dead Letter Queue (DLQ)./api/v1/ws with cmd_id request correlation, selective module subscriptions, and Windows Power S3/S4 sleep/resume broadcasts./api/v1/docs and raw spec at /api/v1/openapi.json.Detailed technical documentation for integrating with Solaris Control API v1 is available in the docs/ directory:
| Document | Description |
|---|---|
| Architecture & Core Guide | Core design, security pipeline, authentication formats (X-API-Key, Bearer, ?token), RFC 7807 error format, and Swagger UI setup. |
| REST Endpoints & Action System | State endpoints (/api/v1/status, /api/v1/health, /api/v1/presets, /api/v1/sleep/sessions), Friendly Slugs, and comprehensive catalog of all 26 Action commands. |
| Outbound Webhooks Engine | Webhook management REST endpoints, 23 Webhook events catalog, SSRF protection, True IP-Pinning, HMAC-SHA256 signatures, WAL buffer, and DLQ handling. |
| Real-Time WebSocket API | Socket endpoint (/api/v1/ws), authentication headers, cmd_id correlation, selective module subscriptions, and OS/Hardware error broadcasts. |
Solaris leverages cutting-edge technologies for peak performance on Windows:
solar_calculator, sunrise_sunset_calc).lib/
├── l10n/ # Localization (English, Russian, Ukrainian support)
├── models/ # Data structures (SolarPhase, SettingsState, PresetType)
├── providers/ # Feature-specific logic (Weather, Temperature, Lifecycle)
├── screens/ # UI Screens (Dashboard, Schedule, Settings, Location, Sleep)
├── services/ # Core mechanics (Monitor control, Sun math, Hotkeys)
├── theme/ # Premium Glassmorphism styling and palettes
└── widgets/ # Specialized UI components (SunPathPainter, Dials, Charts)
If you just want to use the application, you can download the latest ready-to-use version from the Releases page.
.zip archive.solaris.exe.[!TIP] API Keys & Integrations: Pre-built releases do not ship with embedded credentials. However, you can configure your own credentials for Google Fit, Mapbox, and WeatherAPI directly in the app’s Settings screen (no compilation or command-line setup required).
Solaris can be compiled and executed entirely without any API keys. If you do not configure .env (or configure it with placeholders), the application will build successfully and run in Graceful Fallback Mode (see Feature Limitations below). However, you can still enter these keys dynamically in the running app’s settings at any time.
Prerequisites:
Clone the repository:
git clone https://github.com/maksim0-debug/Solaris.git
Setup Environment Variables:
Navigate to the solaris/ directory, rename .env.example to .env.
cd solaris
cp .env.example .env
Configure API Keys (Optional):
Open the newly created .env file and insert your credentials to unlock advanced features at build time:
WEATHER_API_KEY.MAPBOX_TOKEN.GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET.Get dependencies & generate code:
flutter pub get
dart run build_runner build --delete-conflicting-outputs
Run the app:
flutter run -d windows
flutter build windows
If you compile or run Solaris without providing API keys, the application automatically handles this by disabling specific features while keeping the core circadian rhythm engine fully functional. You can unlock any of these features at runtime by supplying your custom keys in Settings -> API Keys:
| Feature / Integration | Requirement | Fallback Behavior when Key is Missing (Unlockable in Settings) |
|---|---|---|
| Interactive Map & Mini-Map | MAPBOX_TOKEN |
Map areas display a padlock icon. Clicking it shows a tooltip informing that the token is missing. You can still set your coordinates manually. Reverse geocoding falls back to a timezone-based city lookup. |
| WeatherAPI Provider | WEATHER_API_KEY |
“WeatherAPI” option in Settings is disabled and displays a warning under the selector. Solaris automatically falls back to Open-Meteo API (free public endpoints), meaning weather-based brightness shifts remain functional. |
| Google Fit Integration | GOOGLE_CLIENT_ID |
“Connect Google Fit” button on the Sleep screen is disabled, and an informative warning message is shown. Offline sleep tracking can still be fully synced using the Local Sleep Integration. |
Developed with ❤️ for visual health and focused productivity.