{"eid":"branchable","name":"git-annex","domain":"branchable.com","resolved_by":"domain","topics":["storage"],"n_records":4,"best_vorder":0,"review":null,"aliases":["branchable.com","git-annex","git-annex S3 special remote (backend-agnostic)","git-annex bup / ddar special remotes","git-annex git-lfs special remote (annex over any LFS host)","git-annex rclone special remote (built into annex since 2023)"],"records":[{"rid":"storage/git-annex-rclone-special-remote","card":{"rid":"storage/git-annex-rclone-special-remote","eid":"branchable","topic":"storage","slug":"git-annex-rclone-special-remote","provider":"git-annex rclone special remote (built into annex since 2023)","url":"https://git-annex.branchable.com/special_remotes/rclone/","domain":"branchable.com","category":"registry","tier":null,"verdict":"qualifies","vorder":0,"grp":"usable","confidence":"reported","binding":"per-ip-shaping","identity_kind":"institution","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":1,"country":null,"crypto":null,"interfaces":"rest,git,rclone","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":3,"usd_month":null,"usd_per_tb_month":null,"summary":"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 Dr...","duplicate_of":null,"n_unknown":5},"record":{"topic":"storage","slug":"git-annex-rclone-special-remote","provider":"git-annex rclone special remote (built into annex since 2023)","url":"https://git-annex.branchable.com/special_remotes/rclone/","category":"registry","free_tier":{"stated":"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","source_url":"https://git-annex.branchable.com/special_remotes/rclone/","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not stated","source_url":"https://git-annex.branchable.com/special_remotes/rclone/","notes":"not stated"},"retention":{"stated":"not stated","source_url":"https://git-annex.branchable.com/special_remotes/rclone/","notes":"not stated"},"egress":{"terms":"rclone throttles/retries but does not pay for egress.","metered":false},"interface":["rest","git","rclone"],"interface_detail":"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.","chaining":"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.","limits":[{"kind":"per-ip-shaping","value":"750 GB/day","source":"https://git-annex.branchable.com/special_remotes/rclone/"}],"limits_note":"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.","identity_cost":{"kind":"institution","detail":"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","country":null},"reliability_note":"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.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://git-annex.branchable.com/special_remotes/rclone/","date":"2026-10-21","proved":"'With a recent version of rclone and git-annex, it is not necessary to install anything else, just use `git-annex initremote type=rclone ...`'"},{"url":"https://rclone.org/commands/rclone_gitannex/","date":"2026-10-21","proved":"the gitannex bridge command exists in rclone proper"},{"url":"https://rclone.org/overview/","date":"2026-10-21","proved":"backend feature matrix (Internet Archive, Drive, OneDrive, Box, Mega, WebDAV, SFTP, S3 all Tier 1-3 with R/W)"}],"verdict":"qualifies","verified_at":"2026-10-21T00:00:00.000Z","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.","extras":{},"binding":"per-ip-shaping","binding_note":"one stream is shaped, and a user's throughput is the shaped rate times the number of streams"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"},{"path":"$.limits[0].value","kind":"limit:per-ip-shaping","num":750.0,"unit":"GB","per":"day","currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.free_tier.notes","process"],["$.per_object_cap.notes","not-extracted"],["$.per_object_cap.stated","not-extracted"],["$.retention.notes","not-extracted"],["$.retention.stated","not-extracted"]],"history":[],"drift":[]},{"rid":"storage/git-annex-s3-special-remote","card":{"rid":"storage/git-annex-s3-special-remote","eid":"branchable","topic":"storage","slug":"git-annex-s3-special-remote","provider":"git-annex S3 special remote (backend-agnostic)","url":"https://git-annex.branchable.com/special_remotes/S3/","domain":"branchable.com","category":"registry","tier":null,"verdict":"qualifies","vorder":0,"grp":"usable","confidence":"reported","binding":"none","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":"s3,git","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":4,"usd_month":null,"usd_per_tb_month":null,"summary":"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 s...","duplicate_of":null,"n_unknown":8},"record":{"topic":"storage","slug":"git-annex-s3-special-remote","provider":"git-annex S3 special remote (backend-agnostic)","url":"https://git-annex.branchable.com/special_remotes/S3/","category":"registry","free_tier":{"stated":"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","source_url":"https://git-annex.branchable.com/special_remotes/S3/","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not stated","source_url":"https://git-annex.branchable.com/special_remotes/S3/","notes":"not stated"},"retention":{"stated":"not stated","source_url":"https://git-annex.branchable.com/special_remotes/S3/","notes":"not stated"},"egress":{"terms":"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.","metered":false},"interface":["s3","git"],"interface_detail":"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.","chaining":"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.","limits":[],"limits_note":"Depends on backend. Practical: `partsize=1GiB` needed for multipart; parts under 100 MiB are rejected by S3; `versioning=yes` means git-annex cannot drop content. No delete-resume; interrupted uploads restart. For IA specifically, uploads to the test collection vanish after 30 days and public visibility lags.","identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"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.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://git-annex.branchable.com/special_remotes/S3/","date":"2026-10-21","proved":"full parameter list including `host`, `requeststyle=path`, `publicurl`, `signature=anonymous`, `chunk`, `fileprefix`"},{"url":"https://git-annex.branchable.com/tips/Internet_Archive_via_S3/","date":"2026-10-21","proved":"'git annex initremote archive type=S3 protocol=https host=s3.us.archive.org bucket=...' with x-archive-meta headers"},{"url":"https://git-annex.branchable.com/special_remotes/","date":"2026-10-21","proved":"built-in list: S3, rclone, webdav, rsync, directory, bup, ddar, git-lfs, httpalso, gcrypt"},{"url":null,"date":"2026-10-21","proved":"probe: TCP connect to s3.us.archive.org:443 -> timeout after 21s (backend flaky, tooling fine)"}],"verdict":"qualifies","verified_at":"2026-10-21T00:00:00.000Z","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.","extras":{},"binding":"none","binding_note":"no constraint in the record binds at this scale; the record carries no limit of a kind the vocabulary names"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.evidence[3].url","private-url"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.per_object_cap.notes","not-extracted"],["$.per_object_cap.stated","not-extracted"],["$.retention.notes","not-extracted"],["$.retention.stated","not-extracted"]],"history":[],"drift":[]},{"rid":"storage/git-annex-git-lfs-special-remote","card":{"rid":"storage/git-annex-git-lfs-special-remote","eid":"branchable","topic":"storage","slug":"git-annex-git-lfs-special-remote","provider":"git-annex git-lfs special remote (annex over any LFS host)","url":"https://git-annex.branchable.com/special_remotes/git-lfs/","domain":"branchable.com","category":"registry","tier":null,"verdict":"qualifies-with-caveat","vorder":1,"grp":"usable","confidence":"reported","binding":"none","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":"git","egress_metered":null,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":2,"usd_month":null,"usd_per_tb_month":null,"summary":"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 app...","duplicate_of":null,"n_unknown":8},"record":{"topic":"storage","slug":"git-annex-git-lfs-special-remote","provider":"git-annex git-lfs special remote (annex over any LFS host)","url":"https://git-annex.branchable.com/special_remotes/git-lfs/","category":"registry","free_tier":{"stated":"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","source_url":"https://git-annex.branchable.com/special_remotes/git-lfs/","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not stated","source_url":"https://git-annex.branchable.com/special_remotes/git-lfs/","notes":"not stated"},"retention":{"stated":"| 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","source_url":"https://git-annex.branchable.com/special_remotes/git-lfs/","notes":"not stated"},"egress":{"terms":null,"metered":false},"interface":["git"],"interface_detail":"git","tooling":"`git annex initremote lfstest type=git-lfs url=... encryption=shared`. Supports gcrypt:: URL prefix for encrypting the git side too.","chaining":"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.","limits":[],"limits_note":"Hard, documented limitations: 'The git-lfs protocol does not support deleting content, so git-annex cannot delete anything from a git-lfs special remote'; no upload resume; 'git-annex doesn't do batching. This may cause it to fall afoul of rate limiting of git-lfs servers' — which directly collides with GitLab's 1000 req/min LFS limit. Requires SHA256 backend for efficiency.","identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"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.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://git-annex.branchable.com/special_remotes/git-lfs/","date":"2026-10-21","proved":"limitations section quoted above"},{"url":"https://git-annex.branchable.com/special_remotes/git-lfs/","date":"2026-10-21","proved":"example: 'git annex initremote lfstest type=git-lfs url=gcrypt::[address removed]:username/somerepo.git encryption=shared'"}],"verdict":"qualifies-with-caveat","verified_at":"2026-10-21T00:00:00.000Z","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.","extras":{},"binding":"none","binding_note":"no constraint in the record binds at this scale; the record carries no limit of a kind the vocabulary names"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.egress.metered","egress-unknown"],["$.egress.terms","withheld"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.per_object_cap.notes","not-extracted"],["$.per_object_cap.stated","not-extracted"],["$.retention.notes","not-extracted"]],"history":[],"drift":[]},{"rid":"storage/git-annex-bup-ddar-special-remotes","card":{"rid":"storage/git-annex-bup-ddar-special-remotes","eid":"branchable","topic":"storage","slug":"git-annex-bup-ddar-special-remotes","provider":"git-annex bup / ddar special remotes","url":"https://git-annex.branchable.com/special_remotes/bup/","domain":"branchable.com","category":"rejected-provider","tier":null,"verdict":"fails-quota","vorder":6,"grp":"rejected","confidence":"reported","binding":"none","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":null,"egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-21T00:00:00.000Z","verified_basis":"inherited","checked_on":"2026-10-21","stale_on":"2026-11-04","n_evidence":2,"usd_month":null,"usd_per_tb_month":null,"summary":"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 acce...","duplicate_of":null,"n_unknown":15},"record":{"topic":"storage","slug":"git-annex-bup-ddar-special-remotes","provider":"git-annex bup / ddar special remotes","url":"https://git-annex.branchable.com/special_remotes/bup/","category":"rejected-provider","free_tier":{"stated":"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","source_url":"https://git-annex.branchable.com/special_remotes/bup/","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"not recorded","bytes":null,"source_url":"https://git-annex.branchable.com/special_remotes/bup/","notes":"not recorded"},"retention":{"stated":"not recorded","days":null,"source_url":"https://git-annex.branchable.com/special_remotes/bup/","notes":null},"egress":{"terms":"not recorded","metered":false},"interface":["unknown"],"interface_detail":null,"tooling":"not recorded","chaining":"not recorded","limits":[],"limits_note":null,"identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"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","confidence":"reported","confidence_note":null,"evidence":[{"url":"https://git-annex.branchable.com/special_remotes/bup/","date":"2026-10-21","proved":"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"},{"url":"https://git-annex.branchable.com/special_remotes/ddar/","date":"2026-10-21","proved":"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"}],"verdict":"fails-quota","verified_at":"2026-10-21T00:00:00.000Z","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","extras":{"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"}},"binding":"none","binding_note":"no constraint of a named kind was recorded; the verdict rests on the quota sentence rather than on a named limit"},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.chaining","not-recorded"],["$.confidence_note","withheld"],["$.egress.terms","not-recorded"],["$.extras.dead_end.retry_when","process"],["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.interface","interface-unknown"],["$.interface_detail","withheld"],["$.limits_note","process"],["$.per_object_cap.notes","not-recorded"],["$.per_object_cap.stated","not-recorded"],["$.retention.notes","process"],["$.retention.stated","not-recorded"],["$.tooling","not-recorded"]],"history":[],"drift":[]}]}