Local-first inference engine · Apache-2.0

Inference that never leaves the room.

Palimpsests runs language models entirely on hardware you control and writes a tamper-evident record of every request — the data residency and the audit trail that regulated and air-gapped deployments depend on, without a byte crossing your boundary.

Run the model·keep the record·cross no boundary
The constraint

For data that isn’t allowed to travel.

Patient records under GDPR. Positions on a trading desk. Anything inside a classified or air-gapped network. When the data can’t reach a hosted API, neither can your inference.

Palimpsests keeps the whole loop — model, attention state, and log — on the machine where the data already sits. Nothing is uploaded, nothing is phoned home, and the only thing you export is a record you can verify without exposing what it recorded.

on-prem air-gapped llama.cpp backend Python 3.11+ no network egress
Capabilities

Three things the engine keeps in place.

The recurring idea: hold computed state instead of rebuilding it. Each capability is a named lever with an honest note on where it earns its keep.

01 / Shared Prefix

Compute once, reuse everywhere

A system prompt or long shared context is processed a single time and held warm, then reused across every request that shares it — instead of being re-read on each call.

state held across requests
02 / Tool Loop

Many steps, one running state

Multi-step tool calling without rebuilding the conversation at each step. Measured on Intel Arc (Vulkan) across 1.5B and 7B, it holds even with a hand-tuned llama-server — parity, stated plainly, not a headline number.

measured · parity with a tuned server
03 / KV Persistence

State outlives its process

Attention state is serialized to a validated frame format and restored across sessions and processes. The computed layer survives the process that produced it — and the frame is checked before it’s trusted.

validated frame · restored across runs

A well-tuned server uses these levers too. Where Palimpsests earns its keep is doing all of it locally, with a record. The concurrency case for Shared Prefix and KV Persistence is still under measurement — it gets reported here when it’s real, and not before.

The record

The record beneath the record.

Every request leaves a tamper-evident entry, chained by hash so the log can’t be silently altered. That’s the record-keeping substrate the EU AI Act’s logging expectations rest on — kept locally, verifiable without revealing what it holds. And the software itself carries the same discipline.

Hash-chained request log

Each entry references the one before it. Remove or edit a layer and the chain breaks — tampering is detectable, not deniable.

Signed releases · PEP 740

Published to PyPI with Sigstore provenance, so a build can be traced back to the source and workflow that produced it.

Bill of materials

An SPDX SBOM ships with the release — the dependency inventory a Cyber Resilience Act review asks for, ready rather than reconstructed.

OSPS Baseline L2 · fuzzed in CI

A self-attested Open Source Project Security baseline, a published threat model, and Atheris fuzzing in the pipeline. Apache-2.0, so you can read all of it.

EU regulatory fit

Which EU acts this closes — and how far.

Palimpsests doesn’t make you compliant with any of these on its own. It supplies the one runtime primitive each act actually leans on — residency, record-keeping, or supply-chain integrity — and leaves the rest to how you deploy. Every title links to the source text on EUR-Lex.

EU AI Act Regulation (EU) 2024/1689 · Art. 12

The hash-chained request log is the automatic record-keeping a high-risk system has to keep — held locally, and verifiable without exposing what it recorded.

GDPR Regulation (EU) 2016/679 · Art. 5(1)(f), 32

Inference runs where the data already sits, so personal data never leaves the controller — no third-country transfer to justify — and the tamper-evident log speaks to integrity of processing.

Cyber Resilience Act Regulation (EU) 2024/2847 · Annex I Pt. II(1)

Ships the machine-readable SBOM, signed releases, a published threat model and coordinated vulnerability handling the CRA makes mandatory for products with digital elements.

DORA Regulation (EU) 2022/2554 · Art. 28

Running the model in-house takes one ICT third-party dependency off the register, and the log gives financial entities defensible evidence for ICT-incident records. Support, not a full answer.

NIS2 Directive (EU) 2022/2555 · Art. 21, 23

Provenance and the SBOM feed supply-chain security measures; the tamper-evident log backs the incident evidence essential and important entities have to produce.

Where the runtime stops

What a runtime can — and can’t — do for compliance.

Most landing pages overclaim here. This one draws the line, because for a regulated buyer the line is the credential.

What Palimpsests provides

  • Local execution.Data stays on the machine that already holds it — residency by construction.
  • A tamper-evident request log.Hash-chained, recoverable, hard to rewrite — record-keeping you can hand to an auditor.
  • Signed, inventoried builds.Sigstore provenance and an SBOM — supply-chain integrity for the runtime itself.
  • Auditable in the open.Apache-2.0, a published threat model, fuzzed in CI — nothing to take on faith.

What stays with you

  • Human oversightof what the model produces and how it’s acted on.
  • Risk management & conformity assessmentfor the system you build on top.
  • Transparencyto the people your system affects.
  • Lawful basis & data governancefor the inputs you feed it.

Palimpsests is regulated-adjacent infrastructure. It carries the runtime obligations — residency, record-keeping, supply-chain integrity — and it does not discharge the ones that belong to how you deploy it.

Get started

One package. No account.

It installs from PyPI and runs offline. Point it at a local GGUF model and the log starts writing itself. The quickstart lives in the README.

$pip install palimpsests

# Apache-2.0 · runs air-gapped · provenance on every release