OmaSafe is an Omarchy bar widget and review panel for inspecting installed
plugins. It surfaces source drift, detected capabilities, rule coverage, scan
alerts, trust baselines, and marketplace metadata. The separate omasafe-cli
binary does the scanning; this plugin renders its reports and does not declare
plugins safe.
The plugin runs as unsandboxed QML inside omarchy-shell, so review the source
before enabling it. Installing the plugin and installing the CLI are separate
operations.
- Plugin ID:
io.github.tuthan.omasafe - Omarchy plugin marketplace
- OmaSafe CLI repository
The panel has three views:
| View | Purpose |
|---|---|
| Overview | Plugin inventory, trust baseline state, scan alerts, and marketplace claims. |
| Analysis | Matrix, graph, trace, detected capabilities, linked rules, and Baseline V3 coverage. |
| Rules | Rule catalog, local hits, and Baseline V3 coverage relations. |
Analysis counts are evidence, not permissions or scores. A capability “use” is one source-level reference emitted by the analyzer; the file count is the number of distinct files containing those references.
Status markers are shared across the views:
- Green check: a current scan has no active alerts, or a fully analyzed rule has no local hits.
- Yellow: medium or warning severity.
- Amber: high severity.
- Red: critical, error, or blocked.
- Gray: stale, unavailable, or incomplete data.
Markers always retain the corresponding word or glyph and never represent a safety verdict. Cached results are explicitly labeled stale.
| Key | Action |
|---|---|
↑ ↓ / j k |
Move within a list or graph column. |
← → / h l |
Move across view chips or graph columns. |
Enter |
Open a plugin, pin a graph node, or follow a link. |
Esc |
Go back, close a confirmation sheet, or close the panel. |
r |
Run a scan. |
a / A |
Analyze the selected plugin / all plugins. |
m |
Toggle the Analysis lens between Matrix and Graph. |
t |
Trace a plugin and capability class. |
g |
Expand or compact the panel. |
x |
Unpin a graph node or cancel a running analysis sweep. |
? |
Show the Analysis legend. |
- Omarchy with shell plugin support.
omasafe-cli0.2.1 or newer on the graphical sessionPATH.
The widget can be installed before the CLI. Until the CLI is available, it shows an unavailable state and never implies that the system is clean.
Download the matching release archive and checksum from the OmaSafe releases page, verify it, and install the binary somewhere visible to the graphical session:
sha256sum --check omasafe-cli-VERSION-x86_64-linux.tar.gz.sha256
tar -xzf omasafe-cli-VERSION-x86_64-linux.tar.gz
install -Dm755 omasafe-cli-VERSION-x86_64-linux/omasafe-cli \
"$HOME/.local/bin/omasafe-cli"Verify the dependency:
command -v omasafe-cli
omasafe-cli --version
omasafe-cli scan --format jsonBefore running scans or trust actions, the plugin checks that the CLI exits successfully and reports a compatible version. The minimum version and an optional identity check can be configured in the plugin settings.
Install from the marketplace or the published repository:
omarchy plugin add https://github.com/tuthan/omasafe-plugin.git --enableThe marketplace does not install omasafe-cli. After installing the CLI,
refresh the running shell if needed:
omarchy-shell shell rescanPlugins
omarchy plugin enable io.github.tuthan.omasafe --section rightPeriodic scanning is disabled by default. Enable it in the widget settings and choose an interval from 1 to 1440 minutes, or run scans manually.
After a successful scan, the plugin stores a small parsed snapshot at:
${XDG_CACHE_HOME:-$HOME/.cache}/omasafe/last-scan.json
The snapshot contains alert and scan metadata only; it excludes raw stdout, stderr, and full analysis payloads. After a shell restart, matching cached data is shown as stale until a fresh scan replaces it.
For listed plugins, the panel displays marketplace claims separately from local trust state. It can show snapshot integrity, listing verification, installed commit comparison, and upstream movement. “Verified” is always attributed to the marketplace snapshot and is never an OmaSafe safety judgment.
Omarchy expects a real plugin directory, so use rsync instead of a symlink:
plugin_dir="$HOME/.config/omarchy/plugins/io.github.tuthan.omasafe"
mkdir -p "$(dirname "$plugin_dir")"
mkdir -p "$plugin_dir"
rsync -a --delete --exclude='.git/' ./ "$plugin_dir"/
omarchy-shell shell rescanPlugins
omarchy plugin enable io.github.tuthan.omasafe --section rightAfter changing BarWidget.qml, Panel.qml, or manifest.json, run the same
rsync command and rescan the shell. Do not use omarchy plugin update for
this local copy.
omarchy plugin disable io.github.tuthan.omasafe
omarchy plugin remove io.github.tuthan.omasafeRemoving the plugin does not remove the independently installed CLI.
omarchy plugin validate .
qmllint -I /usr/share/omarchy/shell -I /usr/lib/qt6/qml \
BarWidget.qml Panel.qml components/*.qml views/*.qml graph/*.qml
node scripts/flow-test.js

