Your users' data · NoMac

Your users' data

NoMac never stores your users' secrets: a token travels with the call that uses it. Below is what a phone keeps for a user, and the one call that deletes it.

A private repository

TypeScriptPythonREST

const { root } = await phone.fetchGit({ url: "https://github.com/acme/app", token: githubToken });

The token goes with that one fetch, to the git host only. It is kept nowhere: not in NoMac's database, logs, replay or workspace, and not for the phone's next fetch. Your user's token stays with you, and a short-lived one, such as GitHub's one-hour tokens, works.

Values the app needs, such as a staging API key, go with the run as envon app_run. The phone keeps them for relaunches until it stops, and they are erased with it.

For your own repositories, the account can keep a token as a secret and name it with secretinstead. A phone's token never reads the account's secrets.

What NoMac keeps for a user

WorkspaceTheir projects and build cache, on an encrypted volume, until 90 days unused.

Saved statesUntil you delete them, or 90 days after the account's last phone, each under its own key.

Replays and filesReplays for 7 days. Uploads, and copies of files the phone's answers named, for a few hours.

Phone recordsTimes and cost, under the label, for billing.

NeverTheir tokens, or the values their apps were given.

Delete a user

TypeScriptPythonREST

await nomac.labels.delete("user-42");
// { label: "user-42", deleted: { states: 2, workspaces: 1, replays: 3, files: 0 } }

When your user deletes their account, one call with the account's key deletes their saved states, their phones' replays and file copies, and their workspace. The workspace's key is destroyed at once, so its encrypted volume can never be opened again; the host deletes the volume itself within 90 days. Repeating the call finds nothing left.