indice

Web archive server · written in Rust

Free & open source · AGPL-3.0

indiceA 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 →
single binarymacOS · Linux · Windowsno databaseruns offline

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

indice homepage: search box, browse-by-year and top-sites, and a collection card
Search & browse. The front page: search, browse by year or site, and collection cards.
A collection page rendered as a finding aid with creator, dates, rights, subjects, and crawl provenance
Finding aids. Each collection reads like an archival description, with fixity and crawl provenance stored as Markdown files you can edit.
Search results with a faceted sidebar and hit-highlighted snippets
Slice and dice. Facets for collection, year, site, type, and language beside hit-highlighted results.
The webrecorder.net homepage replaying inside indice via ReplayWeb.page
Replay in place. webrecorder.net replaying inside indice's chrome.
The replay viewer with a Notes panel: a passage is highlighted in the replayed page and two Markdown notes are listed beside it
Notes on the record. Signed-in readers annotate a whole page or a selected passage; the note highlights in place, and is public to read and searchable.

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 →
indice in management mode: a clay-accented app bar with a Manage chip and a New collection button
Workroom mode. The clay accent and “Manage” chip signal you're editing the archive.

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 page

Latest release ↗ unpack and run; a sample archive is included.

Cargo

cargo install --git \
  https://github.com/edsu/indice \
  --locked indice

Needs a Rust toolchain.

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.