Command Matrix¶
This matrix is the operational view of the CLI. Use it to answer three questions before running a command:
- Does it need an active host?
- Which state can it change?
- Is there a preview or safer first step?
For exact flags, run:
Legend¶
| Mark | Meaning |
|---|---|
| Read-only | Inspects state without intentionally changing config, packages, dotfiles, or services. |
| Config | Can write settings.json. |
| Cache | Can write local omni.db state. |
| Packages | Can install, upgrade, uninstall, or otherwise call package managers. |
| Files | Can create, remove, replace, or relink local files. |
| Dot repo | Can modify the configured dotfiles Git repo. |
| Services | Can install, remove, or run native dotfile helper services. |
Host requirement means the command normally needs the current hostname to be
configured so Omni can expand host settings and groups. Commands that target an
explicit group with --group, or expose an explicit --force path, can bypass
the normal active-host gate.
Top-Level Commands¶
| Command | Host required | State touched | Safer first step |
|---|---|---|---|
omni |
no | TUI-driven | omni doctor |
omni ui |
no | TUI-driven | omni doctor |
omni bootstrap |
no | Config, cache, optional packages/files/dot repo | omni bootstrap --no-import |
omni init |
no | Alias for bootstrap |
omni bootstrap --no-import |
omni doctor |
no | Read-only | already read-only |
omni reconcile |
yes | Config, cache, packages, files, dot repo | omni doctor |
omni trace list |
no | Read-only | already read-only |
omni completion |
no | Read-only | already read-only |
omni help [command] |
no | Read-only | already read-only |
omni --version |
no | Read-only | already read-only |
reconcile is intentionally broad. Use --skip-privileged when package
manager work should report privileged operations instead of prompting for
credentials:
Its tool phase claims discovered installed tools into the current machine group, then installs missing configured tools.
Bootstrap flags:
| Flag | Use |
|---|---|
--import |
Import installed tools during setup. |
--no-import |
Create/load config and host state without claiming installed tools. |
--import-config <path> |
Seed setup from an existing config file. |
Tool Commands¶
| Command | Host required | State touched | Preview or safer first step |
|---|---|---|---|
omni tools list [tool] |
yes | Read-only | already read-only |
omni tools search <query> |
yes | Read-only | already read-only |
omni tools providers |
yes | Read-only | already read-only |
omni tools refresh |
yes | Cache | omni tools list |
omni tools set <name> |
yes | Config | omni settings show |
omni tools fallback <tool> |
yes | Config | omni tools list <tool> |
omni tools delete-spec <name> |
yes | Config | omni tools list <name> |
omni tools normalize --default-overrides |
yes | Config | --dry-run |
omni tools baseline |
yes | Host discovery baseline state | --dry-run |
omni tools add <package> |
yes | Config | omni tools search <package> |
omni tools install [tool] |
yes, unless --group/--force |
Packages, cache | omni tools list [tool] |
omni tools sync [group] |
yes | Packages, cache | --dry-run |
omni tools sync --prune |
yes | Packages, cache | --dry-run |
omni tools sync --all |
yes | Config, packages, cache, and APM agent state | --dry-run |
omni tools upgrade [tool] |
yes | Packages, cache | omni tools list [tool]; --force bypasses update quarantine |
omni tools upgrade --all |
yes | Packages, cache | omni tools list; --force bypasses update quarantine |
omni tools remove <name> |
yes | Config | omni tools list <name> |
omni tools remove <tool> --purge |
yes | Config, packages, cache | omni tools list <tool> |
omni tools import |
yes | Config | --dry-run |
omni tools reinstall <tool> |
yes | Config, packages, cache | omni tools list <tool> |
omni tools consolidate <ecosystem> <manager> |
yes | Config, packages, cache | --dry-run |
omni tools ignore <name> |
yes | Config | omni tools list <name> |
omni tools unignore <name> |
yes | Config | omni tools list <name> |
omni tools heal-taps |
yes | Config | --dry-run |
omni tools migrate-nvm [tool...] |
yes | Config | omni doctor |
omni tools migrate-nvm --all |
yes | Config | omni doctor |
Important flags:
| Flag | Command | Use |
|---|---|---|
--dry-run |
sync, import, consolidate, normalize, heal-taps, baseline |
Show planned changes without writing config or mutating packages where supported. |
--prune |
sync |
Remove local installations no longer in config. Cannot be combined with sync --all. |
--all |
sync, migrate-nvm |
For sync, claim and install tools, then run the APM agent sync. For migrate-nvm, migrate every nvm-managed system-provider tool. |
--group |
install, sync, import, list, add |
Target, filter, or assign a reusable group explicitly. |
--force |
install, upgrade, reconcile |
For install, skip bootstrap and host assignment checks for an explicit install path. For upgrade and reconcile, bypass update quarantine. |
--allow-weak |
install, sync |
Permit the best weak provider discovery match when no high-confidence match exists. |
--provider |
add, set, install, list, search, sync, reinstall --reinstall-default |
Scope command behavior to one provider where supported. |
--from-github |
fallback |
Resolve and save a GitHub fallback recipe from owner/repo. Optional when the tool config has a GitHub git URL. |
--install-with |
add, set |
Pin one logical tool to a concrete manager. |
--host |
set |
Boolean flag; write a host-specific tool override for the current host. |
--from, --to |
reinstall |
Move one tool between concrete managers or providers. |
--reinstall-default |
reinstall |
Reinstall a tool with its configured default provider. Cannot be combined with --from/--to. |
Dotfile Commands¶
| Command | Host required | State touched | Preview or safer first step |
|---|---|---|---|
omni dots status [name] |
no | Read-only | already read-only |
omni dots list [name] |
no | Read-only | already read-only |
omni dots discover |
no | Read-only | already read-only |
omni dots history |
no | Read-only | already read-only |
omni dots sync [name] |
no | Files, cache | --dry-run |
omni dots add <path> |
no | Config, files, dot repo, cache | omni dots discover |
omni dots remove <name> |
no | Config, files, dot repo, cache | omni dots status <name> |
omni dots resolve <name> |
no | Files, dot repo, cache | omni dots status <name> |
omni dots extract <parent> <subpath> |
no | Config, files, dot repo, cache | omni dots status <parent> |
omni dots ignore <name> [pattern] |
no | Config | omni dots status <name> |
omni dots unignore <name> [pattern] |
no | Config | omni dots list <name> |
omni dots groups <name> |
no | Config | omni dots list <name> |
omni dots variant list <name> |
no | Read-only | already read-only |
omni dots variant add <name> |
no | Config, files when syncing | omni dots variant list <name> |
omni dots variant remove <name> |
no | Config, files when syncing | omni dots variant list <name> |
omni dots pull |
no | Dot repo, files, cache | omni dots status |
omni dots commit |
no | Dot repo | git -C <dots_repo> status |
omni dots push |
no | Dot repo, network | omni dots status |
omni dots enable |
no | Config, files | omni dots status |
omni dots disable |
no | Config, files, dot repo | omni dots status |
omni dots reminder check |
no | Read-only | already read-only |
omni dots reminder run |
no | Read-only, optional notification | omni dots reminder check |
omni dots reminder status |
no | Read-only | already read-only |
omni dots reminder install |
no | Services | omni dots reminder status |
omni dots reminder uninstall |
no | Services | omni dots reminder status |
omni dots watch run |
no | Files, cache | omni dots status |
omni dots watch status |
no | Read-only | already read-only |
omni dots watch install |
no | Services | omni dots watch status |
omni dots watch uninstall |
no | Services | omni dots watch status |
omni dots services status |
no | Read-only | already read-only |
Conflict resolution must be explicit:
Use --use-repo when the dotfiles repo is correct. Use --use-local when the
current local files are correct. Force-resolve every conflict in one pass with
omni dots sync --use-repo or --use-local (per-entry on_conflict still
wins); in the TUI, U/L on the dots tab do the same.
Split a subdirectory into its own entry/group:
The parent stops managing the subtree and it is adopted as a new entry in
--group.
Group assignment edits are also explicit:
Agent Commands¶
| Command | Host required | State touched | Safer first step |
|---|---|---|---|
omni agents sync [--frozen] [--dry-run] |
no | Global APM manifest, deployed agent files and MCP registrations, network | --dry-run |
omni agents add <package>... |
no | Global APM manifest, deployed agent files, network | omni agents sync --dry-run |
omni agents remove <package>... |
no | Global APM manifest, deployed agent files | omni agents sync --dry-run |
omni agents update [--dry-run] |
no | Global APM lockfile, deployed agent files, network | --dry-run |
omni agents search <query> |
no | Network | already read-only |
omni agents audit |
no | Read-only APM state | already read-only |
omni agents targets |
no | Read-only APM state | already read-only |
omni agents outdated |
no | Read-only APM state, network | already read-only |
omni agents prune |
no | APM dependency state | omni agents audit |
omni agents deps list|why |
no | Read-only APM state | already read-only |
omni agents marketplace ... |
no | APM marketplace state, network | omni agents marketplace list |
omni agents migrate --host <name> |
no | Read-only preview | already read-only; --dry-run is an explicit alias |
omni agents migrate --host <name> --write |
no | Publishes verified wrappers and replaces only a migration-owned host template | run the preview first |
omni agents sync --force-template |
no | Overwrites ~/.apm/apm.yml with the host template, plus everything agents sync touches |
Diff the template against the live manifest first |
omni agents drift [--all] |
no | Read-only; reads client CLIs and config | already read-only; exits 0 either way |
omni agents adopt --host <name> |
no | Read-only preview | already read-only; there is no apply mode |
omni agents ignore ... |
yes | Config agents.ignored |
omni agents drift |
omni agents unignore ... |
yes | Config agents.ignored |
omni agents drift --all |
agents sync directly invokes APM's global install lifecycle against the
existing ~/.apm/apm.yml. APM owns manifest and lockfile mutation, dependency
resolution, target deployment, cleanup, and rollback. The MCP surface is
host-global: every declared server is installed to every enabled user-global
MCP target. Cursor and OpenCode are workspace-only MCP targets and are
rejected.
Steady-state agent lifecycle operations are thin APM wrappers. Omni's only
additions are the optional host template sync materializes before install, and
agents migrate, which renders a pre-APM host's declarations as a manifest
without writing anything. Omni does not provide per-agent MCP assignment.
agents drift and the agents-drift doctor check report native artifacts APM
does not own; neither removes anything. agents ignore writes only
agents.ignored in settings.json, and an ignored artifact is excluded from
drift, from adoption, and from the TUI's native removal. Removing and adopting
a native artifact is a TUI-only action on the Agents view; see
TUI.
Group Commands¶
| Command | Host required | State touched | Safer first step |
|---|---|---|---|
omni groups |
yes | Read-only | already read-only |
omni groups create <name> |
yes | Config | omni groups |
omni groups rename <old> <new> |
yes | Config | omni groups |
omni groups delete <name> |
yes | Config | omni groups |
omni groups set-tool <tool> <group>... |
yes | Config | omni tools list <tool> |
omni groups move-tool <group> <tool> |
yes | Config | omni tools list <tool> |
omni groups remove-tool <group> <tool> |
yes | Config | omni groups |
omni groups ignore-tool <group> <tool> |
yes | Config | omni tools list <tool> |
omni groups unignore-tool <group> <tool> |
yes | Config | omni tools list <tool> |
Deleting a group is a config operation, but it can have broad later effects because future syncs use group membership to compute desired state.
Host Commands¶
| Command | Host required | State touched | Safer first step |
|---|---|---|---|
omni hosts list |
no | Read-only | already read-only |
omni hosts ensure <hostname> |
no | Config | omni hosts list |
omni hosts set-groups <hostname> [group ...] |
no | Config | omni hosts list |
omni hosts add-group <hostname> <group> |
no | Config | omni hosts list |
omni hosts remove-group <hostname> <group> |
no | Config | omni hosts list |
omni hosts copy <source-host> <target-host> |
no | Config | omni hosts list |
omni hosts remove <hostname> |
no | Config | omni hosts list |
Host commands can run before an active host exists because they are the tools used to create and repair host assignments.
Settings Commands¶
| Command | Host required | State touched | Safer first step |
|---|---|---|---|
omni settings show [key] |
no | Read-only | already read-only |
omni settings get <key> |
no | Read-only | already read-only |
omni settings set <key> <value> |
no | Config | omni settings show |
omni settings disable-provider <provider> |
no | Config | omni tools providers |
omni settings enable-provider <provider> |
no | Config | omni tools providers |
omni settings lint |
no | Read-only | already read-only |
omni settings extract |
no | Config | omni settings lint |
omni settings migrate-host-overrides |
no | Config | omni settings lint |
omni settings reset |
no | Config | omni settings show |
omni settings reset-cache |
no | Cache | omni tools refresh |
settings reset preserves tools, groups, hosts, and ignore lists while resetting
global settings and the current host's settings to defaults.
settings reset-cache clears derived local state and reinitializes the cache.
settings extract rewrites layout, not values: it decomposes settings.json
into the canonical settings.d layout (agents.json, tools.json,
groups.json, dots.json) and removes the moved keys from settings.json.
settings migrate-host-overrides folds tools.*.hosts install overrides into
providers[]. Both edit config in place and neither offers a --dry-run, so
commit or back up settings.json first. settings lint is the read-only
hygiene check to run before either.
Automation Defaults¶
For scripts and CI:
Use OMNI_HOSTNAME when host detection is unstable:
Prefer read-only commands and dry-runs in CI unless the job owns the machine state it is about to mutate.