// lock-free · zero-copy · l3-speed · ipc substrate

The bus that
never speaks
unless spoken to.

Splinter is a passive, lock-free shared memory substrate for high-frequency vector and KV ingestion across disjointed runtimes. It puts inference and governance in the same memory lane as the model. No daemon. No socket tax. No memcpy.

get started view on github → read the paper (PDF) →

The code is the docs.
We mean it literally.

The entire core — every seqlock, every atomic op, every alignment guarantee — lives in two files. splinter.c and splinter.h. Under 1,100 lines combined. Every public function has inline Doxygen. No separate reference manual needed.

The full repo, including CLI tooling, stress tests, all language bindings, and the llama.cpp inference shard? Just over 6,000 lines.

// if it fits in your head, it fits in your L1 cache

~/libsplinter — cloc
cloc --md splinter.c splinter.h
Language files blank comment code C 1 96 51 876 C/C++ Header 1 87 673 196 ────────────────────────────────────────── SUM: 2 183 724 1072
cloc --md *.c *.h *.cpp *.sh
Language files blank comment code C 34 911 664 5280 C++ 2 137 109 512 C/C++ Header 4 129 708 315 Bourne Shell 1 25 8 81 ────────────────────────────────────────── SUM: 41 1202 1489 6188

what it actually is

// three properties, no asterisks
01 // passive

not a daemon

Splinter is a memory-mapped region, not a process. It has no event loop, no background threads, no arbiter to wake up. Readers and writers share the same physical RAM directly through the OS page cache.

02 // lock-free

seqlocks, not mutexes

Concurrent access is coordinated with atomic sequence epochs per slot. If two writers race on the same key, the slower one gets EAGAIN and retries. No thread ever sleeps waiting for a lock to release.

03 // zero-copy

pointers, not packets

Data is never serialized across a socket boundary. Readers cast a raw pointer directly to the L3 cache slot. TypeScript, Python, Rust, and C can all reference the same embedding without a single memcpy().

several fractional hats that it wears

// semantic breadboard, iptables-like provisioning and control
01 // KV

key/value storage

Splinter includes a full-featured namespaced KV store, with tandem slot, bloom filter and feature flags for added convenience.

02 // Vector Storage

vectors and inference

Vectors are first-class 768-dimensional embeddings, retrievable by managed pointer and epoch access, and easily computed by the included sidecar-style inference engine.

03 // Cache & Atomics

cache and atomics

INCR, DECR, OR, XOR, AND, NOT as well as simple ephemeral text caching works just like it does in other cache stores, just a LOT faster.

a pool with up to millions of lanes nobody has to referee

// olympic-grade IPC, no lifeguard required
// splinter store — live slots
nomic::sentence_vecepoch 1,847
physics::tension_chepoch 23
gdelt::impulse_usepoch 9,112
global_event_countepoch 4,200,001
sensor.alpha.47epoch 88
npc_dialogue_vectorepoch 312
empty
empty

Slots are pre-allocated at store creation. No heap fragmentation. No GC pauses. No garbage. The kernel maps the entire region into every process address space at once — getting a value costs one pointer dereference.

Writers increment a per-slot epoch before and after writing. Readers detect torn reads by checking the epoch changed mid-read and simply retry. No mutex contention, no priority inversion, no convoy problem.

64-byte alignment means each slot maps to exactly one cache line. Two writers never cause false sharing on adjacent slots, even at 3M+ ops/sec on throttled consumer hardware.

ops/sec
3,200,000+
corruption
0
threads tested
63+1 (MRSW)
ops/sec
15,400,000+
corruption
0
threads tested
4+4 (MRMW)

one store, every runtime

// zero-copy across language boundaries
C / C++
native
Python
ctypes
Rust
unsafe ffi
TypeScript
deno / bun
Java
panama
// C — read 768-dim embedding directly from L3 cache // no memcpy(). the pointer IS the data. size_t out_sz; uint64_t epoch; void *ptr = splinter_get_raw_ptr("npc_vec", &out_sz, &epoch); float *vec = (float *)ptr; // that's it

physics, not marketing

// tiger lake i3, 6gb ram, worst-case workday conditions
substrate ops/sec cycles/op daemon memcpy
SQLite / Redis ~130,000 ~23,076 yes yes
Splinter (standard) 3,200,000+ ~937 no no
Splinter (NUMA-pinned, projected) 10,000,000+ <300 no no

// 25x faster than Redis on the same throttled hardware. not a fair competition — Splinter is local IPC only. but sometimes you just need a piccolo, not an orchestra.