Storage
The .feather file format.
One file. Zero copies on read. A compact binary format that memory-maps directly into SIMD search kernels — no parsing, no server, no runtime.
Why a single file
Zero-copy
mmap + SIMD. The file on disk is the index in memory.
Portable
Works on edge, mobile, WASM, server. No daemon.
Self-describing
Version header, dim, CRC — migrate cleanly.
Binary layout (v0.10.0)
OffsetBlockValue
0x00
Magic Number
0x46454154 ('FEAT')0x04
Version Header
v0.10.0 · 32 bytes0x08
Global Dim
Int32 · e.g. 384 / 7680x0C
Record Count
Int640x14
Namespace Table Offset
Int64 pointer0x20+
HNSW Graph Block
Nodes + edges + entry points·
Record Block
ID · vec · metadata · graph edgesEOF
CRC32 footer
Integrity checkZero-copy in practice
Memory-mapped reads
When you call DB.open() Feather memory-maps the whole .feather file. Search kernels read vector data directly from the mapped region — there's no allocation or deserialization step.
On modern filesystems this means the first query costs a page fault, and every subsequent query hits cache. For 100K nodes on a typical laptop SSD, that's under 1ms end-to-end.
Safe concurrent reads
The format is append-friendly and reads don't block. Multiple Python processes can open the same file read-only. Writes are serialized via a single writer lock in the C++ core.