git-annex
branchable.com · Storage · 4 records · JSON
- git-annex rclone special remote (built into annex since 2023) Storage★ qualifiesinstitutionno cardRper-ip-shaping
- git-annex S3 special remote (backend-agnostic) Storage★ qualifiesemail?card?R
- git-annex git-lfs special remote (annex over any LFS host) Storagecaveatemail?card?R
- git-annex bup / ddar special remotes Storagefails: quotaemail?card?R
git-annex rclone special remote (built into annex since 2023) Storage
★ qualifiesinstitutionno cardRper-ip-shaping
| Free tier | N/A — front-end to rclone's ~70 backends, so it inherits every free tier already catalogued by the other C-slots. The docs' own list (still current) names Drive, OneDrive, Dropbox, Mega, pCloud, Box, Yandex, Jottacloud, WebDAV, FTP, SFTP, Swift, B2, S3. unit mixed; metered on unstated |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | rclone throttles/retries but does not pay for egress. |
| Identity | institution derived from the record's prose, not from an identity field, and no signup was executed: oning. Per-backend: file size caps, per-day upload quotas, API rate limits all apply unchanged. rclone's Drive backend has its own 750 GB/day upload cap; OneDrive throttles. Encrypte |
| Limits |
Per-backend: file size caps, per-day upload quotas, API rate limits all apply unchanged. rclone's Drive backend has its own 750 GB/day upload cap; OneDrive throttles. Encrypted annex remotes lose rclone's server-side dedupe. |
| Binding | per-ip-shaping one stream is shaped, and a user's throughput is the shaped rate times the number of streams |
| Interface | rest, git, rclone rest |
| Tooling | Two paths: (a) git annex initremote type=rclone ... — native, no extra install, documented via rclone gitannex -h; (b) the older git-annex-remote-rclone bash script (DanielDent, ~300 lines). rclone itself is a single static binary. |
| Composes with | The strongest multiplier in this slot: annex gives you versioning + hash verification + partial clone, rclone gives you ~70 free-tier backends. One annex repo can have a dozen rclone remotes across a dozen free accounts of different providers, with git annex copy --to fanning out. This is literally the 'google-drive-service-account' pattern applied to large-file versioning. |
| Reliability | Solid; the native remote removed the bash-script dependency. The failure mode is per-backend token expiry and drive-level rate limiting, which rclone surfaces as retries rather than data loss. |
| Notes | N/A — front-end to rclone's ~70 backends, so it inherits every free tier already catalogued by the other C-slots. The docs' own list (still current) names Drive, OneDrive, Dropbox, Mega, pCloud, Box, Yandex, Jottacloud, WebDAV, FTP, SFTP, Swift, B2, S3. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
| Parsed numbers |
|
Evidence (3)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | git-annex.branchable.com/special_remotes/rclone/ | 'With a recent version of rclone and git-annex, it is not necessary to install anything else, just use git-annex initremote type=rclone ...' |
| 2026-10-21 | rclone.org/commands/rclone_gitannex/ | the gitannex bridge command exists in rclone proper |
| 2026-10-21 | rclone.org/overview/ | backend feature matrix (Internet Archive, Drive, OneDrive, Box, Mega, WebDAV, SFTP, S3 all Tier 1-3 with R/W) |
Unknown or withheld values (5)
$.free_tier.notesprocess$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted
git-annex S3 special remote (backend-agnostic) Storage
★ qualifiesemail?card?R
| Free tier | N/A by itself — inherits whatever S3-compatible store you point it at. This is the multiplier: any free S3 endpoint (Internet Archive s3.us.archive.org, HF s3.hf.co, Oracle/Cloudflare-adjacent object tiers, MinIO on a free VM) becomes a versioned large-file store with git-annex's own manifest. unit mixed; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | not stated |
| Egress | Two client options matter: publicurl= lets downloads skip the S3 API entirely (bucket policy + plain HTTP GET, hence cacheable/CDN-able), and signature=anonymous allows read-only public access with no credentials at all. |
| Identity | email (placeholder) not published |
| Binding | none no constraint in the record binds at this scale; the record carries no limit of a kind the vocabulary names |
| Interface | s3, git s3 |
| Tooling | git-annex (Haskell, standalone Linux/macOS builds, ~1.5k stars on the mirror). Config via git annex initremote type=S3 host=... bucket=... requeststyle=path. Internet Archive has a documented special mode (host=s3.us.archive.org) where git-annex writes x-archive-meta-* headers and records the public URL, so every annexed file is also fetchable from archive.org with no login. |
| Composes with | One special remote per bucket; fileprefix= lets many remotes share one bucket. The allowance is per account, so each free S3 account adds one bucket. Because git-annex keys content by hash, the S3 side is a dumb blob store. A client can shard the same dataset across several free stores, and git-annex tracks which copy is where (git annex whereis). Chunking (chunk=1MiB) avoids per-object size caps on the backing store. |
| Reliability | Mature and boring — the special remote has existed for over a decade. Failure mode is backend-side (IA's S3 endpoint was unreachable: connect timeout on s3.us.archive.org:443, and archive.org/help/abouts3.txt returned 522 through the proxy), not annex-side. |
| Notes | N/A by itself — inherits whatever S3-compatible store you point it at. This is the multiplier: any free S3 endpoint (Internet Archive s3.us.archive.org, HF s3.hf.co, Oracle/Cloudflare-adjacent object tiers, MinIO on a free VM) becomes a versioned large-file store with git-annex's own manifest. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (4)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | git-annex.branchable.com/special_remotes/S3/ | full parameter list including host, requeststyle=path, publicurl, signature=anonymous, chunk, fileprefix |
| 2026-10-21 | git-annex.branchable.com/tips/Internet_Archive_via_S3/ | 'git annex initremote archive type=S3 protocol=https host=s3.us.archive.org bucket=...' with x-archive-meta headers |
| 2026-10-21 | git-annex.branchable.com/special_remotes/ | built-in list: S3, rclone, webdav, rsync, directory, bup, ddar, git-lfs, httpalso, gcrypt |
| 2026-10-21 | withheld | probe: TCP connect to s3.us.archive.org:443 -> timeout after 21s (backend flaky, tooling fine) |
Unknown or withheld values (8)
$.evidence[3].urlprivate-url$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted
git-annex git-lfs special remote (annex over any LFS host) Storage
caveatemail?card?R
| Free tier | N/A — a protocol adapter. Turns ANY git-lfs server (GitHub, GitLab, Bitbucket, a self-hosted Gitea) into an annex special remote, so the LFS host's quota applies but annex adds hash-verified partial clone and whereis across mirrors.unit mixed; metered on unstated |
|---|---|
| Price | none stated |
| Per-object cap | not stated |
| Retention | | Cannot delete = every mistake is permanent on the LFS side, and the host's month-storage accounting (GitHub) means you keep paying for it in quota |
| Egress | not published |
| Identity | email (placeholder) not published |
| Binding | none no constraint in the record binds at this scale; the record carries no limit of a kind the vocabulary names |
| Interface | git git |
| Tooling | git annex initremote lfstest type=git-lfs url=... encryption=shared. Supports gcrypt:: URL prefix for encrypting the git side too. |
| Composes with | Because annex can hold the same content on several LFS remotes, you can stack the 10 GiB/project GitLab allowance and the 10 GiB GitHub allowance as tiers of one logical dataset, with annex tracking which objects live where. Sharding a 1 TiB corpus across 100 GitLab projects becomes a git annex copy --to loop. |
| Reliability | Cannot delete = every mistake is permanent on the LFS side, and the host's month-storage accounting (GitHub) means you keep paying for it in quota. No batching + per-object request = the exact workload LFS rate limits are designed to stop. |
| Notes | N/A — a protocol adapter. Turns ANY git-lfs server (GitHub, GitLab, Bitbucket, a self-hosted Gitea) into an annex special remote, so the LFS host's quota applies but annex adds hash-verified partial clone and whereis across mirrors. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | git-annex.branchable.com/special_remotes/git-lfs/ | limitations section quoted above |
| 2026-10-21 | git-annex.branchable.com/special_remotes/git-lfs/ | example: 'git annex initremote lfstest type=git-lfs url=gcrypt::[address removed]:username/somerepo.git encryption=shared' |
Unknown or withheld values (8)
$.egress.meteredegress-unknown$.egress.termswithheld$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.per_object_cap.statednot-extracted$.retention.notesnot-extracted
git-annex bup / ddar special remotes Storage
fails: quotaemail?card?R
| Free tier | Both dedupe into a repository you must host yourself and both need full shell access (bup: 'git-annex-shell does not support bup ... you need full shell access to the server'). No hosted fre unit none; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | not recorded |
| Retention | not recorded |
| Egress | not recorded |
| Identity | email (placeholder) not published |
| Binding | none no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit |
| Interface | unknown |
| Tooling | not recorded |
| Composes with | not recorded |
| Reliability | Both dedupe into a repository you must host yourself and both need full shell access (bup: 'git-annex-shell does not support bup ... you need full shell access to the server'). No hosted fre |
| Notes | Both dedupe into a repository you must host yourself and both need full shell access (bup: 'git-annex-shell does not support bup ... you need full shell access to the server'). No hosted fre |
| Evidence rung | reported |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | git-annex.branchable.com/special_remotes/bup/ | Both dedupe into a repository you must host yourself and both need full shell access (bup: 'git-annex-shell does not support bup ... you need full shell access to the server'). No hosted fre |
| 2026-10-21 | git-annex.branchable.com/special_remotes/ddar/ | cited as the basis of the rejection: Both dedupe into a repository you must host yourself and both need full shell access (bup: 'git-annex-shell does not support bup ... you need full shell access to the server'). No hosted fre |
More fields (1)
{
"dead_end": {
"failure_class": "quota",
"why": "Both dedupe into a repository you must host yourself and both need full shell access (bup: 'git-annex-shell does not support bup ... you need full shell access to the server'). No hosted fre",
"retry_when": null,
"first_recorded": "2026-10-21"
}
}Unknown or withheld values (15)
$.chainingnot-recorded$.confidence_notewithheld$.egress.termsnot-recorded$.extras.dead_end.retry_whenprocess$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.interfaceinterface-unknown$.interface_detailwithheld$.limits_noteprocess$.per_object_cap.notesnot-recorded$.per_object_cap.statednot-recorded$.retention.notesprocess$.retention.statednot-recorded$.toolingnot-recorded