# Persona App Definitions

Persona apps are composed from approved templates, components, data bindings, actions, and permissions.

The agent should inspect and update account-linked persona app state through approved Oomi API actions. It should not generate arbitrary client code for any client target.

Client renderers are target-specific:

- iOS renders approved definitions with native SwiftUI components.
- Android should render the same definitions with native components.
- Web should render the same definitions with React components.
- Spatial clients can render the same definitions directly or through a target-specific projection.

The current files are the first shared contract for the vertical slice:

- `schema/persona-app.v1.schema.json`
- `registry/v1.json`

OpenClaw agents should use the packaged CLI to inspect and update account-linked persona apps:

```bash
oomi fitness show --json
oomi persona-apps list --json
oomi persona-apps show fitness-today --json
oomi persona-apps apply-action fitness-today --action fitness.complete_workout --payload-json '{"goalId":"easy-run","minutes":20}' --json
```

For Fitness, prefer `oomi fitness show --json` before answering because it returns the mini-app state and approved health context together.

When answering data-backed health or fitness questions, agents should read approved backend context first:

```bash
oomi context health --json
```

If the user asks for current/latest health context and the context is stale or needs sync, run:

```bash
oomi context health sync --wait --json
```

Answer only after fresh context is uploaded. If the command times out, tell the user the phone sync is still pending.

If a persona app is missing, ask the user to add it from the Oomi client first so platform-specific permissions and hydration can run.
