March 22, 2026 — artbird
| Component | Status | Details |
|---|---|---|
| QMD Bun server (PID 949) | Running but broken | CWD is (deleted), health endpoint crashes with ENOENT |
| QMD MCP node (PID 1054437, port 8181) | Running (orphan) | Should have been removed — no longer part of the architecture |
| watchctl (PID 965) | Running | Publishing Syncthing disk events every ~30s |
| qmdctl venv | Broken | /opt/qmdctl-venv/bin/qmdctl → ModuleNotFoundError: No module named 'qmdctl' |
| Metric | Value |
|---|---|
| Total session transcripts on disk | 38,009 |
| Project collections | 119 (all registered in QMD index) |
| Largest collection | arthack: 7,717 sessions |
| Latest file sync | Mar 22, 15:49 UTC (real-time via Syncthing) |
| Count | Project |
|---|---|
| 16,266 | arthack |
| 6,844 | arthack-marketplace |
| 3,912 | jobsearch |
| 1,476 | claudehooks |
| 1,246 | dotfiles |
| 1,160 | plans |
| 912 | codebench |
| 666 | codectl |
| 514 | music |
| 384 | linux-browser-farm |
The pipeline should be: Syncthing → watchctl → qmdctl watch-collections → qmd update + qmd embed
Syncthing → watchctl: WORKING. watchctl is actively watching Syncthing disk events and publishing changed paths. Logs show continuous activity: "published 4 path(s) for folder content-sessions" every ~30 seconds.
watch-collections → qmd: LIKELY STUCK. The sync-collections-state.yaml shows last_run_at: 2026-03-11T21:28:56 — 11 days ago. The deployed qmdctl venv is broken (ModuleNotFoundError), which means the watch-collections daemon may not be able to invoke qmd update/qmd embed.
| File | Size | Last Modified |
|---|---|---|
| index.sqlite | 3.3 GB | Mar 22, 15:39 |
| index.sqlite-wal | 2.7 GB | Mar 22, 15:49 |
| index.sqlite-shm | 5.4 MB | Mar 22, 15:44 |
The 2.7 GB WAL suggests either:
- Active embedding work that hasn't checkpointed
- A stale WAL from the March 11 run that was never checkpointed
The large WAL is likely causing search timeouts (claudectl semantic-search timed out at 60s during testing).
| Search Type | Topic | Result |
|---|---|---|
| Lex (BM25) | claude-code | Works, good scores |
| Vec (vector) | claude-code | Works, good scores |
| Hybrid + rerank | claude-code | Works |
| Session search (fast) | all projects | Works |
| Session search (exact name) | arthack | Timed out (60s) |
| Metric | Value |
|---|---|
| Source (llms.txt) | 67 docs |
| On disk (collections) | 61 docs |
| In QMD index | 61 docs |
| Missing | 6 recently-added pages |
Still running on artbird:
- qmdctl-ui.service (Bun server, port 8182) — PID 949, broken CWD
- qmdctl.service (MCP server, port 8181) — PID 1054437
- qmdctl-socat.service — IPv4-to-IPv6 forwarder
- qmdctl-iptables.service — DNAT rules for ports 8181/8182
These are all dead infrastructure. QMD access is SSH-only via qmdctl.api. A brief has been sent to The Secretary to remove these.
Still in the codebase referencing the dead HTTP/MCP infrastructure:
apps/qmdctl/qmdctl/transports.py— BunHttpTransport classapps/qmdctl/qmdctl/run_check_health.py— UI_PORT = 8182apps/qmdctl/qmdctl/run_check_service.py— port 8182 checks, service name refsapps/qmdctl/qmdctl/run_benchmark_performance.py— HTTP base_urlapps/qmdctl/README.md— outdated architecture docs
- File sync is working — 38K session transcripts syncing in real-time via Syncthing
- Indexing/embedding is likely 11 days behind — broken qmdctl venv, last sync Mar 11
- Search works but may be slow — 2.7 GB un-checkpointed WAL causing timeouts
- HTTP/MCP remnants still running — brief sent to The Secretary for cleanup
- 6 new claude-code docs need syncing — llms.txt has 67, index has 61