Web archive server · written in Rust
Free & open source · AGPL-3.0indiceA reading room for web archives.
indice turns your collection of WACZ files into a searchable archive: full-text search with faceted, temporal browsing; the provenance of every crawl; and in-browser replay using Webrecorder's ReplayWeb.page. Import from your file system, cloud storage, Browsertrix or Archive-It, and annotate the pages you find. It runs as one self-contained binary, on your laptop or for a multiuser organization.
brew install edsu/indice/indiceor a prebuilt binary, Docker, or cargo →What you get
Full-text search, faceted & temporal
Hit-highlighted snippets across page text, titles, and metadata; then narrow by collection, site, date, type, or language, with a month timeline for moving through time.
Provenance up front
See how each crawl was made, including software, operator, dates, seeds, page counts.
Faithful in-browser replay
Archived pages replay client-side, in the reader's browser.
Replay is entirely Webrecorder's work (ReplayWeb.page / wabac.js).
Import from Browsertrix & Archive-It
Bring collections in from Browsertrix or Archive-It, or index any WACZ over HTTP, and their descriptive metadata goes into a finding aid. See the sources ↓
Careful with archived code
Replayed pages run their own JavaScript, so indice replays them on an origin of their own, where that script can't act as the person reading. Changes need a sign-in and a role you grant. The threat model →
Annotations on the record
Signed-in users attach Markdown notes to a whole page or a selected passage; they're public to read, highlight in place on replay, and turn up in search. How annotations work →
Named for your archive
Give the archive its own name and a line for the homepage saying what it holds, in one small config file. Site settings →
Draft a description with your own model
Ask a language model for a first draft of a collection's description, subjects and dates, for a curator to edit. Use any OpenAI-compatible model you configure, local or hosted. Before anything is sent, curators see which service will receive it and the exact pages and prompt, and the finding aid records which fields began as a draft. Drafting descriptions →
The reading room





How it works at the command line
Index
Point indice at local or remote WACZ files. It builds an embedded full-text index and reads each crawl's provenance.
indice index --collection "Example" *.wacz
Serve
Run the single binary. It serves the read-only reading room over HTTP.
indice serve
Search & replay
Readers search with facets and a timeline, then open any page and watch it replay in their browser.
Bring your archives
Works with the archives you already have.
Browsertrix
Browse your Browsertrix org and import collections and crawls in a few clicks, or index and replay themfrom Browsertrix's cloud storage, without downloading them. indice serves the same ReplayWeb.page engine Browsertrix uses, so pages replay the same way in both.
Archive-It
Pull a collection's WARCs from Archive-It over WASAPI; indice builds the WACZ, indexes it, and carries the descriptive metadata into a finding aid.
Cloud & remote storage
Point indice at a WACZ hosted over HTTP(S), in object storage, or behind a presigned URL, and it indexes and replays it with byte-range reads, without needing to download the entire file.
Built for range
One tool, laptop to institution.
indice ships as a single self-contained binary built on the embedded Tantivy search engine library, so you have no Solr, Elasticsearch, or separate database to keep online. The setup that indexes a handful of your own WACZ files on a laptop is meant to scale to institution-sized collections, without the infrastructure of a large web archive.
Small & private
Index a few crawls on your laptop, offline, with no hosted service involved.
One binary, no database. WACZ files index in seconds, and search results return in milliseconds. Try it →
Scaled up
Serve an institutional reading room behind a proxy, with the same single binary.
A million pages take about 1.5 GB of index on disk. How it scales →
Curate in the workroom
Turn the reading room into a workroom.
Run in management mode or behind an SSO provider and a manila band marks write mode: add archives, import from Browsertrix or Archive-It, and write finding aids in place, without the command line.
Management docs →
Why “indice”?
An indice is a sign that points beyond itself. Suzanne Briet argued that a wild antelope becomes a document once it is captured, catalogued, and placed in a zoo, an
“indice concret ou symbolique, conservé ou enregistré.”Suzanne Briet, Qu'est-ce que la documentation ? (1951)
Charles Sanders Peirce used index for the same family of sign: one bound to its object by a real connection, like smoke to fire. A web capture is a trace of that kind, connected to a moment of the live web. indice also builds a full-text index over the archives it serves.
Install
Homebrew (macOS / Linux)
brew install edsu/indice/indice
brew upgrade indice tracks new releases.
Prebuilt binary
# macOS · Linux · Windows
Download from the releases pageLatest release ↗ unpack and run; a sample archive is included.
Docker
docker run -p 8080:8080 \ -v indice-data:/data \ ghcr.io/edsu/indice:latest
Or the compose stack with automatic HTTPS.
Colophon
How indice was made.
indice has been built in the open over the course of 2026, in small increments, with substantial help from Claude Code, Anthropic's AI coding assistant. It is the work of a single developer working alongside a language model. It is alpha software: expect rough edges. Careful technical review is welcome.
It builds on the web archiving community's work. Replay is entirely Webrecorder's ReplayWeb.page and wabac.js; the WACZ format, Browsertrix, and Archive-It's WASAPI shape how archives come in. Its framing is borrowed from documentation theory: Suzanne Briet's antelope, Peirce's index, and from the archival tradition of the finding aid.
