{"eid":"forgejo","name":"Forgejo and","domain":"forgejo.org","resolved_by":"domain","topics":["ci-cd-runners","storage"],"n_records":2,"best_vorder":0,"review":null,"aliases":["Forgejo and","Forgejo and Gitea Actions (self-hosted)","Gitea / Forgejo self-hosted with any S3 LFS backend","forgejo.org"],"records":[{"rid":"ci-cd-runners/forgejo-gitea-actions","card":{"rid":"ci-cd-runners/forgejo-gitea-actions","eid":"forgejo","topic":"ci-cd-runners","slug":"forgejo-gitea-actions","provider":"Forgejo and Gitea Actions (self-hosted)","url":"https://forgejo.org/docs/latest/user/actions/","domain":"forgejo.org","category":"CI software","tier":null,"verdict":"qualifies","vorder":0,"grp":"usable","confidence":"documented","binding":"none","identity_kind":"anonymous","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":"git,cli","egress_metered":0,"per_object_bytes":null,"retention_days":null,"verified_at":"2026-10-22T03:05:00.000Z","verified_basis":"live","checked_on":"2026-10-23","stale_on":"2026-11-22","n_evidence":2,"usd_month":null,"usd_per_tb_month":null,"summary":"MIT for Gitea and GPL for Forgejo, with a GitHub-Actions-compatible workflow syntax; unlimited on your own runners","duplicate_of":null,"n_unknown":0},"record":{"topic":"ci-cd-runners","slug":"forgejo-gitea-actions","provider":"Forgejo and Gitea Actions (self-hosted)","url":"https://forgejo.org/docs/latest/user/actions/","category":"CI software","free_tier":{"stated":"MIT for Gitea and GPL for Forgejo, with a GitHub-Actions-compatible workflow syntax; unlimited on your own runners","unit":"unlimited","source_url":"https://forgejo.org/docs/latest/user/actions/","read_on":"2026-10-22","metered_on":"none"},"per_object_cap":{"stated":"no cap from the software; the runner host is the ceiling","bytes":null},"retention":{"stated":"whatever the runner host retains","days":null,"source_url":"https://forgejo.org/docs/latest/user/actions/"},"egress":{"terms":"whatever the runner host charges","metered":false,"free_allowance":null,"price_per_tb":null,"source_url":"https://forgejo.org/docs/latest/user/actions/"},"interface":["git","cli"],"interface_detail":"a .forgejo/workflows or .gitea/workflows YAML; the act runner; a compatible subset of GitHub Actions","tooling":"the forgejo or act runner binary; docker or a host backend","chaining":"Actions syntax without GitHub, which lets a workflow move between a free hosted runner and your own machine without a rewrite","limits":[{"kind":"per-object-cap","value":"no cap from the software; a documented subset of GitHub Actions is supported and the rest fails at parse time","source":"https://forgejo.org/docs/latest/user/actions/"}],"binding":"none","identity_cost":{"kind":"anonymous","detail":"the software needs no account","country":null},"reliability_note":"compatibility with GitHub Actions is a documented subset, so a workflow that runs on GitHub may need edits","confidence":"documented","confidence_note":"the Forgejo Actions user guide was read today; Codeberg's hosted instance runs the same software.","evidence":[{"url":"https://forgejo.org/docs/latest/user/actions/","date":"2026-10-22","proved":"Forgejo Actions is GitHub-Actions-compatible with documented differences; runners are user-provided"},{"url":"https://codeberg.org/actions/meta","date":"2026-10-22","proved":"Codeberg's hosted runners use ghcr.io/catthehacker/ubuntu:act-latest to provide a compatibility level with GitHub Actions, and Docker-in-Docker is not officially supported"}],"verdict":"qualifies","verified_at":"2026-10-22T03:05:00.000Z","price_per_tb_month":null,"notes":"The compatibility is the value and the subset is the cost. A workflow that depends on a GitHub-only action does not run."},"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-object-cap","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[],"history":[],"drift":[]},{"rid":"storage/gitea-forgejo-self-hosted-with-any-s3-lfs-backend","card":{"rid":"storage/gitea-forgejo-self-hosted-with-any-s3-lfs-backend","eid":"forgejo","topic":"storage","slug":"gitea-forgejo-self-hosted-with-any-s3-lfs-backend","provider":"Gitea / Forgejo self-hosted with any S3 LFS backend","url":"https://forgejo.org/docs/latest/admin/advanced/quota/","domain":"forgejo.org","category":"paas","tier":null,"verdict":"qualifies-with-caveat","vorder":1,"grp":"usable","confidence":"reported","binding":"per-object-cap","identity_kind":"email","identity_basis":"defaulted","needs_card":null,"needs_phone":null,"needs_id":null,"needs_institution":null,"country":null,"crypto":null,"interfaces":"s3-compatible,rest,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":2,"usd_month":null,"usd_per_tb_month":null,"summary":"Unlimited by default: `quota.default.TOTAL = -1` means unlimited, and the soft-quota feature is 'currently not yet enabled by default'. You supply the disk/o...","duplicate_of":null,"n_unknown":6},"record":{"topic":"storage","slug":"gitea-forgejo-self-hosted-with-any-s3-lfs-backend","provider":"Gitea / Forgejo self-hosted with any S3 LFS backend","url":"https://forgejo.org/docs/latest/admin/advanced/quota/","category":"paas","free_tier":{"stated":"Unlimited by default: `quota.default.TOTAL = -1` means unlimited, and the soft-quota feature is 'currently not yet enabled by default'. You supply the disk/object store, so bytes = your infrastructure.","unit":"unlimited","metered_on":"stored-bytes","source_url":"https://forgejo.org/docs/latest/admin/advanced/quota/","read_on":"2026-10-21","notes":null},"per_object_cap":{"stated":"No per-file cap unless you set one","source_url":"https://forgejo.org/docs/latest/admin/advanced/quota/","notes":"not stated"},"retention":{"stated":"not stated","source_url":"https://forgejo.org/docs/latest/admin/advanced/quota/","notes":"not stated"},"egress":{"terms":"Yours to pay for — unless the LFS backend is one of the free S3 endpoints (HF buckets, IA), in which case egress is the backend's and is free/CDN.","metered":false},"interface":["s3-compatible","rest","git"],"interface_detail":"git","tooling":"Gitea/Forgejo binaries (single Go binary), `git-lfs` client, S3-compatible LFS storage config (`[lfs] STORAGE_TYPE=minio`). REST API + Swagger for full automation. Gitea Cloud offers a 30-day trial, not free.","chaining":"The pattern that makes 500 GB+ real: self-host the forge on a free-tier VM (or any always-on box) and set LFS storage to a free S3 endpoint. The forge holds ~metadata only; the bytes never touch your disk. Gitea's `LFS_MAX_FILE_SIZE`/`LFS_START_SERVER` are config, not policy.","limits":[{"kind":"per-object-cap","value":"No per-file cap unless you set one","source":"https://forgejo.org/docs/latest/admin/advanced/quota/"}],"limits_note":"Soft-quota only: 'Forgejo checks the quota usage only before an action is executed, but it will allow a started action to complete' — so it can be overshot. No per-file cap unless you set one.","identity_cost":{"kind":"email","detail":null,"country":null},"reliability_note":"Quota feature is explicitly 'still in development' with 'little support for early prevention of operations in the UI'. Self-hosted means a dead VM = dead forge, but the LFS blobs survive in the object store.","confidence":"reported","confidence_note":"One page read moves it to documented.","evidence":[{"url":"https://forgejo.org/docs/latest/admin/advanced/quota/","date":"2026-10-21","proved":"'quota.default.TOTAL is -1 (unlimited) by default'; soft-quota semantics quoted"},{"url":"https://forgejo.org/docs/latest/admin/setup/storage/","date":"2026-10-21","proved":"storage backend configuration for LFS/attachments"}],"verdict":"qualifies-with-caveat","verified_at":"2026-10-21T00:00:00.000Z","notes":"Unlimited by default: `quota.default.TOTAL = -1` means unlimited, and the soft-quota feature is 'currently not yet enabled by default'. You supply the disk/object store, so bytes = your infrastructure.","extras":{},"binding":"per-object-cap","binding_note":"the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota"},"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-object-cap","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"}],"unknown":[["$.free_tier.notes","process"],["$.identity_cost.detail","defaulted"],["$.identity_cost.kind","identity-defaulted"],["$.per_object_cap.notes","not-extracted"],["$.retention.notes","not-extracted"],["$.retention.stated","not-extracted"]],"history":[],"drift":[]}]}