Metadata-Version: 2.4
Name: wayback-restorator
Version: 0.1.1
Summary: Concurrent, resumable Wayback Machine website restoration worker
License-Expression: AGPL-3.0-only
Project-URL: Homepage, https://waybackrestorator.dev
Project-URL: Documentation, https://docs.waybackrestorator.dev
Project-URL: Repository, https://gitlab.com/restorator-labs/wayback-restorator
Project-URL: Changelog, https://gitlab.com/restorator-labs/wayback-restorator/-/releases
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiohttp==3.12.15
Requires-Dist: beautifulsoup4==4.13.5
Requires-Dist: httpx==0.28.1
Requires-Dist: lxml==6.0.1
Provides-Extra: test
Requires-Dist: pytest==8.4.2; extra == "test"
Requires-Dist: pytest-asyncio==1.2.0; extra == "test"
Dynamic: license-file

<p align="center"><img src="https://gitlab.com/restorator-labs/wayback-restorator/-/raw/main/frontend/public/brand/lockup-light.svg" alt="Wayback Restorator" width="360"></p>

# Wayback Restorator

**Turn a Wayback Machine capture into a portable static website ZIP.** Restore
archived pages and assets from your terminal or a local dashboard, with a report
of missing captures and resumable jobs.

[![PyPI](https://img.shields.io/pypi/v/wayback-restorator)](https://pypi.org/project/wayback-restorator/)
[![Python](https://img.shields.io/pypi/pyversions/wayback-restorator)](https://pypi.org/project/wayback-restorator/)
[![License: AGPLv3](https://img.shields.io/badge/license-AGPLv3-blue.svg)](https://gitlab.com/restorator-labs/wayback-restorator/-/blob/main/LICENSE)
[![Tests](https://gitlab.com/restorator-labs/wayback-restorator/badges/main/pipeline.svg)](https://gitlab.com/restorator-labs/wayback-restorator/-/pipelines)

![Local dashboard showing a completed example.com restoration](https://gitlab.com/restorator-labs/wayback-restorator/-/raw/main/docs/public/images/web-ui.png)

## Install

Requires Python 3.11 or newer:

```sh
pipx install wayback-restorator
# or
uv tool install wayback-restorator
```

Or run the Docker image without installing Python:

```sh
mkdir -p data
docker run --rm -it --user "$(id -u):$(id -g)" -v "$PWD/data:/app/data" \
  registry.gitlab.com/restorator-labs/wayback-restorator restore '<replay URL>'
```

## Usage

### Web dashboard

```sh
wayback-restorator web
```

Open [localhost:8080](http://localhost:8080), paste an exact Wayback replay URL,
and download the finished ZIP. The dashboard runs on your machine, bound to
`127.0.0.1` by default.

### Restore from the terminal

```sh
wayback-restorator restore 'https://web.archive.org/web/20260925084419/https://example.com/'
```

Follow the progress in your terminal. Completed jobs print the archive and
report paths in `data/output/jobs/<job-id>/`. Run
`wayback-restorator restore --help` for all options.

## What it does

- Finds archived pages and assets using Wayback CDX, falling back to exact replay
  when necessary, and downloads them with bounded concurrency and retries.
- Rewrites HTML and CSS references to local paths and records missing captures
  instead of silently treating them as restored.
- Saves resumable crawl state and publishes a validated static ZIP. Static or
  server-rendered sites work best; client-rendered routes, forms, authenticated
  pages, and resources never archived may be incomplete.

<details><summary>Mobile dashboard</summary>

![Mobile dashboard](https://gitlab.com/restorator-labs/wayback-restorator/-/raw/main/docs/public/images/web-ui-mobile.png)

</details>

## Documentation

Read the full documentation at
[docs.waybackrestorator.dev](https://docs.waybackrestorator.dev):

| Page | Content |
| --- | --- |
| [Quickstart](https://docs.waybackrestorator.dev/quickstart/) | Install, restore a capture, and open the result |
| [Dashboard](https://docs.waybackrestorator.dev/dashboard/) | Queue jobs, follow progress, and download ZIPs |
| [CLI](https://docs.waybackrestorator.dev/cli/) | Options, named jobs, resuming, automation, and exit codes |
| [Configuration](https://docs.waybackrestorator.dev/configuration/) | Settings, defaults, environment variables, and storage |
| [Results](https://docs.waybackrestorator.dev/results/) | Archive contents, statuses, and report fields |
| [Plugins](https://docs.waybackrestorator.dev/plugins/) | Built-in transformations and custom plugins |
| [Development](https://docs.waybackrestorator.dev/development/) | Run from source and test changes |

## Project

**Wayback Restorator** is independent open-source software and is **not**
affiliated with, endorsed by, or sponsored by the Internet Archive.

Licensed under the GNU Affero General Public License version 3; see
[LICENSE](https://gitlab.com/restorator-labs/wayback-restorator/-/blob/main/LICENSE).
Changes are recorded in
[releases](https://gitlab.com/restorator-labs/wayback-restorator/-/releases).
