The runtime · Liberate
The data is still in there. Get it out — with proof.
Liberate converts legacy application files into SQLite, CSV, JSON, and searchable documents — packaged as verified bundles you can check, question, and hand over.
Reviving a dead application is one problem; the other is the data locked inside its files — customer tables in DBF, ledgers in an old Access MDB, decades of spreadsheets in BIFF-era XLS. Liberate takes those files and converts them into modern, queryable formats: SQLite, CSV, JSON, and searchable documents. Perslis/GhostBridge acquires the files; Liberate extracts, analyzes, answers, and delivers — without starting or controlling a VM. Every bundle it produces carries hash manifests and a receipt, so what you hand over can be independently verified. And you can ask questions of the recovered data locally, with AI strictly opt-in.
What it converts
The parsers cover the formats where business data actually got stranded:
Databases
Jet 3/4 Access MDB and DBF/FoxPro tables become SQLite databases and clean exports.
Spreadsheets
BIFF5/8 Excel XLS workbooks — the pre-XML era — extracted with canonical values in JSON and SQLite.
Config & text
CSV/TSV, INI, registry exports, and fixed-width text files, turned into structured, searchable data.
A real-file corpus records exact coverage per format. This is not a claim of universal format compatibility — the boundary of what is supported is documented, not implied.
One command: recover
$ liberate recover --source ~/restored/AcmeApp --system acme --job ~/acme-job
recover runs the whole job in one pass: it inventories the selected files, extracts them, builds the analyst report and search index, and writes a verified bundle.zip into a new job directory. It stays local throughout. A --strict flag refuses completion when extraction has quality flags, and the job receipt records both completion and data quality — a bundle never looks cleaner than it is.
Verified bundles, not loose exports
- Hash manifests: every bundle includes hashes of the database, exports, and documents; the analysis, report, and search index carry a separate seal.
- Receipts: the acquisition record, source inventory, and observation evidence travel inside the bundle —
liberate verify-jobbinds them to the final archive. - Fail-closed consumers: CLI consumers reject changed or unsafe artifacts;
verify --strictalso rejects skipped sources or quality flags.
Ask the data — local first, AI strictly opt-in
$ liberate ask ~/acme-job/bundle "German customers" --no-ai
Questions are answered from the recovered data itself — local supporting excerpts, grounded in verified rows. AI is opt-in only: nothing leaves the machine unless you pass --allow-ai, and even then only bounded, selected evidence is sent, with read-only, bounded SQL underneath. --no-ai always overrides. The default is a recovery tool that works entirely on your machine.
An honest boundary
Liberate is at version 0.3.0 — a pilot-grade, private, single-organization CLI. Enterprise acceptance remains gated on qualification evidence and deployment gates. In plain terms, this is not a claim of:
- Universal format compatibility — the supported formats are the ones listed, with coverage recorded against a real-file corpus.
- Multi-user hosting — it is a single-organization CLI, not a hosted service.
- Certification or an SLA — neither exists yet, and we won't imply otherwise.
That boundary is the same discipline the rest of Perslis runs on: label what is proven, name what isn't.
More from Perslis
Liberate helps teams make old data useful again, with results they can inspect and share. Explore the public Perslis papers and project guides to learn more about our work with existing systems. Explore the public research library →