Skip to content

CLI reference

Generated from the command definitions. Every command takes --root PATH (default: the git top-level of the working directory).

activities

GDPR processing activities: purpose, legal basis, and what they touch.

activities add

Add touchpoints (unit:id) to an existing activity.

Option Type Meaning
SLUG argument
REFS argument
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

activities create

Create an activity; unknown fields become !todo.

Option Type Meaning
SLUG argument
--name text
--purpose text
--legal-basis consent | contract | legal_obligation | vital_interests | public_task | legitimate_interests | no_pii
--touchpoint text unit:id, repeatable. default Sentinel.UNSET
--subject text Data subject, repeatable. default Sentinel.UNSET
--recipient text Party id, repeatable. default Sentinel.UNSET
--retention text
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

activities explain

Show an activity's manifest, its touchpoint graph and the derivation.

Option Type Meaning
SLUG argument
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

activities list

List the activities with their derived data, categories and DPIA verdict.

Option Type Meaning
--format table | json default table
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

activities set

Change facts about an activity (the answers to its !todo questions).

Option Type Meaning
SLUG argument
--name text
--purpose text
--legal-basis consent | contract | legal_obligation | vital_interests | public_task | legitimate_interests | no_pii
--basis-note text
--consent-record text Where consent is recorded.
--consent-granularity text
--interest text The balancing test (Art. 6(1)(f)).
--dpia-reference text
--subject text Data subject, repeatable. default Sentinel.UNSET
--recipient text Party id, repeatable; replaces. default Sentinel.UNSET
--retention text
--controller text Party id.
--processor text Party id.
--description text
--todo consent_granularity | consent_record | controller | data_subjects | dpia_reference | interest | legal_basis | name | processor | purpose | retention Reopen a fact as !todo; repeatable. default Sentinel.UNSET
--clear basis_note | consent_granularity | consent_record | controller | description | dpia_reference | interest | processor | retention Remove an optional fact; repeatable. default Sentinel.UNSET
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

app

The product itself: name, description, controller, processor, scale.

app set

Change facts about the product (the answers to its !todo questions).

Option Type Meaning
--name text
--description text
--controller text Party id.
--processor text Party id.
--large-scale, --no-large-scale flag Art. 35(3)(b): personal data processed at large scale.
--todo controller | description | large_scale | name | processor Reopen a fact as !todo; repeatable. default Sentinel.UNSET
--clear processor | large_scale Remove an optional fact; repeatable. default Sentinel.UNSET
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

app show

Everything declared about the product.

Option Type Meaning
--format table | json default table
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

challenge

Re-open the reviews a change undermines (the challenger agent alone).

The agent reads git diff BASE..HEAD, asks what reviewers asserted about the changed files, and puts the doubtful items back to pending with grounds. It never reclassifies. Exit 1 when it challenged something, 0 otherwise.

Option Type Meaning
--merge-into text Base ref: the challenger reads BASE..HEAD. default Sentinel.UNSET
--commit flag Commit the challenges it records.
--model text provider/model. Default: openrouter/openrouter/auto with OPENROUTER_API_KEY; with SCALEWAY_SECRET_KEY only, scaleway-dedicated/ when SCALEWAY_INFERENCE_ENDPOINT is set, else scaleway/gpt-oss-120b.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.
--python text Interpreter to use for introspection.

check

The compliance to-do list: what has to happen next, grouped by kind.

Errors (fix the files) exit 3. Missing (established non-compliance, never ignorable), Todo (questions for a human; --allow-todo waves them) and Review (run the agents) exit 1. 4 is a crash of model-wtf itself.

Option Type Meaning
--strict flag Treat images without a compliance block as errors instead of warnings.
--format text | json | github Output style: human-readable, JSON, or GitHub Actions annotations. default text
--allow-todo flag Open !todo questions are listed but do not fail the check.
--todo flag Print only the open questions, one per line, as a questionnaire.
--verbose, -v flag Also print the Info section.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.
--python text Interpreter to use for introspection.

data

Inventory and classify the application's data.

data auto-review

Have an OpenCode agent review every pending data item.

Runs OpenCode in an isolated configuration (throwaway HOME, generated config, read-only tools, our MCP server as the only write path), in rounds, until nothing is pending. The provider is the prefix of --model: OpenRouter (OPENROUTER_API_KEY), Scaleway Generative APIs (SCALEWAY_SECRET_KEY) or a Scaleway dedicated deployment (SCALEWAY_SECRET_KEY + SCALEWAY_INFERENCE_ENDPOINT). Exit 0 when complete, 1 when items remain, 4 when OpenCode or the provider's key is missing.

Option Type Meaning
--unit text Restrict to one unit.
--base text Git ref: also re-check items whose model changed.
--max-rounds integer default 20
--batch integer Models per round. default 8
--model text provider/model. Default: openrouter/openrouter/auto with OPENROUTER_API_KEY; with SCALEWAY_SECRET_KEY only, scaleway-dedicated/ when SCALEWAY_INFERENCE_ENDPOINT is set, else scaleway/gpt-oss-120b.
--python text Interpreter to use for introspection.
--max-tokens integer Stop starting new rounds once this many tokens were used.
--workers integer range Parallel OpenCode sessions per round, each reviewing --batch items. default 16
--dry-run flag Print the generated OpenCode config and stop.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

data contents

Declare what a JSON-like column holds, one ENTRY per kind of information.

ITEM_ID is <unit>:<app.Model.field> of a JSONField/ArrayField/HStoreField. Each ENTRY is name=pii,sensitivity,category (name=yes,personal,contact); the names are identifiers, not JSON paths. --unknown none with no entry declares an empty, harmless blob.

Option Type Meaning
ITEM_ID argument
ENTRIES argument
--unknown none | possible | likely Is the list exhaustive? none = every write site was read. default possible
--reason text Where the writes are (else !todo).
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

data list

List every data item of every unit with its classification.

Option Type Meaning
--unit text Restrict to one unit.
--pending flag Only items still to review.
--assumed flag Only library defaults resting on an assumption (implies --pending).
--format table | json default table
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

data override

Record an override of a field's classification.

ITEM_ID is <unit>:<app.Model.field> (the unit prefix may be omitted when the repo has one unit). An existing row is never rewritten.

Option Type Meaning
ITEM_ID argument
--pii, --no-pii flag Personal data or not.
--sensitivity text Sensitivity level id.
--category text Category id.
--store text Slug of the store holding the value.
--reason text Why the rule was wrong (else !todo).
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

data reviewed

Mark data items as reviewed by a human.

ITEM_IDS are <unit>:<app.Model.field> (unit prefix optional with one unit). The current classification is what is being confirmed.

Option Type Meaning
ITEM_IDS argument
--note text One line on what was checked. default `
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

data rights

Record what is true of one right on one personal item.

ITEM_ID is <unit>:<app.Model.field> (@json/@files rows and a <app.Model>.* glob for every personal field of a model are allowed). --exempt GROUND explains why the right is not served (an order kept for accounting: erase --exempt legal_obligation --note "..."); --missing declares the gap; --clear removes the entry. Other columns of the row are untouched.

Option Type Meaning
ITEM_ID argument
RIGHT argument
--exempt legal_obligation | contract_active | not_provided_by_subject | derived | staff_only | manual | public_interest | research | legal_claims Why the right does not apply to this item.
--missing flag State the right as unmet (a declared gap).
--clear flag Drop the entry for this right.
--note text Which law / process / ticket.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

data rules

Show the built-in data rules in evaluation order.

Option Type Meaning
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

data why

Who needs a data item: the touchpoints handling it, the activities holding it.

PATTERNS are unit:id ids, globs allowed (api:people.Person.*).

Option Type Meaning
PATTERNS argument
--model text unit:app.Model — every field.
--manifests flag Print the activities in full.
--verbose, -v flag List every touchpoint with its location.
--format text | json default text
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

flows

Where the data goes: every flow, its kind, status and payload.

flows list

The flows, one per line; filters narrow by touchpoint, kind or status.

Option Type Meaning
--unit text Restrict to one unit.
--element text Only the flows of this touchpoint.
--kind request | store | transfer | call | defer
--status declared | derived | undeclared
--format table | json default table
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

flows show

One flow: ends, kind, status, items, and the threat cells on it.

FLOW_ID is source->sink as flows list prints it, or a touchpoint id to show all of its flows.

Option Type Meaning
FLOW_ID argument
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

ghate

The pull-request gate: fail only on findings the change introduces.

Runs compliance check on the base (in a temporary worktree) and on the head, compares by finding identity. With an API key, the challenger agent first reads the diff and re-opens the reviews it undermines, which then count as introduced. Exit 0 when nothing is introduced (pre-existing findings are listed, not failed), 1 when something is, 3 on declaration errors in the head, 4 on a tool error.

Option Type Meaning
--merge-into text Base ref the change will be merged into (default: the pull request base under GitHub Actions).
--head text Ref to gate instead of the working tree.
--format auto | text | json | github auto: github under GitHub Actions, text otherwise. default auto
--fail-on-existing flag Also fail on findings that were already there (clean repositories).
--strict flag Treat images without a compliance block as errors instead of warnings.
--challenge, --no-challenge flag Run the challenger agent on the diff before comparing (default: when the --model provider's key is set).
--commit-challenges flag Commit what the challenger re-opened (CI: the developer gets the fallout).
--model text Challenger model. Default: openrouter/openrouter/auto with OPENROUTER_API_KEY; with SCALEWAY_SECRET_KEY only, scaleway-dedicated/ when SCALEWAY_INFERENCE_ENDPOINT is set, else scaleway/gpt-oss-120b.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.
--python text Interpreter to use for introspection.

init

Create compliance.db (app, parties) and wire the units.

Missing values are prompted for on a terminal; the processor defaults to default_processor from ~/.config/model-wtf/config.yml. Never overwrites anything: re-run to add what is missing.

Option Type Meaning
--name text Product name. default Sentinel.UNSET
--controller-name text Legal name of the controller (the client). default Sentinel.UNSET
--controller-country text Controller country, ISO 3166-1 alpha-2. default Sentinel.UNSET
--processor-name text Legal name of the processor (the agency). default Sentinel.UNSET
--processor-country text Processor country, ISO 3166-1 alpha-2. default Sentinel.UNSET
--no-processor flag The controller operates the product itself; declare no processor.
--no-workflow flag Do not write .github/workflows/compliance.yml (the PR gate).
--custom-sensitivity flag Seed the built-in sensitivity scale into the database for editing.
--custom-categories flag Seed the built-in categories into the database for editing.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties

The organisations data is sent to: list, inspect, fix, merge.

parties add

Declare a party; contact facts not given are left !todo.

PARTY_ID defaults to a slug of --name. Refused when it looks like an existing party (say --distinct-from ID when you know it is not) or names a store of the project (mail, error monitoring: those are stores).

Option Type Meaning
PARTY_ID argument
--name text Legal name of the organisation.
--country text ISO 3166-1 alpha-2 (US, FR).
--address text Postal address of the seat.
--email text Email for privacy matters.
--phone text
--website text
--registration text Company registration number.
--safeguard sccs | bcr | dpf | derogation Ch. V safeguard.
--dpf-certified, --not-dpf-certified flag On the EU-US DPF list.
--dpa text Where the data processing agreement lives.
--host text Hostname or setting name it operates; repeatable.
--distinct-from text Existing party id this one resembles but is not; repeatable. default Sentinel.UNSET
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties distinct

Record that PARTY_ID and each of OTHERS are different organisations (Mailgun and Mailjet): the lookalike report stops for those pairs.

Option Type Meaning
PARTY_ID argument
OTHERS argument
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties duplicates

Pairs of declared parties that look like one organisation; with CANDIDATE (and --name/--website), what a party by that id would clash with.

Option Type Meaning
CANDIDATE argument
--name text Name to test with CANDIDATE.
--website text
--all flag Also the pairs already marked distinct.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties list

List the declared parties; lookalike pairs are reported underneath.

Option Type Meaning
--format table | json default table
--unused flag Only parties nothing refers to.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties merge

Fold LOSERS into --into: transfers, recipients, roles and stamps move, the winner's !todo facts take the losers' answers, the losers go.

Option Type Meaning
LOSERS argument
--into text The id that stays. default Sentinel.UNSET
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties remove

Delete a party nothing refers to (else: parties merge it, or --force).

Option Type Meaning
PARTY_ID argument
--force flag Also delete the transfers to it and its recipient entries (it never was a recipient: the project's own endpoint, a placeholder).
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties set

Change facts about a party (the answers to its !todo questions).

Option Type Meaning
PARTY_ID argument
--name text Legal name of the organisation.
--country text ISO 3166-1 alpha-2 (US, FR).
--address text Postal address of the seat.
--email text Email for privacy matters.
--phone text
--website text
--registration text Company registration number.
--safeguard sccs | bcr | dpf | derogation Ch. V safeguard.
--dpf-certified, --not-dpf-certified flag On the EU-US DPF list.
--dpa text Where the data processing agreement lives.
--host text Hostname or setting name it operates; repeatable.
--todo address | country | dpa | dpf_certified | email | name | phone | registration | safeguard | website Reopen a fact as !todo; repeatable. default Sentinel.UNSET
--clear dpa | dpf_certified | phone | registration | safeguard | website Remove an optional fact; repeatable. default Sentinel.UNSET
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties show

Everything declared about one party and everything that refers to it.

Option Type Meaning
PARTY_ID argument
--format text | json default text
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties to-flow

PARTY_ID was the project itself (its own endpoint, a service name): nothing leaves. The transfers to it go — the edge is the calls flow the code shows — and so does the party.

Option Type Meaning
PARTY_ID argument
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

parties to-store

PARTY_ID was infrastructure (mail, Sentry, the project's own service): its transfers become writes to STORE_ID (unit:slug), the party goes.

Option Type Meaning
PARTY_ID argument
STORE_ID argument
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

stores

Where the data lives: databases, caches, buckets, queues.

stores add

Declare a store the settings do not show (<unit>:<slug>).

Refused when a store of the unit looks the same (shared host, alike name or slug) unless --distinct-from names it.

Option Type Meaning
STORE_ID argument
--type database | cache | bucket | filesystem | queue | search | realtime | mail | monitoring | external | browser What kind of store. default Sentinel.UNSET
--name text Human name. default Sentinel.UNSET
--backend text Conceptual backend (redis, s3...).
--provider text Who operates it.
--location text Where it is hosted.
--retention text
--description text
--host text Hostname or setting name the code reaches it by; repeatable. default Sentinel.UNSET
--distinct-from text Store slug this one resembles but is not; repeatable. default Sentinel.UNSET
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

stores distinct

Record that STORE_ID and each of OTHERS (slugs of the same unit) are different stores: the lookalike report stops for those pairs.

Option Type Meaning
STORE_ID argument
OTHERS argument
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

stores explain

Show where a store comes from and which data items reference it.

STORE_ID is <unit>:<slug> (the unit prefix may be omitted when the repo has one unit).

Option Type Meaning
STORE_ID argument
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

stores list

List the stores of every unit with how many data items each holds.

Option Type Meaning
--unit text Restrict to one unit.
--all flag Include ignored stores.
--format table | json default table
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

stores merge

Fold LOSERS (unit:slug) into --into (a slug of the same unit): writes, item placements and stamps move, the losers go.

Option Type Meaning
LOSERS argument
--into text The slug that stays. default Sentinel.UNSET
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

stores remove

Delete a declared store row (else: stores merge it, or --force).

Option Type Meaning
STORE_ID argument
--force flag Also delete the writes to it; items placed in it fall back to the code.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

stores set

Change facts about a store; a row is created for a config store.

Option Type Meaning
STORE_ID argument
--name text
--backend text
--provider text
--location text
--retention text
--description text
--host text Replaces the host list; repeatable. default Sentinel.UNSET
--ignore, --no-ignore flag Hide the store.
--clear backend | description | location | name | provider | retention Remove a fact; repeatable. default Sentinel.UNSET
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

threats

The threat matrix: every touchpoint, store and flow against pytm's catalogue.

threats auto-review

Have agents stamp the open threat cells.

Each reviewer reads the code and calls threat_stamp per open SID: mitigated (with file:line), n/a, accepted, or a missing finding. Same sandbox and exit codes as the other auto-reviews.

Option Type Meaning
--unit text Restrict to one unit.
--by topic | touchpoint One reviewer per security topic across touchpoints, or one per touchpoint across its open threats. default topic
--topic-batch integer Touchpoints per topic reviewer session (--by topic). default 12
--elements text Comma-separated element ids to restrict the review to (an eval subset).
--max-rounds integer default 10
--batch integer Items per worker per round. default 8
--model text provider/model. Default: openrouter/openrouter/auto with OPENROUTER_API_KEY; with SCALEWAY_SECRET_KEY only, scaleway-dedicated/ when SCALEWAY_INFERENCE_ENDPOINT is set, else scaleway/gpt-oss-120b.
--max-tokens integer Stop starting new rounds once this many tokens were used.
--workers integer range Parallel OpenCode sessions per round. default 16
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

threats findings

Every !missing threat stamp, most severe first.

Severity is impact (effect x degree x sensitivity) x likelihood (the most feared actor who can reach the touchpoint); see the README. Findings stamped before weighing existed show as unweighed.

Option Type Meaning
--unit text Restrict to one unit.
--min-severity critical | high | medium | low | info Hide findings below this bucket. default info
--format table | json default table
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

threats matrix

Counts per element kind, per threat and per topic; --open lists the cells.

A cell is never (impossible in the stack), dismissed (a simple rule closed it for that element) or open (an agent has to look).

Option Type Meaning
--unit text Restrict to one unit.
--open flag List the open cells.
--format table | json default table
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

threats stamp

Stamp one open threat cell on a touchpoint, store, party or flow.

Records the stamp on the element (a flow's on its source touchpoint, keyed SID@sink). Pinned to the element's fingerprint: when the code moves, the stamp goes stale and the cell reopens.

Option Type Meaning
ELEMENT_ID argument
SID argument
--status mitigated | accepted | n/a Close the cell: the code mitigates it, the risk is accepted, or it does not apply here.
--note text Where / why (file:line for mitigated).
--missing text Record a finding instead: what is exploitable and where.
--effect disclosure | tampering | destruction | denial | escalation | repudiation Narrow the finding's effect (default: from the threat and the ops).
--degree existence | attribute | record | bulk Narrow how much data is reached (default: inferred, record or bulk).
--actor anonymous | subject | staff | system Narrow who can exploit it (default: whoever the scope lets in).
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

threats why

Every threat for one element (a touchpoint id, unit:store, party:x, or a flow a->b) with in/out and the rule that decided it. A finding id (F-0042) shows that one finding in full.

Option Type Meaning
ELEMENT_ID argument
SIDS argument
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

touchpoints

Entry points through which data flows: routes, tasks, admin screens.

touchpoints auto-review

Have an OpenCode agent declare what each touchpoint handles, then group.

Pass 1 reviews pending touchpoints one at a time (reading the view or task code, referencing inventory items, adding transient manual items when the code handles personal data that is never persisted). Pass 2, once nothing is pending, groups every PII-touching touchpoint into processing activities following the front -> api -> task edges; fields the agent cannot know stay !todo. Same sandbox and exit codes as data auto-review.

Option Type Meaning
--unit text Restrict to one unit.
--max-rounds integer default 20
--batch integer Touchpoints per round. default 8
--model text provider/model. Default: openrouter/openrouter/auto with OPENROUTER_API_KEY; with SCALEWAY_SECRET_KEY only, scaleway-dedicated/ when SCALEWAY_INFERENCE_ENDPOINT is set, else scaleway/gpt-oss-120b.
--max-tokens integer Stop starting new rounds once this many tokens were used.
--group, --no-group flag Group PII-touching touchpoints into activities once nothing is pending.
--group-only flag Skip the per-touchpoint pass; only run the grouping session.
--workers integer range Parallel OpenCode sessions per round, each reviewing --batch touchpoints. default 16
--stale flag Also re-review declarations written with write or a legacy verb.
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

touchpoints list

List every touchpoint with what it handles and which activity holds it.

Option Type Meaning
--unit text Restrict to one unit.
--pending flag Only touchpoints not yet declared.
--all flag Include ignored ones.
--format table | json default table
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

touchpoints set-data

Declare the data items a touchpoint handles.

REFS are <unit>:<app.Model.field> data ids (@json/@files rows allowed; a ref without unit means the touchpoint's unit). ref=<ops> states what the code does to the item: ref=create, ref=create,read, ref='{erase: {by: subject}}'; a bare ref is a read. No REF at all declares an empty list: "touches no inventory item, checked".

Option Type Meaning
TOUCHPOINT_ID argument
REFS argument
--add flag Append to the current list.
--remove flag Remove from the list.
--ignore flag Mark the touchpoint as carrying nothing.
--transfer, --export text party=ref,ref[;purpose] — data sent to another organisation; repeatable. default Sentinel.UNSET
--note text One line on what was looked at.
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.

touchpoints show

Everything known about one touchpoint: facts, schemas, manifest, activities.

TOUCHPOINT_ID is <unit>:<id>.

Option Type Meaning
TOUCHPOINT_ID argument
--python text Interpreter to use for introspection.
--root directory Repository root. Defaults to the top-level --root, else the enclosing Git checkout, else the cwd.