In development

Mnemos Long-term memory for agents

A local-first memory layer for AI agents on the Mac. Conversations, files, and events become a living, bi-temporal knowledge base — extracted, linked, ranked, and gracefully forgotten, all on-device.

  • Local-first
  • Seven-layer memory
  • Bi-temporal graph
  • Swift-native

How Mnemos works

Four ideas turn a stream of events into memory an agent can actually reason over.

The gap Mnemos fills

LLMs are stateless. The usual workarounds break down the moment an agent needs to remember more than a few turns.

Seven kinds of memory

Human memory isn't one thing — neither is Mnemos. Each component is modeled for what it holds and how it's recalled, not crammed into a single vector blob.

Architecture at a glance

Mnemos runs in-process — no daemon, no server. Your app imports one Swift package; everything below lives inside it, coordinating on a single on-device database.

Consumers
Host app SwiftPM import
Agent in-process loop
memctl ops & eval CLI
Memory layer
Mnemos · MemoryLayer add · search · update · decay · core · vault
Subsystems
Ingestion store now, extract later
Retrieval hybrid + rerank
Graph entities & edges
Decay lifecycle
Vault encrypted
On-device foundation
libSQL one file · FTS5 · vectors · ANN
Model providers local-first · cloud optional
Apple frameworks Vision · CryptoKit · EventKit

From event to recall

Mnemos embeds in your Swift app as a single package. Add raw events; it stores them instantly and enriches them in the background.

import Mnemos

let mem = try MemoryLayer(config: cfg)
try mem.migrate()

// Stored instantly; entities + facts extracted in the background
let result = try await mem.add(RawEvent(
    sourceType: .chat,
    summary: "Sarah confirms the Q3 launch slips to May 12",
    actors: ["Sarah Chen"]
), infer: .yes, contextID: "proj_q3")

// Hybrid retrieval: lexical + dense, fused, decay-scaled, reranked
let hits = try await mem.search("when is the launch", limit: 10)

// Bi-temporal: ask what was true at a point in the past
let past = try mem.asOf(Date(timeIntervalSinceNow: -90 * 86400))
  • Store now, extract later

    Events persist the instant they arrive; an LLM distills entities and facts asynchronously, so writes never block the agent.

  • Supersede, don't overwrite

    When a fact changes, the old edge is closed with a validity date and linked to the new one — history stays intact and auditable.

  • One query, many routes

    A search fans out across dense vectors, BM25, a k-hop graph traversal, and a parsed time window — then fuses them into one ranked set.

Proven, not promised

Memory quality is measurable — so we measure it. Mnemos ships with a full evaluation harness, run on every change.

Compared with the alternatives

Mnemos is the only memory layer that's a true on-device knowledge base — not a hosted API or a bare vector store.

MnemosDIY (vector DB)No memory
Runs fully on-device
Seven-component memory model
Bi-temporal facts (time-travel)
Hybrid retrieval + rerank
Graceful decay & forgetting
Encrypted secret vault
Apple-native (Vision, EventKit, Touch ID)
Recall latencyin-processin-processn/a
Cost per recall at scale$0$$0

What you can build

Patterns Mnemos is built to make trivial.

Build with Mnemos

Working on a Mac agent that needs real, durable memory — not a bolted-on vector store? Talk to us about early access, integration, or partnership.

Talk to the team
Next platform component

Elix

The on-device inference engine — composable pipelines, MLX-native, partner-tuned.