Open-source project
1372Slash/Zenith avatar
1372Slash/Zenith

Zenith: a Material Design 3 Expressive digital wellbeing app for Android

A Material Design 3 Expressive Digital Wellbeing App. Zenith - A Material Design 3 Expressive Digital Wellbeing App Zenith is a smart digital wellbeing assistant for Android, built with Material Design 3 Expressive .

462 stars20 forksKotlinGPL-3.0

At a glance

What is it?
Zenith is a Kotlin Android app that watches your usage stats and blocks apps with shields, delays and bedtime schedules. It is a build-from-source project with a GPL-3.0 licence and an unusually long permission list.
Who is it for?
Adopt Zenith if you are comfortable granting Usage Stats, overlay and foreground service permissions on a personal Android device, and if you want shields, delay timers and bedtime schedules rather than a passive screen-time report. Do not adopt it if you need an app-store-managed update channel, if your device blocks overlay grants through settings, or if you cannot accept that the README documents no rollback path for its blocking behaviour.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 5 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What Zenith solves, and for whom

Most screen-time tools tell you afterwards how long you scrolled. Zenith tries to interrupt the scroll while it is happening. The README describes it as a smart digital wellbeing assistant for Android that uses "proactive interventions and real-time monitoring" to break addictive scrolling habits. That word proactive is doing the work: the feature list is built around things that fire during use, not reports generated at the end of the day.

The audience is narrow but clear. It is for Android users who already know which apps pull them in and want a mechanism that sits between them and those apps. Shield Mode applies mindful pauses, usage frequency limits and emergency use quotas to specific apps. Goal Pursuit does the inverse, setting target usage times for productive apps and enforcing them with full-screen lock overlays. Mindful Gateway interrupts every non-whitelisted app with a pause before it opens. If your problem is "I open a video app and lose forty minutes", the design targets exactly that moment.

It is not a parental control suite or a managed-device product. There is no server, no account and no admin console in the repository layout. Settings live on the device, and the README describes Backup & Restore as saving settings and schedules locally with automated periodic backups or manual exports. That makes it a personal tool for a single owner of the phone.

How the monitoring and blocking pipeline fits together

The mechanism runs on Android's usage statistics rather than on a custom instrumentation layer. Zenith requests PACKAGE_USAGE_STATS, which the README says lets it see how much time you spend in your apps so it can enforce limits. A foreground service named AppUsageMonitorService does the continuous tracking, which is why FOREGROUND_SERVICE appears in the required list. When a limit is reached, SYSTEM_ALERT_WINDOW lets Zenith draw a shield or timer over the app you are in.

Two optional services change the timing characteristics. The accessibility service is described as helping Zenith catch when you open a restricted app instantly, making shields feel more responsive. Without it, detection depends on the usage-stats polling loop, so there is a window between launching an app and the shield appearing. The notification listener service intercepts distracting notifications during Focus sessions or Bedtime. Both are marked optional, and the README is honest that they improve responsiveness rather than being required.

Scheduling is layered on top. Focus Sessions and Smart Schedules block by time with BLOCK and ALLOW modes. Bedtime Mode uses ACCESS_NOTIFICATION_POLICY to silence the phone automatically on a schedule, with Wind Down notifications beforehand. SCHEDULE_EXACT_ALARM is listed as optional but is what makes daily resets and bedtime schedules land on time. Grace Period defines windows where everything is unblocked, and Early Kick adds optional reminders or an early ejection before a limit expires. The pieces compose: usage stats feed the monitor, the monitor triggers the overlay, and the schedulers decide when the monitor should be strict.

Installing Zenith and running a first shield

There is no Play Store listing in the README. Distribution goes through IzzyOnDroid and OpenAPK, both linked from the repository, with APKs on the GitHub releases page. The package name is com.etrisad.zenith. If you build from source, the README gives four steps: clone the repository, open it in Android Studio Ladybug (2024.2.1) or newer, ensure Android SDK 33+ is installed, and run on a physical device, which it recommends for proper permission handling.

bash
git clone https://github.com/1372Slash/Zenith.git
cd Zenith
./gradlew assembleDebug

The Gradle wrapper is present at the repository root, so the build does not require a separately installed Gradle. The README does not document a release signing configuration, so treat the debug build as the documented path for running your own copy.

On Android Go devices, the README notes that some builds do not allow granting the overlay permission through settings, and gives an ADB command instead:

bash
adb shell pm grant com.etrisad.zenith android.permission.SYSTEM_ALERT_WINDOW

Once installed, the first useful configuration is a single shield. Grant Usage Stats and overlay access, open the app list that QUERY_ALL_PACKAGES makes possible, and pick one app you want to interrupt. Enable Shield Mode on it and set a frequency limit. Then open that app and use it until the limit trips. What you should see is the shield overlay drawn on top of the other app, since the README states Zenith shows a Shield or a timer over other apps when you have reached your limit. If nothing appears, the accessibility service is the first thing to enable, because that is what the README says makes shields responsive rather than dependent on the polling loop.

The permission surface is the real cost of admission

The README lists sixteen permissions, nine required and seven optional, and that is the most important thing to understand before installing. Usage stats, overlay, the full app list via QUERY_ALL_PACKAGES, notifications, Do Not Disturb policy, foreground service, full-screen intent, wake lock and boot-completed are all required. The optional set adds accessibility, notification listening, exact alarms, battery-optimization exemption, storage access for backups, internet access for update checks, and calendar access for the Show Current Event feature that displays your current calendar event during the app-opening delay.

Some of these are unavoidable for what the app does. You cannot draw a shield over another app without SYSTEM_ALERT_WINDOW, and you cannot measure usage without usage stats. Others are design choices with privacy weight. QUERY_ALL_PACKAGES is required so Zenith can show you a list of apps to track or block, which means the app sees your installed package list. READ_CALENDAR is only used for one overlay feature, so declining it costs you a convenience and nothing functional. INTERNET is described as being for update checks and for opening GitHub or community pages from settings, which suggests the core blocking loop does not depend on network access.

Two permissions also carry failure modes the README acknowledges. Android Go devices may refuse the overlay grant through settings, forcing the ADB command above. And battery optimization is described as telling Android not to close Zenith in the background, which is a polite way of saying that on aggressive OEM battery managers the monitor can be killed and your limits silently stop applying. The README does not document what happens to an in-progress session when that occurs.

Where Zenith is the wrong tool

Zenith assumes a phone you control completely. On a work profile, a managed device with an MDM policy, or a phone where you cannot grant overlay or accessibility permissions, most of the feature list is inert. The README offers the ADB grant as a workaround specifically for Android Go, not as a general answer to policy-restricted devices.

The second limitation is that everything is enforced locally, on the honour system of the operating system. There is no account, no remote enforcement and no tamper resistance described. Grace Period exists as a deliberate unblocking window, and emergency use quotas are part of Shield Mode, so the design accepts that you will sometimes need to get through. That is a reasonable philosophy for a self-control tool, and a poor fit if you need an enforcement mechanism that the user cannot disable.

The third is the build and update story. The README's installation path is Android Studio Ladybug (2024.2.1) or newer with Android SDK 33+, and it recommends a physical device for permission handling. The repository has a fastlane directory, but the README does not document a Play Store channel. If you want automatic updates from a store you already trust, IzzyOnDroid or OpenAPK is the route, and the README does not describe how quickly those track releases. The last push to the repository was on 2026-07-16, which is also the date of the v1.5.8 release, so the project has been quiet since then.

How Zenith differs from Digital Wellbeing and StayFree

Android's built-in Digital Wellbeing is the obvious comparison, and the difference is in what each one does at the moment of temptation. Digital Wellbeing gives you dashboards, app timers and a Focus mode you switch on yourself. When a timer expires it typically closes the app or greys it out. Zenith instead draws an overlay on top of the app you are already in, which is why SYSTEM_ALERT_WINDOW is required rather than optional. The intervention is visible and interruptive rather than a quiet exit.

The second difference is the scheduling model. Digital Wellbeing's Focus mode is a mode you activate. Zenith's Focus Sessions and Smart Schedules are time-based rules with BLOCK and ALLOW modes, and Bedtime Mode drives Do Not Disturb automatically through ACCESS_NOTIFICATION_POLICY. Grace Period and Incentive Lock, which progressively unlocks shields as you complete goals through five tiers, have no direct equivalent in the stock app.

Against a tool like StayFree, the split is between measurement and intervention. StayFree's emphasis is tracking and reporting across apps and websites. Zenith does track websites and applies shields to domains across 12+ browsers according to the README, but the centre of gravity is the blocking layer: Delay App, Mindful Gateway, Early Kick, Session HUD. If you want better data about your habits, Zenith is more machinery than you need. If you want the machine to stand in your way, that is the whole point.

Licence, maintenance and upgrade cost

Zenith is GPL-3.0. That matters if you intend to fork it, ship a modified build, or bundle it into something else. The GPL requires derivative works distributed to others to carry the same licence and to make source available. Running it on your own phone is unaffected. If you are evaluating Zenith as a base for a commercial product, the licence is the first constraint to read, and this article is not legal advice.

The repository is not archived, and the last push was on 2026-07-16, which coincides with the v1.5.8 release. Releases before that came on 2026-06-30 (v1.5.7) and 2026-06-23 (v1.5.6), so the visible pattern in the release list is frequent patch releases through June and July, then a gap. Nothing in the repository layout suggests a formal deprecation, and the README does not document an end-of-life plan.

Upgrade cost depends on how you installed it. An APK from IzzyOnDroid or OpenAPK upgrades through that channel. A source build means pulling master and rebuilding in Android Studio, which the README pins to Ladybug (2024.2.1) or newer with SDK 33+. The README does not document a migration path for settings between versions, so the Backup & Restore feature, which uses READ_EXTERNAL_STORAGE for manual exports, is the practical safeguard before any upgrade. Take an export before you replace the APK.

Editorial conclusion

Adopt Zenith if you are comfortable granting Usage Stats, overlay and foreground service permissions on a personal Android device, and if you want shields, delay timers and bedtime schedules rather than a passive screen-time report. Do not adopt it if you need an app-store-managed update channel, if your device blocks overlay grants through settings, or if you cannot accept that the README documents no rollback path for its blocking behaviour. Before installing, verify that your Android version is SDK 33 or newer, and check the releases page for the current APK or the source tree for the Android Studio build.

Frequently asked questions

What is Zenith and what does it do?

Zenith is a digital wellbeing assistant for Android, built with Material Design 3 Expressive. It uses proactive interventions and real-time monitoring to interrupt scrolling habits, through features such as Shield Mode, Delay App, Mindful Gateway and Bedtime Mode.

How do I install Zenith on Android?

The README points to IzzyOnDroid and OpenAPK for distribution, and to the GitHub releases page for APKs. To build from source, clone the repository, open it in Android Studio Ladybug (2024.2.1) or newer, ensure Android SDK 33+ is installed, and run on a physical device.

Which permissions does Zenith need to work?

Nine are required: Usage Stats, System Overlay, App List, Notifications, Do Not Disturb, Foreground Service, Full Screen Intent, Wake Lock and Boot Completed. Accessibility, notification intercept, battery optimization, precise timing, storage access, internet and calendar access are listed as optional.

How do I grant the overlay permission on an Android Go device?

The README states that some Android Go devices do not allow granting SYSTEM_ALERT_WINDOW through settings, and gives the ADB command adb shell pm grant com.etrisad.zenith android.permission.SYSTEM_ALERT_WINDOW as the alternative.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/1372slash-zenith.svg)](https://hysenlabs.com/projects/1372slash-zenith)