Foxora Den is the spatial memory substrate for OS-native AI agents. Built on the Method of Loci — the 2,000-year-old Roman mnemonic technique used by orators and memory athletes — Den gives every device a single hierarchical palace in which agents place, walk, and recall memories at native speed. Runs as a tiny Rust daemon — foxmemd — underneath every Foxora agent.
ships native · macOS · Linux · Windows · Apache-2.0
The Method of Loci — attributed to Simonides of Ceos and systematised by Cicero and the classical Roman rhetoricians — encodes information by associating each item with a distinct location in a familiar mental space. To recall, the practitioner mentally walks the space. World Memory Champions still use it today. fMRI work by Maguire et al. shows they recruit the right posterior hippocampus and retrosplenial cortex — the same regions the brain uses for spatial navigation.
Every other AI memory system — mem0, MemPalace, Graphiti, Rewind — treats memory as a flat embedding index. They search by similarity. We took the technique that humans actually use for durable recall and rebuilt it as a kernel-adjacent substrate. The result is a single palace per device, with a hierarchical locus algebra bounded at depth six — and full-text recall in 31 ms over 700,057 memories.
Vixen issues a recall. The daemon resolves the dotted address segment by segment — four B-tree lookups, no embedding forward pass on the hot path — and reveals the memory at the destination locus. Loops every six seconds.
An application-layer memory system observes a chat transcript and little else. The file you were editing, the command you ran ten seconds before, the application that was foregrounded — all of it is invisible to a library. Den is a system service underneath the application layer, with privileged visibility into the full machine state.
"Rather than treating an LLM as if it were an operating system, we make the operating system the memory substrate of the LLM."
— Foxora Den, v1.3 §1.2
Every device has a single Palace — a rooted tree of loci, each holding zero or more memories. The palace is partitioned into five top-level Dens — Work, Life, Creative, Learning, Forest — under which agents nest as deeply as they need.
Addressing is a dotted path, not an embedding. Vixen emits work.foxora.kitspace.monochrome-decision with the same cost as any other tool-call argument — no embedding forward pass on the hot path. Wildcard globs walk subtrees; a date suffix takes a temporal slice.
An observation begins as a raw event, gets compressed into an episodic summary, distils into a semantic fact, and finally integrates into the relational graph that gives the palace its spine. TCSE audits all four continuously.
Every captured event in original form: chat turns, command lines, file-open events, application activations. Bounded by automatic pruning.
Compressed session summaries produced by a nightly local-LLM summariser. The day distilled into a paragraph, anchored to the trail it lived in.
Distilled stable facts the agent has learned about you — "user prefers Rust", "primary editor is Foxora Desktop". Never forgotten unless explicitly forgotten.
The graph of entities and edges that constitutes the spine of your palace — typed edges of kind Mentions, SimilarTo, Supersedes, CausedBy.
Foxora Den isn't a vector store. It's a hierarchical locus algebra, a three-axis staleness model, and a typed provenance DAG — running together behind a single Rust daemon.
Resolving a k-segment dotted address is k B-tree lookups — O(k log ν) for ν loci, with k bounded by the palace depth (D ≤ 6). Vector embeddings are kept only as a fallback when no spatial address is resolvable.
The Temporal Conflict Surface Engine scores every memory along three axes — semantic, temporal, behavioral — and combines them through a Beta–Bernoulli prior. The behavioral axis is the one application-layer systems can't see.
Every memory carries a typed P-DAG capturing the conversations, files, commands, and app activations that produced it. Bounded at depth 5, every 'why?' query is O(D_p · k̄) — and ours is roughly 32 nodes.
The Temporal Conflict Surface Engine runs continuously on a background worker. Every memory in the palace is scored along three axes — and the third, behavioral, is the one only an OS-level substrate can see.
A Beta-Bernoulli prior combines the three into a single severity. Above threshold, the daemon doesn't silently forget — it supersedes: a fresh memory is placed at the same locus, the old one keeps a typed Supersedes edge, σ flips to 2 (resolved). Nothing is lost; the truth just moves forward.
"user prefers VS Code as primary editor"
Every consumer of the palace — Vixen, Foxora Shell, the Den IDE app, third-party kits, external MCP clients — is granted exactly one of seven capability levels, scoped by locus glob. Defaults are conservative.
Banking, health, and password-manager kits are hard-locked to None. The kernel-level capability dispatcher refuses to forward capture events for hard-locked subjects; the data never enters the daemon's address space. Even root cannot bypass it without an explicit unlock through Foxora Settings.
Every memory captures a 2–5 KB JSON snapshot of the surrounding machine state: foregrounded territory, open applications, active file, cursor line, browser tabs, terminal sessions, music, wallpaper. Restore re-launches each application via D-Bus activation, re-attaches tmux sessions, resumes music at the recorded position.
The cognitive justification is Godden & Baddeley's 1975 context-dependence study: word recall improved 42% when the encoding context was reinstated at retrieval. Snapshots are the digital analogue.
anchor: work.foxora.kitspace
territory: kitspace
apps:
- vscode file: kitspace-explore.html
cursor: 142
- terminal session: foxora-build
cwd: ~/work/foxora
- chrome tabs:
- "kitspace · staging"
- "Tailwind / colors"
music:
- foxora-radio · paused @ 1m42s
wallpaper: charcoal-coralNo agent-framework memory system can produce this reconstruction — because it never saw the file edit, the command, or the application activation that led to the memory in the first place.
On April 19 at 15:20, you were editing kitspace-explore.html in VS Code, immediately after running git diff HEAD~1. During a chat session at the same time, you said:
"I want this to feel Apple-grade, monochrome with just coral for accents."
I stored that decision at work.foxora.kitspace.monochrome-decision.
Measured on a working deployment of foxmemd v0.1.0. Numbers are read directly from the running daemon's overview, activity, and recall views — single-user workstation, not a tuned benchmark rig.
All latencies in milliseconds. Vector fallback is the slow path — kept available, used only when no spatial address resolves.
Adapted from Table 1 of the v1.3 report. Sp. spatial · Prov. provenance · Beh. behavioral signals · Caps. capability model.
foxmemd ships inside Foxora Desktop. Install once and every agent on the device gets a private, capability-scoped palace.