# @engramx/owner

Create an **EngramX engram** that _you_ own — the standalone owner-side creation CLI.

This package is deliberately **separate from `@engramx/client`** (the operator SDK). Creating an engram
makes the caller the **owner** (root); operating one is append-only. Keeping them in different packages
means an operator host never gains owner powers, and vice-versa.

- **Create** (owner) → this package.
- **Operate** (append-only) → `@engramx/client` + the MCP server.

## Reserve, then activate

Creation is two-stage, on purpose:

- **Reserve** (the default) — a **free** registry record (~$0). Nothing runs yet; idempotent (one per
  principal).
- **Activate** (`--activate`) — spawns the live canister (the platform funds the ~1.15T-cycle spawn).

Reserving costs nothing, so a "create-and-walk-away" never wastes cycles — the spend happens only when
you activate. Interactively, a bare `npx @engramx/owner` reserves and then asks whether to spin it up
now; headless (`--yes`/non-TTY) stays reserve-only unless you pass `--activate`.

## Quick start

```bash
# Reserve (free). Reuse an existing icp-cli identity so you keep custody; EngramX holds nothing:
npx @engramx/owner --icp-identity <name> --registry <registry-canister-id> --yes

# Or generate a local owner key at ~/.engramx/owner.key (BACK IT UP — loss = total loss):
npx @engramx/owner --registry <registry-canister-id> --yes

# Activate when you're ready to use it (spawns the canister) — same flags plus --activate:
npx @engramx/owner --activate --registry <registry-canister-id> --yes

# Local dev replica: add --local
npx @engramx/owner --registry <id> --local --activate
```

Run `npx @engramx/owner --help` for all options.

## Ownership & custody

The registry makes the **caller** the owner — there is no owner parameter and no reassignment, so the
signing identity _is_ the owner, by construction. Your options:

| Mode | Who owns | Recovery |
| --- | --- | --- |
| `--icp-identity <name>` | your icp-cli identity | whatever that identity has (e.g. its 24-word seed) — single key |
| _default_ (local key) | a fresh Ed25519 key at `~/.engramx/owner.key` | **none** — back up the seed, or loss is permanent |
| web wizard (wallet) | your OISY / Internet Identity | real wallet recovery — the recommended path for humans |

## What this does **not** do

- It does not read or write memory — that's the operator flow (`@engramx/client`).
- No hosted/managed creation (EngramX never signs on your behalf).
- Reserving is free and activation is free to you (the platform funds the spawn); paying to create is
  not a thing. Ongoing cycles can optionally be topped up with ckUSDC via the cashier.

## Use as an agent skill

`SKILL.md` in this package is a cross-agent capability (Agent Skills format) that lets a coding/agent
host (Claude Code, Codex, OpenClaw, …) create an engram on the user's behalf by shelling to this CLI.

## Honesty

The record is tamper-**evident**, not immutable (the owner can overwrite; every change is a signed
entry). A single owner key is a total-loss risk. Nothing is on a public fleet yet.
