A native Omarchy shell bar widget for Memorix, the local-first shared memory layer for AI coding agents.
One bar icon with its own identity — deliberately not a tab inside the agents panel, because Memorix is a memory layer, not a subscription agent. Click it for the panel below (data pixelated in docs):
- Pool stats at a glance — stored today, total memories, approved long-term records, last write time
- Live search — type in the panel and filter the whole pool across all projects (250 ms debounce, results with type, project, and age)
- Per-project breakdown — see which projects are filling memory
- Recent memories — newest observations with type and relative time
- Workbench launcher — left-click the button or press
W - Snapshot export — one-click
memorix transfer export
Keyboard: R refresh · W workbench · Esc clear search / close.
IPC: omarchy-shell io.github.mbot11.memorix <open|close|show|hide|toggle|refresh>
- Omarchy (Quickshell-based shell)
- Memorix installed (
npm install -g memorix) python3(stdlib only — the widget reads the Memorix SQLite store directly)
omarchy plugin add https://github.com/mbot11/omarchy-memorix --enable
omarchy plugin enable io.github.mbot11.memorix --section rightThe icon appears in the right bar section the first time Memorix has recorded memories; the panel is otherwise self-hiding.
The widget spawns no daemons and holds no state: bin/stats.py and
bin/search.py open ~/.memorix/data/memorix.db read-only (WAL-safe,
MEMORIX_DATA_DIR respected) when the panel needs data and exit. While the
panel is closed, a single timer refreshes stats at a configurable interval.
Search is a global, case-insensitive match over title, narrative, type, and entity across every project. Agents themselves keep using Memorix's real FTS pipeline through MCP — this widget is an operator's window, not a second index.
omarchy bar set io.github.mbot11.memorix refreshIntervalSec 120 --json| Key | Default | What it does |
|---|---|---|
refreshIntervalSec |
300 |
Background refresh while the panel is closed |
| Symptom | Fix |
|---|---|
| Panel says "Memorix data not found" | Install Memorix and store one memory; check ~/.memorix/data/memorix.db exists |
| Icon missing from the bar | omarchy plugin list (enabled?), then omarchy bar put io.github.mbot11.memorix right |
Search returns nothing for text you can see in memorix recent |
The widget searches titles/narratives; very short tokens may not substring-match |
- Both helpers open the Memorix store with SQLite
mode=ro— the widget cannot write your memory. - Search text is passed as a process argument and a bound SQL parameter; LIKE wildcards are escaped.
- Every query is bounded (scalar aggregates, indexed
LIMIT 8recent list, a 500-row window for today's count) — pool growth cannot drive unbounded widget work. - All database-derived strings render as Qt plain text (
Text.PlainText) — stored markup can never alter the panel or fetch resources. - No network access, no daemons, no telemetry.
MIT — see LICENSE.
