Privacy Policy — GlyphWorks for Nothing

Applies to GlyphWorks for Nothing (space.linuxct.glyphworks), version 3.0.0 and later, as distributed on Google Play. Last updated: 2026-08-08.

This document describes the Google Play build only. The build published on GitHub contains two additional features — an AI design assistant and an update checker — that do use the network; if you installed the app from anywhere other than Google Play, the section Other builds applies to you instead.

No data collected, no data shared

This app collects no data and shares no data. That is the same answer given on the Play Data Safety form, and it is meant literally: nothing about you or your device leaves your phone, because the app has no means to send it.

There are no accounts, no analytics, no crash reporting, no advertising, and no third-party SDK that contacts a server.

Why that is checkable rather than a promise

The Play build does not request android.permission.INTERNET. Android grants network access only to packages that hold it, so every socket this process could try to open is refused by the platform. A privacy claim of this shape can be verified from the outside, on the exact file you installed:

aapt2 dump permissions base.apk

android.permission.INTERNET does not appear in the output. The app is also open source (AGPL-3.0), so the code behind every statement below can be read.

What the app touches, and where it stays

Microphone

The Music Visualizer and the music-reactive ambient layer read the output mix through Android’s android.media.audiofx.Visualizer, at a capture size of 256 samples, and take an FFT of it. What comes back is a set of frequency magnitudes, which become the heights of the bars on the Glyph Matrix.

No audio is recorded. Nothing is written to a file, kept in memory beyond the current frame, or transmitted — the app could not transmit it if it wanted to. The capture engine releases itself after five seconds without a poll, so nothing is being captured once a toy that needs audio stops being drawn. Deny the permission and the visualizer simply shows its idle pattern.

Why this asks for the microphone at all, and why your phone may say it is in use. Two permissions are involved and neither is a choice the app makes. Android requires RECORD_AUDIO for any use of Visualizer, whatever it is attached to, and requires MODIFY_AUDIO_SETTINGS to attach to the output mix specifically — the app changes no audio setting with it. Android also accounts for this under the microphone app-op, so the privacy indicator can light up and background restrictions apply while the visualizer runs.

What is actually being read is the mix your phone is already playing, not the room. The app contains no AudioRecord and no MediaRecorder — the only audio APIs in it are android.media.audiofx.Visualizer and android.media.RingtoneManager for the Timer chime — so recording the microphone is not something it declines to do, it is something it has no code to do. That is checkable in the source linked at the bottom of this page.

Location

Two toys ask about your position: the Compass, to correct magnetic north to true north, and the Solar Path, to place the sun on its daily arc where you actually are.

Only ACCESS_COARSE_LOCATION is requested. The app never requests a fix and never starts location updates: it reads LocationManager.getLastKnownLocation — a position some other app already asked for — and caches the result for ten minutes so that a toy redrawn many times a second does not re-query it. The coordinates are handed to android.hardware.GeomagneticField for the declination angle, and to the on-device solar maths for sunrise and sunset. They are never stored to disk and never leave the device. Deny the permission and the Compass points at magnetic north while the Solar Path falls back to a nominal 06:00/18:00 day.

The Essential Key, and the accessibility service

The Glyph Matrix toys are driven by the Essential Key, and an accessibility service is the only mechanism by which an ordinary app can observe a hardware key — including while the phone is locked or on the Always-On Display. The service exists for that and nothing else.

It is declared android:canRetrieveWindowContent="false", which means the platform does not give it your screen contents: it cannot read what is on screen, in this app or any other. It receives key events, and one single event type — typeWindowStateChanged — scoped to two packages (com.nothing.ntessentialspace, com.nothing.ntessentialrecorder), used only to close Essential Space when the system reacted to a press the app had already consumed. It is declared android:isAccessibilityTool="false", because it is not an assistive tool and does not pretend to be one.

Key presses are counted in memory and turned into a toy action. They are not logged, not persisted, and not transmitted.

Designs you draw

Designs made in the Create tab are glyph.design JSON files under the app’s own device-protected storage. They hold your artwork, a name, and — if you set a creator name in Settings — that name. All of it is text you typed.

The app never uploads a design. Sharing is an act you perform: the ⋮ menu hands one file to Android’s share sheet through a FileProvider that is not exported, and whichever app you choose receives it. Where it goes after that is between you and that app. Copies staged for sharing live in the cache and are cleaned up after a day.

Settings

Preferences (which toys are enabled, their order, brightness, creator name) are stored in device-protected SharedPreferences on this phone. Uninstalling removes them.

Notifications and alarms

The Timer schedules an exact alarm as a backstop so the chime lands even if the app’s process has been killed, and posts a notification when it fires. Nothing about a timer leaves the device.

Permissions in the Play build

PermissionWhy
com.nothing.ketchum.permission.ENABLEDraw on the Glyph Matrix through Nothing’s Glyph SDK.
Accessibility service (BIND_ACCESSIBILITY_SERVICE)Observe Essential Key presses. Cannot read screen content.
RECORD_AUDIOOn-device FFT for the visualizer. Optional.
MODIFY_AUDIO_SETTINGSRequired alongside it: the visualizer attaches to the output mix, and Android gates that on this permission. It changes no audio setting.
ACCESS_COARSE_LOCATIONCompass declination and solar path. Optional.
POST_NOTIFICATIONSThe Timer chime notification. Optional.
SCHEDULE_EXACT_ALARMThe Timer’s backstop alarm. Optional.
VIBRATEHaptic feedback on each recognised key press.
ACCESS_NETWORK_STATEReads the connection type (Wi-Fi / cellular / none) for the connection-status background. It grants no network access.

There is no INTERNET permission, no foreground service, and no background network work of any kind in this build. The authoritative list for the version you installed is whatever aapt2 dump permissions prints for it.

Children

The app has no accounts, no user-to-user features, no ads and no data collection, so there is nothing here that is collected from anyone of any age.

Other builds

The GitHub release of this app is a different package configuration: it holds INTERNET and adds an optional AI design assistant (which sends the prompts you type, and the design being edited, to OpenAI under your own account, over HTTPS) and an update checker (an unauthenticated GET to the GitHub Releases API, once a day). Neither exists in the Google Play build — the code is excluded from it, not merely switched off. The privacy policy for those features ships with that build.

Changes

Material changes to this policy will be published here, with the date at the top updated. The history of this file is public in the repository below.

Contact and source

GlyphWorks is an independent project. It is not affiliated with, endorsed by, or connected to Nothing Technology Limited.

Back to Home