capataina.dev

Local-first media memory

Mnemosyne

/nə-MOSS-uh-nee/

A memory for everything you collect, searchable by what it means, not what it is named. It never leaves your machine.

STORED POINTS / RECALL PATHS / ONE MEMORY WAKING

follow one memory down

Meaning, not filenames

File explorers forget.
Mnemosyne remembers.

You have thousands of pictures. Your file explorer sorts them by name and date, which tells you nothing about what is actually in them. Point Mnemosyne at the folders once. It builds a memory of what they mean.

One library. Remembered by content.

Search the way you think

You never remember the filename. You remember the picture.

So ask for the picture. Type what you would say to a friend, and it is there. These examples replay the experience against this field; they are not a browser search pretending to be the engine.

No cloud / no account / no upload

It all happens here.
Only here.

Every picture, every search, every ounce of the thinking happens on your own machine. Disconnect the internet and it still works, the way memory should.

Originals stay untouched. Derived memory stays enclosed.

The engine room

The seam / one core, a family on topEngineered as a media-agnostic platform, not a single app. Lynceus is one product on it; audio and 3D are the same engine in a new shell.
SHIPPED / VISION

Lynceus

emits / image asset

The shipped image product. Local semantic search over your own library, no cloud in the loop.

FORMING / AUDIO

Syrinx

via / audio adapter

The audio shell, still to come. The same core reached through an audio adapter in place of vision.

FORMING / 3D

Daedalus

via / mesh adapter

The 3D shell, still to come. The same core reached through a mesh adapter in place of vision.

the seam / no frozen public API until a second product proves it
crates/engine / the media-agnostic core
CatalogueSQLite / WAL mode / one writer and a read-only secondaryOne writer serialises every upsert; a read-only secondary answers queries without ever blocking a write.
Embedding storethree encoders' vectors / persistent on-disk cosine cacheCLIP, DINOv2 and SigLIP-2 vectors held together, cached on disk so cosine scores never recompute.
Retrievalcosine similarity / Reciprocal Rank Fusion, k = 60Each encoder ranks independently, then Reciprocal Rank Fusion at k = 60 folds them into one ordering.
Foundationsdomain types / platform paths / zero-overhead profilingShared domain types, platform-correct paths, and profiling that costs nothing until you switch it on.

Products depend on the engine as a path dependency. Image-specific work stays at the product edge.

Everything here
is checkable

The proof / every number traces to the public sourceNo benchmark you cannot reproduce, no claim without a file behind it. The engine is open. Read it.
Retrieval

Three encoders, fused

Reciprocal Rank Fusion, k = 60, over three independently trained vision models.

CLIP ViT-B/32, 512-d / DINOv2-Base, 768-d / SigLIP-2, 768-d
Inference

On-device, no Python

Every encoder runs through ONNX Runtime on your machine. No ML service or GPU required.

CPU on macOS / CUDA elsewhere with CPU fallback / calibrated INT8 weights are about 4x smaller
Image pipeline

Thumbnails at scale

JPEG scaled-IDCT feeds NEON-optimised Lanczos3 while encoders run in parallel.

jpeg-decoder / fast_image_resize / rayon
Storage

WAL, one writer

WAL-mode SQLite, batched embedding upserts, and checkpoints between encoder batches.

rusqlite / persistent on-disk cosine cache
Observability

Zero overhead when off

Opt-in spans, a 1 Hz resource sampler, and an on-exit report sit behind one CLI flag.

--profiling / tracing / PerfLayer / sysinfo
Tests

150+ Rust / 70+ Vitest

150+ Rust and 70+ Vitest tests gate every change across engine and product.

cargo test --workspace / vitest
Read the source.The public engine is commercial-licensed throughout. No accounts, telemetry, or API keys.View the engine
04 / the familyLynceus · shipping now

Lynceus · shipping now

Find it without naming it

A local-first image browser that searches tens of thousands of pictures by meaning, and finds the ones you never tagged.

Search by meaning

Type "dark cinematic lighting" and find it, even if you never tagged a thing.

Three eyes, one verdict

CLIP, DINOv2 and SigLIP-2 fuse into one ranking.

Built for tens of thousands

A virtualised masonry stays responsive as the library grows.

Never leaves your machine

No accounts, cloud or telemetry. Your originals are never touched.

See Lynceus App Store · arriving
Product 02 · audio · formingaudio memory
browse sound by meaning

Product 02 · audio · forming

Syrinx

The engine already remembers. Syrinx is learning to listen.

The same engine that remembers every image will remember every sound. Syrinx will let you browse samples and recordings by meaning, surfacing the synth stab that sounds like rain or the field recording you half-remember. The catalogue, embeddings and retrieval already ship inside Lynceus. This sense is still waking.

Forming / reserved in the engine: models/audio/ / no date promised
Daedalus · form · forming3D memory
browse form by meaning

Daedalus · form · forming

Find the one form in a thousand.

Mnemosyne will bring the same memory to libraries of 3D models. Describe the chair you half-remember and Daedalus will surface it from a thousand .glb files. It is not built yet; the engine already reserves its seat in models/3d/.

Forming / the engine reserves its seat

Three senses. One memory. Two still waking.