Pleochroma GitHub
Policy

Privacy Policy for Pleochroma

Effective date: 19 October 2026

This policy covers two programs published by Niklas Gussek (suitable-name on GitHub): the Pleochroma desktop application ("the desktop app") and the Pleochroma Android app, package com.indicatrixsuite.mobile ("the Android app"). Together they are "the apps". Both are gemstone faceting design and rendering programs. Pleochroma's own source code is open source under the MIT License and is published at https://github.com/suitable-name/pleochroma. The apps also include third-party components under their own licenses, for example the Slint user interface toolkit under the Slint Royalty-free license.

Summary

The apps do not collect, sell or share your personal data. They have no user accounts, no advertising, no analytics and no telemetry. Your designs, your design library and your settings stay on your own computer or phone. A design leaves it only when you save, share or print it somewhere you choose, render it on a rendering server you set up, or move your data to a new device. The desktop app connects to the internet only for the two purposes described below, and only after you allow it or set it up yourself. The Android app connects only to a remote rendering server whose address you enter yourself.

Desktop app: data stored on your computer

The desktop app saves the following in your own user folders on your computer:

This data is never sent to us. You can delete it at any time by deleting those files or by uninstalling the desktop app.

Desktop app: network connections

1. Checking for a new version (optional). The desktop app asks you whether it may check for updates. If you allow it, it sends at most one request a day to GitHub's public API (api.github.com) to read the version number of the latest Pleochroma release (and one more whenever you press "Check Now" in Preferences). The request contains no personal data. It carries the app's name and version (for example pleochroma-cut/0.7.2), as GitHub requires. Like any internet request, it reveals your IP address to GitHub, which processes it under the GitHub Privacy Statement (https://docs.github.com/site-policy/privacy-policies/github-general-privacy-statement). Nothing is downloaded or installed automatically. You can turn the check off in Preferences at any time.

2. Remote rendering and remote libraries (optional, set up by you). If you connect the desktop app to a render coordinator or worker, the app sends that machine what it needs for the job: the design geometry, material, lighting and camera settings. It may also read or copy design library entries from that machine. You choose and operate these machines yourself (for example your own computers or servers). The connections use mutually authenticated, encrypted TLS. No data goes to us or to any third party through this feature.

If you open a link in the desktop app (the user manual, the release page or the project website), it opens in your web browser, and that website's own privacy policy applies.

Android app

The Android app has no user accounts, advertising, analytics, telemetry, crash reporting or update check. It contains no Google Play services, no Firebase and no advertising, analytics or crash-reporting library.

Data stored on your phone

The Android app keeps its data in its private app storage on the device. On its own it writes nothing to shared storage, such as your Downloads or Pictures folders; a file goes there only when you pick that location in the system save dialog. It stores:

The app writes diagnostic messages, which can include file paths and the names of files you open, to Android's system log on the device, also in release builds. It writes no log file and sends no logs anywhere.

Files you open, save, share or print

The app reads only the files you give it: files or a folder you pick in the system file picker, and files you open or share with it from another app. It reads each file once, keeps no lasting access to your files or folders, and stores no file path or link. From a picked folder it looks at the names and types of the files in it and in its subfolders, and reads only the design files (.psdd, .asc, .gem and .gcs).

Without the network, data leaves the app only when you act: when you save a file through the system save dialog (to any location you choose, which may be a cloud storage service), share a file with an app you pick, print a cutting sheet through the print service you choose, or copy the tilt curve to the clipboard. The privacy terms of the place or app you chose apply to those copies.

Printing renders the cutting sheet in Android's system WebView. The app's manifest opts out of WebView metrics, so the WebView does not send Google usage or crash metrics for this app, even if you allowed your phone to share usage and diagnostics data.

Network connections

The Android app makes network connections only for remote rendering, which is optional. It has no built-in server address: it connects to nothing until you type an address and then start a pairing or a connection test, choose Remote as the render backend, send a server job, or use the Server Jobs section of the Remote page. Rendering on the device, the default, uses no network. You choose the server: your own computer or a server that you or your organization run. Nothing you send through this feature goes to us or to any third party. Every connection the app makes to the server is encrypted with TLS 1.3. If you enter the server by name rather than by IP address, the phone looks the name up through your network's DNS service, and the TLS handshake names the server, so your network or DNS provider can see which server you connect to, but not what is sent.

1. Pairing. You type the server's pairing address and a one-time token issued on that server. The app first checks the server's identity against a fingerprint inside the token, and only then sends the token's secret. The server answers with the certificates and the private key that the phone uses to prove its identity on later connections. The app stores them encrypted, as described above.

2. Connection test. "Test Authenticated Connection" connects to the rendering address over mutual TLS. As on every connection after pairing, the phone presents the certificate it received at pairing, which identifies this phone to that server; it can carry the name the server's operator gave the phone when issuing the token. The app then sends only a greeting: the protocol version, two short codes that identify the app's build, that it connects as a viewer, that it supports color zoning, and the data formats it accepts. It sends no design, no user name and no hardware or advertising identifier. The app then shows the server's certificate fingerprint and what the server can do.

3. Remote rendering and picture export. When you choose Remote as the render backend, the app sends the server a description of the scene built from your design: the facet geometry, the material, the camera, the lighting, and the picture size and render settings. It does not send the design file. The scene carries the material's name (for a custom material, the name stored in the design) but no design title, notes, author or source link. If the scene uses your HDR lighting map and the server asks for it, the app sends the map as the app uses it, not the original file, at most once per connection. The server sends back the picture.

The Remote choice is saved and stays in effect, also after the app restarts, until you pick another backend or use Forget Server, which switches it back to Automatic. While it is selected, the app connects and sends the scene again each time the live render starts or restarts: when you open the Render view; when you change the design, camera, lighting, material or quality; when you return to the app; and up to three times after a lost connection. Picture exports then also render on the server.

A Pleochroma rendering server keeps the HDR lighting maps it receives in its own cache, by default up to 2 GiB, and removes the least recently used map when it needs the space. The map has no expiry date and is not tied to a job: clearing the map on the phone or deleting a job does not remove it from the server. A coordinator passes the scene, and the map if the scene uses one, on to the render machines joined to it, and each of them keeps its own copy of the map in its cache.

4. Server jobs. "Send To Server" in the export sheet stores a render job on the server. The job carries the same scene description, the sample count, the color space, the design's title as the job's label (at most 120 characters) and a one-time code that stops a retried upload from creating the job twice. If the scene uses your HDR lighting map, the server asks for it and keeps it in its cache, as described above. The server renders the picture and keeps the job and the picture until you delete the job or the server's retention period ends; by default a Pleochroma rendering server keeps a finished job for 7 days. It shows a job only to the phone certificate that sent it. The Server Jobs section of the Remote page (More > Remote) lists, downloads, cancels and deletes your jobs. The phone keeps no list of jobs and no copy of the pictures it downloads; a picture is saved only where you choose in the save dialog.

After pairing, every connection uses mutual TLS 1.3. The phone presents its certificate, and it accepts the server only if the server's certificate was issued under the CA certificate the phone received at pairing. The server recognizes the phone by that certificate.

On a metered network the app refuses, unless you turn on "Allow Metered Networks" (off by default): every remote render, export or server job whose scene uses your HDR lighting map, every FullData render or export, and every job picture download. Without an HDR lighting map, a DisplayOnly render, a finished picture from a coordinator (up to about 4 MB) and a server job go over any network. When Android reports no network, or cannot tell whether the network is metered, the app treats it as unmetered.

Permissions

Both are normal permissions that Android grants at install time. The AndroidX support library the app uses also declares an internal permission that only Pleochroma itself can hold; it gives no access to your data. The app asks for no access to your storage, camera, microphone, location, contacts or accounts. Files go through the system file picker and save dialog, sharing through the Android share sheet, and printing through the Android print service.

Backup

The app turns off Android's cloud backup: its manifest sets allowBackup to false, so Android does not back up its data to your Google account. On Android 12 and later this setting does not stop a direct device-to-device transfer when you set up a new phone (by cable or over Wi-Fi). Such a transfer can copy the app's stored data to the new phone: the settings (including the rendering server's name and address and the recent items), the design library, the autosaved design, cutting progress and the HDR lighting map. The pairing credentials are kept in a folder that Android leaves out of backups, and even if their encrypted file were copied, the Android Keystore key that decrypts them cannot leave the phone, so a new phone must be paired again.

Deleting your data

Inside the app you can:

Some data has no delete button in the app, or stays in cases these buttons do not reach:

Everything the app stores on the phone is in its private app storage. To delete all of it, uninstall the app or clear the app's storage in Android's settings. Files you saved, shared or printed are outside the app, and uninstalling it does not remove them. Jobs on a server stay there until you delete them or the server removes them (by default 7 days after a job finishes). HDR lighting maps stay in a server's cache until the server needs the space or its operator clears the cache.

Data we collect

None. We do not receive, store or process any personal data from your use of the apps. Data you send to a rendering server goes to that server, which you or your organization run, not to us.

Children

The apps do not knowingly collect any data from anyone, including children under 13.

Changes to this policy

If this policy changes, the new version will be published at the same address with a new effective date.

Contact

Questions about this policy: please open an issue at https://github.com/suitable-name/pleochroma/issues.