--profile <name> or --project. Project operations use the current directory or --cwd <path> and require ocx init --project first.
Add
alias/component references. OCX resolves dependencies, checks every target, and installs files with an ownership receipt. --from uses an ephemeral source for the requested alias without adding it to metadata; the receipt retains the origin for later updates. For a profile recipe, prefer profile add --source to create a new destination.
Re-adding unchanged content is safe. If an installed component changed upstream, add asks you to use update. It does not offer --force to replace existing unmanaged files.
Update
Choose exactly one selection:--dry-run after reviewing the result. Updates consider complete owned file sets and dependencies: they can add newly published files and remove obsolete upstream files as well as replace contents.
To intentionally replace or delete edited owned files, first inspect:
--dry-run only when the proposed replacement is what you want. --force does not bypass path checks, allow an ownership collision, or overwrite an unrelated unmanaged file. Save edits elsewhere or in version control when you want to reapply them.
Verify
verify checks every installed component. It compares current bytes with the recorded per-file SHA-256 baselines and reports modified or missing files. It does not fetch the latest registry contents or modify anything.
A local customization is expected to fail baseline verification; that is useful information, not proof that the file is malicious. Exit code 6 indicates differences, including in JSON mode. No installed components is a successful empty result.
JSON output contains success, verified, and errors; entries identify canonical IDs and changed or missing paths.
Remove
--force (-f). Preview that choice before applying it:
Options
All four commands accept-p, --profile, --project, --cwd, --json, -q, --quiet, and -v, --verbose.
Use qualified references to avoid ambiguity. For update, remove, and verify,
alias/component is a shorthand for a canonical receipt ID; the exact canonical ID is accepted too. Bare component names are not accepted. Installation always requires alias/component.
See receipts and ownership, verification limits, and recovery for details.