# Security model

Part of [Build a custom machine](https://www.ownbox.io/sdk/guide).

A custom machine is code the owner did not write, so the Ownbox assumes nothing of it.

- **Its own unit.** It runs as a user of its own (`aiosm-<slug>`), with no privileges and no way to gain them.
- **No network.** The unit has no network of its own: its one connection is a local socket to its door. Every fetch
  is made by the Ownbox, only to the hosts the owner approved, and only over https.
- **No file of the Ownbox's.** The Ownbox's files, its settings and its database are not in the unit. The machine sees
  its own code and packages read-only, and writes only its own data folder.
- **Keys stay with the Ownbox.** The Ownbox attaches a key to a request for that key's own host, and blanks it from
  anything handed back. The machine never holds it.
- **One door.** Every call is checked against the grant the owner approved, metered where it costs, and recorded in
  the Ownbox's own log.
- **Limits it cannot raise.** Memory, CPU, processes, file size and crashes are capped by the unit itself
  ([Limits](https://www.ownbox.io/sdk/guide/limits)), so one machine cannot starve the Ownbox.
- **A person decides.** Nothing installs until the owner taps Approve, after reading every permission. Approve holds
  only for the exact code the card showed: its files are sealed and hashed, and checked again as they install. On a
  partner's Ownbox, Ownbox reviews that exact code too.
- **Stranger text is data.** What a person wrote, or a page said, reaches the machine and the owner's AI as quoted
  data, never as an instruction.
- **The owner keeps control.** Rollback returns to the version before, Remove takes its code away, and its data stays
  on the Ownbox.
