{"rid":"compute/codeberg-forgejo-actions","card":{"rid":"compute/codeberg-forgejo-actions","eid":"codeberg","topic":"compute","slug":"codeberg-forgejo-actions","provider":"Codeberg Forgejo Actions","url":"https://codeberg.org/actions/meta","domain":"codeberg.org","category":"CI runner","tier":"Codeberg hosted Forgejo Actions, open alpha, fair use","verdict":"qualifies-with-caveat","vorder":1,"grp":"usable","confidence":"documented","binding":"per-object-cap","identity_kind":"email","identity_basis":"stated","needs_card":0,"needs_phone":0,"needs_id":0,"needs_institution":0,"country":null,"crypto":null,"interfaces":null,"egress_metered":null,"per_object_bytes":null,"retention_days":0,"verified_at":"2026-10-24T04:00:19.000Z","verified_basis":"live","checked_on":"2026-10-25","stale_on":"2026-11-24","n_evidence":11,"usd_month":null,"usd_per_tb_month":null,"summary":"Quoted: 'The following runners are available on Codeberg. The specs are guidelines for how many resources builds are allowed to take at most, but we rely on ...","duplicate_of":null,"n_unknown":9},"record":{"topic":"compute","slug":"codeberg-forgejo-actions","provider":"Codeberg Forgejo Actions","url":"https://codeberg.org/actions/meta","category":"CI runner","free_tier":{"stated":"Quoted: 'The following runners are available on Codeberg. The specs are guidelines for how many resources builds are allowed to take at most, but we rely on \"fair use\".' The table is codeberg-tiny 1 CPU / 2G / 2 min, codeberg-small 2 CPU / 4G / 5 min, codeberg-medium 4 CPU / 8G / 10 min, all amd64. No monthly quota is published: the constraint is a per-job runtime ceiling of 10 minutes on the largest runner, plus a fair-use clause. Quoted: 'Currently, we put strict resource and time constraints on hosted Forgejo Actions runs, because we do not have an approval workflow like in our hosted Woodpecker CI/CD.'","unit":"none","metered_on":"wall-clock","source_url":"https://codeberg.org/actions/meta","read_on":"2026-10-24","notes":"there is no published monthly allowance; the unit of consumption is a job, capped at 10 minutes on the best runner"},"per_object_cap":{"stated":"not applicable","bytes":null,"notes":"the ceiling that matters is the per-job runtime, in limits"},"retention":{"stated":"not stated on the page read: no sentence says how long a runner survives after a job or whether the container is reused. The page grants '2 GB of additional storage for temporary files per container', which implies a per-job container.","days":0,"source_url":"https://codeberg.org/actions/meta","notes":"0 is an inference from the per-container temp storage grant, not a quoted sentence; the page does not say"},"egress":{"terms":"not stated","metered":false,"free_allowance":null,"price_per_tb":null,"source_url":"https://codeberg.org/actions/meta"},"interface":["unknown"],"interface_detail":"inferred from the tooling the provider documents; not probed","tooling":"not stated","chaining":"Useful only as a lint-and-check lane beside a real build host: ten minutes of 4 vCPU is enough to run a formatter, a type check or a small unit suite, and the repository hosting is free beside it.","limits":[{"kind":"per-object-cap","value":"10 minutes of wall clock on codeberg-medium, the largest runner, which is 4 CPU and 8G. codeberg-small is 5 minutes and codeberg-tiny is 2 minutes. Quoted: 'The specs are guidelines for how many resources builds are allowed to take at most, but we rely on \"fair use\".'","source":"https://codeberg.org/actions/meta"},{"kind":"per-object-cap","value":"The RAM allocation counts filesystem writes against it: 'If your software uses 1 GB of RAM and wrote 1 GB of temporary files, it will be counted as 2 GB against the quota.' 2 GB of extra temp storage per container is granted.","source":"https://codeberg.org/actions/meta"},{"kind":"write-gated","value":null,"source":"https://codeberg.org/actions/meta"},{"kind":"request-rate","value":"The queue is shared and its fairness is enforced socially, not by a number: 'Don't jam the queue so other projects can also benefit from our offer.'","source":"https://codeberg.org/actions/meta"},{"kind":"retention-clamped","value":"A '-lazy' variant of each runner trades latency for scheduling: 'We aim for completing the job within 24 hours'","source":"https://codeberg.org/actions/meta"}],"limits_note":"The 10-minute per-job ceiling on codeberg-medium binds first and it binds absolutely: no amount of queue patience makes a 30-minute job run. There is no published monthly allowance, so the ceiling is per job and the aggregate is fair use, which is a discretionary throttle rather than a quota.","binding":"per-object-cap","binding_note":"the 10-minute wall clock on the largest runner fails first and it fails hard: 4 vCPU for 10 minutes is 0.67 vCPU-hours per job, so a job that needs more than ten minutes cannot run at all however idle the queue is.","identity_cost":{"kind":"email","detail":"Quoted: 'fill in your username and email address and then choose a good password' and 'After confirming your email address by clicking the link in the email we sent you, you're done and go to go.' No card, no hold, no phone and no identity document. Forgejo Actions needs no approval step, unlike Woodpecker: 'we do not have an approval workflow like in our hosted Woodpecker CI/CD'.","country":null},"reliability_note":"Codeberg's own documentation says of the CI service: 'CI access is provided as-is and might break at any time and for an undefined period of time, due to server issues, for testing and maintenance purposes or human error.' Hosted Forgejo Actions is described as 'open alpha'.","confidence":"documented","evidence":[{"url":"https://codeberg.org/actions/meta","date":"2026-10-22","proved":"the runner table: codeberg-tiny 1 CPU 2G 2 min, codeberg-small 2 CPU 4G 5 min, codeberg-medium 4 CPU 8G 10 min; the RAM-includes-filesystem warning with 2 GB extra temp storage; the lazy variants aiming at 24-hour completion; rules requiring a public repository under a free licence and 'No extensive pipelines to assist LLM-driven workflows'"},{"url":"https://docs.codeberg.org/ci/","date":"2026-10-22","proved":"Woodpecker onboarding requires a request form reviewed by a Codeberg volunteer; 'linux/amd64 is the sole build target'; 'CI access is provided as-is and might break at any time'"},{"url":"https://codeberg.org/Codeberg-e.V./requests","date":"2026-10-22","proved":"access is granted per account rather than per project; the Rust note asks projects to cap parallelism with -j4 because the compiler otherwise takes every CPU"},{"url":"https://codeberg.org/actions/meta","date":"2026-10-24","proved":"quoted: 'The following runners are available on Codeberg. The specs are guidelines for how many resources builds are allowed to take at most, but we rely on \"fair use\".' with the table rows 'codeberg-tiny | amd64 | 1 | 2G | 2 min', 'codeberg-small | amd64 | 2 | 4G | 5 min', 'codeberg-medium | amd64 | 4 | 8G | 10 min'"},{"url":"https://codeberg.org/actions/meta","date":"2026-10-24","proved":"quoted: 'Currently, we put strict resource and time constraints on hosted Forgejo Actions runs, because we do not have an approval workflow like in our hosted Woodpecker CI/CD.'"},{"url":"https://codeberg.org/actions/meta","date":"2026-10-24","proved":"quoted: 'The RAM allocation includes writes to the filesystem. If your software uses 1 GB of RAM and wrote 1 GB of temporary files, it will be counted as 2 GB against the quota.' and 'we grant you 2 GB of additional storage for temporary files per container.'"},{"url":"https://codeberg.org/actions/meta","date":"2026-10-24","proved":null},{"url":"https://codeberg.org/actions/meta","date":"2026-10-24","proved":"quoted: 'For each runner variant, we offer a \"lazy\" runner.' and 'We aim for completing the job within 24 hours, and we are considering experiments like offsite runners which only run when solar energy is available.'"},{"url":"https://codeberg.org/actions/meta","date":"2026-10-24","proved":"quoted: 'Codeberg's runner uses the `ghcr.io/catthehacker/ubuntu:act-latest` by default to provide a certain compatibility level with GitHub Actions.' and 'running the Docker daemon inside those runners is not officially supported'"},{"url":"https://docs.codeberg.org/ci/","date":"2026-10-24","proved":"quoted: 'Forgejo Actions can be used with self-hosted runners and Codeberg also provides a hosted version in a limited fashion in open alpha.' and 'CI access is provided as-is and might break at any time and for an undefined period of time'"},{"url":"https://docs.codeberg.org/getting-started/first-steps/","date":"2026-10-24","proved":"quoted: 'simply fill in your username and email address and then choose a good password' and 'After confirming your email address by clicking the link in the email we sent you, you're done and good to go!'"}],"verdict":"qualifies-with-caveat","verified_at":"2026-10-24T04:00:19.000Z","notes":"The smallest compute ceiling, and the record is worth keeping precisely because it is small: 0.67 vCPU-hours per job against GitHub's 24 vCPU-hours, a factor of 36. Two things make it worse than the arithmetic suggests for a user. First, there is no published monthly allowance, so the aggregate is 'fair use', which is a discretionary throttle with no threshold to design against. Second, Codeberg's rules name the exact use this corpus exists to serve: 'No extensive pipelines to assist LLM-driven workflows'. That is a published-conditions question and it is the operator's to judge, not this record's; what the record does is state the sentence. Not established: the egress term; whether the container is destroyed at job end (the 2 GB per-container temp storage grant implies it, but no sentence says so); and whether a job queued on a lazy runner counts against any aggregate at all, because no aggregate is published.","extras":{"wave2":{"class":"ci-runner-capacity","free_tier_kind":"fair-use-hosted","shape":{"vcpu":4,"ram_gib":8,"gpu_class":null,"gpu_count":0}},"shape":{"vcpu":4,"ram_gib":8,"disk_gib":null,"gpu_class":null,"gpu_count":null,"note":"codeberg-medium, the largest published runner: '4 | 8G | 10 min'. Disk is not published; the page grants '2 GB of additional storage for temporary files per container' and warns that filesystem writes count against the RAM allocation."},"billing_model":"free","term":"none","m10h_usd":null,"m24h_usd":null,"price_arithmetic":"USD 0.00, and no arithmetic is possible: there is no published monthly allowance. One job on codeberg-medium is 4 vCPU x 10 min = 0.67 vCPU-hours. The aggregate depends on how many jobs the fair-use policy tolerates, which is not a number and so cannot be multiplied. This is the corpus's documented-absence rule: 'unlimited' may not be inferred from the silence, and neither may a daily total.","free_tier_kind":"fair-use-hosted","session_cap":{"wall_clock_min":10,"idle_reap_s":null,"restart_required":true,"note":"10 minutes on codeberg-medium, 5 on small, 2 on tiny. A lazy variant may wait up to 24 hours for a slot. No monthly quota published."},"concurrency":{"jobs_at_once":null,"note":"not published: no concurrent-job number appears on the page read. The queue is shared and governed by 'Don't jam the queue'."},"keep_rate":{"value":0,"basis":"the container is per job; nothing is billed","source":"https://codeberg.org/actions/meta"},"persistent_storage":{"included_gib":2,"price_gib_month":"not applicable: 2 GB of temp storage per container, not a durable volume","durability":"none stated; per container","survives_stop":false,"survives_destroy":false,"max_retention":"the job"},"network_out":{"allow_outbound":true,"allow_inbound_listen":false,"ports":"none stated: no page read offers an inbound address","static_ip":false,"ipv6":null,"per_session_bytes":null},"units":"RAM is the vendor's own unit, written '8G'. Kept as 8.","burst_x":null,"census_rows":["codeberg-forgejo-actions"],"wave3":{"verified":["the three runner shapes and their 2/5/10-minute ceilings","the fair-use clause with no monthly number","public and free-licence repository required","email-only signup with no card and no approval step for Forgejo Actions","the 'open alpha' status"],"corrected":"what it did not carry is that no monthly allowance exists at all, which is why nothing can be multiplied","new":null}},"tier":"Codeberg hosted Forgejo Actions, open alpha, fair use","confidence_note":"the 'open alpha' description is quoted from docs.codeberg.org/ci read today."},"claims":[{"path":"$.free_tier.stated","kind":"free-quota","num":10,"unit":"minutes","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[0].value","kind":"limit:per-object-cap","num":10,"unit":"minutes","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[1].value","kind":"limit:per-object-cap","num":1,"unit":"GB","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"},{"path":"$.limits[3].value","kind":"limit:request-rate","num":null,"unit":null,"per":null,"currency":null,"usd":null,"fx_date":null,"parse":"unparsed"},{"path":"$.limits[4].value","kind":"limit:retention-clamped","num":24,"unit":"hours","per":null,"currency":null,"usd":null,"fx_date":null,"parse":"ok"}],"unknown":[["$.egress.metered","egress-unknown"],["$.egress.terms","not-stated"],["$.evidence[6].proved","withheld"],["$.extras.wave3.corrected","partly-held"],["$.extras.wave3.new","withheld"],["$.interface","interface-unknown"],["$.limits[2].value","withheld"],["$.per_object_cap.stated","not-applicable"],["$.tooling","not-stated"]],"history":[],"drift":[]}