froe
A Rust implementation of Apache Jackrabbit Oak's segment-tar ("TarMK")
storage format — the repository format used by Apache Jackrabbit Oak and
Adobe Experience Manager.
This crate opens a segment store directly from disk, without a running Oak
instance. The reading API (store, content, tooling) is read-only
and safe against a live repository: it neither takes the lock nor writes.
Like Oak, it memory-maps archives and relies on the store's
never-modify-in-place file protocol; an external process that truncates or
rewrites an archive would disturb both froe and a running Oak instance.
The mutating writing API (writer) covers commits, checkpoints, applying
cleanup, compaction, backup, restore, and journal recovery. It takes the
exclusive repository lock and produces stores byte-for-byte compatible with
Oak (apart from the documented extreme-subnormal double_to_text rendering
residue), so a subsequent AEM start consumes the result cleanly. Planning
cleanup is the read-only exception and never takes the lock. Run mutations
only against a stopped repository. The writer currently requires a Unix
operating-system entropy source and therefore refuses to open on Windows. If
repo.lock is absent, opening any writer also requires same-directory
hard-link and durable directory-fsync support to publish the new mode-0600
lock safely; an unsupported filesystem fails closed.
The writing API is beta: it is verified against byte-exact specifications extracted from the Oak sources and an extensive test suite, but has not yet been validated end-to-end against stores produced by — or consumed by — a real Oak/AEM instance. Until that interoperability round-trip lands, take a copy of your repository before writing to data you care about. The reading API carries no such caveat.
See the workspace repository for the complete feature map and storage
format documentation, including the cleanup safety guide, and the froe-cli
crate for the command-line interface.
Licensed under the Apache License, Version 2.0.