Privacy
Phronesis is an encrypted viewer for the conversations of the Hermes agent running on your own PC. This document describes the server (the "relay") that carries and stores them, written from its code rather than from a template.
What the server stores
The relay's database has these tables and nothing else:
- accounts
- your email, the name you chose, a salted hash of your authentication key and the derivation salts. Never the password.
- vaults
- one vault per history: its identifier, when it was created and when your PC was last seen, with the version it was running.
- devices
- each authorised device: its name, whether it is your PC or a viewer, and a hash of its token. The token itself only exists on the device.
- login_attempts
- the email and time of each sign-in attempt, to slow brute force down. They expire.
- pairings
- a pairing under way: the vault's key wrapped with your code, which expires in minutes.
- sessions
- a conversation: its opaque identifier, its title and folder encrypted, how many messages it has and when it was touched.
- messages
- each message as ciphertext, with its order, its role (you or the agent) and its date. The content cannot be opened here.
- outbox
- what you send to the PC, encrypted, and whether it was delivered. Cleared when it settles.
- blobs
- a file you uploaded for your PC, encrypted, with its size. Deleted within 24 hours.
- access_requests
- a new device's request to join: its name, its public keys and a keyed hash of your email. The sealed envelope is deleted once claimed.
- link_requests
- a PC's request to sign in from the browser: its name, its public key and an envelope the relay cannot open.
- relay_secrets
- the server's own secrets, tied to no account.
What never reaches the server
- The plaintext of your conversations: encryption and decryption happen on your devices.
- The vault key that opens that text. It lives on your PC (~/.hermes/remote/vault.json, mode 0600) and in the memory of the browser or the app while they are open.
- Your password. Two keys are derived from it on your device: an authentication key, which is sent and stored hashed with a salt, and a wrapping key, which never leaves.
- The pairing code: printed once on your PC and never transmitted.
- The files, folders and commands on your machine: the agent reads them there, and what comes back is already encrypted.
What the server can see anyway
"Encrypted" is not "invisible". Honestly, the relay observes this metadata, and it is documented in the project's protocol:
- how many conversations and messages exist, and the size of each ciphertext;
- when they are created and synced: timing and volume;
- which opaque conversation a message belongs to, and its position in it;
- whether a message is yours or the agent's (the role is in the clear so a list can be drawn without decrypting anything);
- your devices' names and when each was last seen;
- that a turn is running and since when, and how many viewers are connected.
Third parties, ads and measurement
- There are no ads.
- There is no third-party analytics: no Google Analytics, no pixels, no measurement SDKs.
- There is no telemetry: the app sends usage reports to nobody.
- The public pages load nothing from another domain: no fonts, no scripts, no images.
- No data is sold or shared. The relay forwards your data to no other service; the AI provider you use is yours to choose and pay for on your PC, and the agent talks to it from there.
Server logs
The web server logs requests (time, method, path, status) so it can be operated. Tokens never travel in a URL, so they do not appear in those logs, and request bodies are not logged.
How long
Your conversations are kept while you have the account; you delete them from the app or from your PC, and they then disappear from the server. Uploaded files expire within 24 hours, pairings and access requests within minutes, and sign-in attempts clear themselves.
Your rights and your data
The operator is Lino Alfonso. Write to soporte@arclightcraft.com from your account's address to ask for a copy of what is there, a correction, or complete deletion. Deletion is explained step by step on the delete-account page.
Changes
If this policy changes, it changes with the code: the version you are reading describes the server that is running.