# Capturing coding sessions while the desktop app is closed

> Source: <https://dev.to/ashikvarma11/capturing-coding-sessions-while-the-desktop-app-is-closed-14pb>
> Published: 2026-10-10 05:51:03+00:00

*Current stage: Windows desktop development build. Updated 10 October 2026.*

A memory app that must stay open throughout every coding session adds another thing to remember. Mind Palace separates the capture process from the desktop interface.

Approved Codex hooks invoke a small local receiver. The receiver writes an inbox record without needing the Angular UI or the vault worker to remain open. When the user opens the vault, the app validates and imports those captures.

The current demo exercises this path with a synthetic hook event and fictional messages. It uses the real packaged receiver and native vault. It does not show a live Codex model producing the conversation.

The synchronous hook path validates bounded input and writes one unique atomic spool record. It does not scan memory folders, run inference or take the app's shared operation lock.

Moving indexing out of the hook reduces competing work during a short client deadline. It does not remove every timing risk. A receiver still has startup and filesystem costs, and actual client delivery must be measured separately.

App-side indexing validates the spool records and deduplicates deliveries. It publishes content-addressed transcript chunks and ordered manifests. Chunk boundaries follow complete JSONL records; the target is 64 KiB. An indivisible record can exceed that target within the separate input-record limit.

The receiver's complete transcript bound is 20 MiB. Oversized or ambiguous data is reported and preserved rather than advertised as a successful complete import.

Capture starts from an explicitly selected transcript folder. History is a separate action: the user reviews source metadata and confirms import. Installing a hook file is also separate from reviewing and trusting that handler in Codex.

This separation prevents several misleading states. A file on disk does not prove the client ran it. A successful capture does not prove the entire history was imported. A saved source does not prove its contents are an approved decision.

Changed hook definitions need fresh client review. The app's setup checklist makes runtime approval uncertainty visible.

Mind Palace can repair missing tails for already known sessions from the approved Codex source folder. Canonical ingestion maps one provider/session identity to one Session, preserving selected source revisions rather than rewriting the originals.

That recovery is useful, but it should not be confused with complete event delivery. A controlled two-minute test recovered an exact source and passed stored-evidence answering while its strict event-count check remained at 18 of 20. The discrepancy remains recorded instead of being replaced by another run that happened to pass.

Retention has a similar boundary. Old prefixes become eligible for cleanup only after a validated vault import acknowledgment and complete reference checks. Unknown, divergent and unimported copies stay intact. A large cleanup scan can defer without deleting anything.

The repository contains measured synthetic native checks and separate installed-client fixtures. They are evidence for their specific paths, not a guarantee for every machine or every future session.

Mind Palace is a Windows desktop development build using Angular, Tauri and bundled Python. Claude Code end-to-end verification and public installer work remain separate from the current Codex workflow.

See [the repository](https://github.com/ashikvarma11/mind-palace), [the receiver](https://github.com/ashikvarma11/mind-palace/blob/main/sidecar/memory_worker/session_capture.py), [the inbox implementation](https://github.com/ashikvarma11/mind-palace/blob/main/sidecar/memory_worker/capture_inbox.py) and [the recorded native results](https://github.com/ashikvarma11/mind-palace/blob/main/docs/verification/codex-runtime-13.md).

If you have built a lifecycle-hook integration, which failure was hardest to reproduce? Share the behavior and a non-sensitive reproduction through repository issues.
