purposeos

Privacy and sandbox

PurposeOS makes a few strong promises. Each one is a property of the design, and each one comes with its limits written down.

What stays on the device

The activity log

The executor records every command: time, id, action, outcome and which runtime handled it. It never records the input or output, and it never sees keystrokes. A planned mood and activity feature reads this log on your device. Nothing is sent anywhere.

purpose-activity keygen        # once. Back up activity.key
purpose-activity list
purpose-activity cat 2026-10-11

How apps are confined

Every app and every service starts through purpose-launch. If Landlock is unavailable it refuses to start the program. There is no silent fallback to running unsandboxed.

PathAccess
/usr /lib /binread, execute
apps/<id>read only (bin/ executes)
apps/<id>/data, config, stateread, write
folders in permissions.filesread (ro) or read, write (rw)
its own executor socketconnect
everything else, including $HOMEdenied

What it does not stop yet

Isolation between apps' sockets needs Landlock ABI 9 (Linux 7.0 or newer). On older kernels a hostile app could connect to another app's sockets, so per-app identity is not hostile-proof there. purpose-launch --require-socket-isolation refuses to start instead of warning.