···1616[Hetzner](https://www.hetzner.com/storage/object-storage), and
1717[OVH](https://www.ovhcloud.com/en/public-cloud/object-storage/).
18181919+## Install
2020+2121+### Homebrew (recommended)
2222+2323+```bash
2424+brew install tijs/tap/attic
2525+```
2626+2727+### From source (requires Deno v2+)
2828+2929+```bash
3030+git clone https://github.com/tijs/attic.git
3131+cd attic
3232+deno task install
3333+```
3434+3535+This installs `attic` to `~/.deno/bin/`. Make sure that's on your PATH.
3636+1937## Prerequisites
20382121-- [Deno](https://deno.land/) (v2+)
2239- The [ladder](https://github.com/tijs/ladder) binary. Ladder is a separate
2340 Swift tool that uses PhotoKit to export original photo/video files from the
2441 Photos library.
···3047Run the interactive setup:
31483249```bash
3333-deno task init
5050+attic init
3451```
35523653This prompts for your S3 endpoint, region, bucket name, and credentials. Config
···48654966## Commands
50675151-All commands are run via `deno task`:
5252-5368### init
54695570Interactive setup — configure S3 connection and store credentials.
56715772```bash
5858-deno task init
7373+attic init
5974```
60756176### scan
···6479vs iCloud-only).
65806681```bash
6767-deno task scan
8282+attic scan
6883```
69847085### status
···7388assets are backed up vs pending.
74897590```bash
7676-deno task status
9191+attic status
7792```
78937994### backup
···8196Export pending assets via ladder and upload originals + metadata JSON to S3.
82978398```bash
8484-deno task backup
9999+attic backup
85100```
8610187102| Flag | Description |
···99114Verify backup integrity by checking S3 objects against the manifest.
100115101116```bash
102102-deno task verify
117117+attic verify
103118```
104119105120| Flag | Description |
···114129original files. Useful after adding new metadata fields or enrichments.
115130116131```bash
117117-deno task refresh-metadata
132132+attic refresh-metadata
118133```
119134120135| Flag | Description |
···149164`scan` and `status` work without config (they only read Photos.sqlite). `backup`
150165and `verify` require config and will tell you to run `attic init` if it's
151166missing.
167167+168168+## Development
169169+170170+If you're working on attic itself, use `deno task` to run commands from source:
171171+172172+```bash
173173+deno task check # Type check
174174+deno task test # Run tests
175175+deno task lint # Lint
176176+deno task fmt # Format
177177+deno task compile # Build standalone binary
178178+```
152179153180## Testing
154181