You're offline — showing cached data

Session memory extractor (Iris persona) — Hermes state.db bridge

memory-extractor-iris
2026-06-13 06:09:23 SAST
← Back to Tasks

Going-forward Iris-persona session-memory extraction. Iris is a separate Hermes profile (~/.hermes/profiles/iris/) whose conversations live in her own state.db, NOT session_*.json (write_json_snapshots off). The shared extractor's Hermes adapter only reads session_*.json, so scripts/iris_memory_capture.py is the bridge: it exports Iris's RECENT non-cron sessions (telegram + cli) from state.db to a temp dir of session_*.json, then runs hooks/session-memory-extractor.py scoped to PKA_PERSONA=iris over that dir, publishing durable memories to Vault/memory/auto/iris/.

Why the bridge, not write_json_snapshots: enabling snapshots on Iris's profile would need a gateway restart (disrupts active Iris use) and create JSON files needing pruning. The export bridge reads state.db read-only, writes temp JSON it deletes, and re-uses the extractor's .processed-ledger.json (in auto/iris/) to dedup already-seen sessions — so each run only triggers LLM calls for genuinely new conversations.

Schedule offset: 0 */4 (Luci-persona extractor is 30 */4). They share ONE global lock (PKA_ROOT/.session-extractor.lock), so the 30-min offset prevents collision; each run is bounded (--max-per-run 10, PKA_EXTRACTOR_MAX_CALLS=40) and finishes well inside the gap. Separate flock /tmp/iris-memory-extractor.lock guards the task layer.

Window: IRIS_WINDOW_HOURS=8 (overlaps the 4h cadence so nothing is missed at boundaries). The one-off full backlog is run with IRIS_BACKLOG_ALL=1 (recovered 2026-06-08). PKA_EXTRACTION_PROVIDER=agy routes extraction through Google Antigravity / Gemini quota, not Claude subscription quota; runtime_profile: direct_mixed keeps scheduler provider accounting truthful. Independent of Mission Control.

Every 4 hours at :000 */4 * * *
Yes
shell
1800s
No
in 2h (2026-06-13 08:00)

Task Definition

tasks/memory-extractor-iris.md
shell
set
No
Yes
flock -n /tmp/iris-memory-extractor.lock bash -c 'cd /home/lucienne/workspace/PKA && git pull --ff-only --quiet 2>/dev/null || true; PKA_EXTRACTION_PROVIDER=agy IRIS_WINDOW_HOURS=8 IRIS_MAX_PER_RUN=10 PKA_EXTRACTOR_MAX_CALLS=40 python3 scripts/iris_memory_capture.py' || echo 'memory-extractor-iris: locked, skipping'

Edit Schedule

Result:
30
Runs (7d)
29
Completed
0
Failed
1
Timeout
97%
Success (7d)
1.6m
Avg Duration
infrastructure memory extractor iris

Run History (30)

StartedFinishedStatusDurationOutputLog
2h ago 2h ago completed 15s
iris capture: exported 2 session(s) (window=8.0h)
View log
6h ago 6h ago completed 3.2m
iris capture: exported 7 session(s) (window=8.0h)
View log
10h ago 10h ago completed 3.5m
iris capture: exported 12 session(s) (window=8.0h)
View log
14h ago 14h ago completed 3.6m
iris capture: exported 12 session(s) (window=8.0h)
View log
18h ago 18h ago completed 13s
iris capture: exported 9 session(s) (window=8.0h)
View log
22h ago 22h ago completed 3.8m
iris capture: exported 9 session(s) (window=8.0h)
View log
1d ago 1d ago completed 13s
iris capture: exported 8 session(s) (window=8.0h)
View log
1d ago 1d ago completed 13s
iris capture: exported 7 session(s) (window=8.0h)
View log
1d ago 1d ago completed 36s
iris capture: exported 4 session(s) (window=8.0h)
View log
2d ago 2d ago completed 3.5m
iris capture: exported 20 session(s) (window=8.0h)
View log
2d ago 2d ago timeout
Stale lock killed after 1889s
-
Stale lock killed after 1889s
View log
2d ago 2d ago completed 3.5m
iris capture: exported 36 session(s) (window=8.0h)
View log
2d ago 2d ago completed 3.4m
iris capture: exported 32 session(s) (window=8.0h)
View log
2d ago 2d ago completed 3.4m
iris capture: exported 32 session(s) (window=8.0h)
View log
2d ago 2d ago completed 3.5m
iris capture: exported 32 session(s) (window=8.0h)
View log
2d ago 2d ago completed 3.7m
iris capture: exported 26 session(s) (window=8.0h)
View log
3d ago 3d ago completed 3.3m
iris capture: exported 10 session(s) (window=8.0h)
View log
3d ago 3d ago completed 2.4m
iris capture: exported 6 session(s) (window=8.0h)
View log
3d ago 3d ago completed 16s
iris capture: exported 4 session(s) (window=8.0h)
View log
3d ago 3d ago completed 3s
iris capture: exported 2 session(s) (window=8.0h)
View log
3d ago 3d ago completed 2.3m
iris capture: exported 8 session(s) (window=8.0h)
View log
3d ago 3d ago completed 30s
iris capture: exported 9 session(s) (window=8.0h)
View log
4d ago 4d ago completed 11s
iris capture: exported 3 session(s) (window=8.0h)
View log
4d ago 4d ago completed 3s
iris capture: exported 0 session(s) (window=8.0h)
View log
4d ago 4d ago completed 3s
iris capture: exported 0 session(s) (window=8.0h)
View log
4d ago 4d ago completed 2s
iris capture: exported 0 session(s) (window=8.0h)
View log
4d ago 4d ago completed 2s
iris capture: exported 2 session(s) (window=8.0h)
View log
4d ago 4d ago completed 1.7m
iris capture: exported 3 session(s) (window=8.0h)
View log
5d ago 5d ago completed 2s
iris capture: exported 7 session(s) (window=8.0h)
View log
5d ago 5d ago completed 0s
iris capture: exported 6 session(s) (window=8.0h)
View log

Comments (0)

No comments yet — add instructions for Luci
Help