# Overview

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

A custom machine is a folder: a `machine.yaml` that says what it is and what it may touch, an `__init__.py` that
uses `from core import sdk`, and a test. The code lives with the developer, in a folder on their own computer, or in
their own git repository if they keep one. The Ownbox needs neither: it keeps the copy it installed.

```text
your computer      a folder: machine.yaml, __init__.py, a test
     │  your AI sends the files to the Ownbox
     ▼
the Ownbox         checks them, then runs them twice, dry
     │  the owner reads the review card and taps Approve
     │  (on a partner's Ownbox, Ownbox approves that code too)
     ▼
installed          runs in its own locked unit
     │  every call goes through one door: from core import sdk
     ▼
the Ownbox         answers each call under what the owner allowed
```

**What a machine can do:** run jobs on a schedule; keep its own settings and files; ask the Ownbox's AI; reach the
web hosts the owner allowed, with keys the Ownbox attaches; read and add to the business's people and inbox; send a
direct message or an email under a daily limit; tell a team member something; ask the owner to approve an action;
draw its own pages and cards; add its part to the Morning Review; and answer questions from the owner's AI.

**What a machine can never do:** read a key, open a network connection of its own, read a file of the Ownbox's, import
the Ownbox's code, or use any permission the owner did not approve.
