Arbinel and Forgejo
Everything Arbinel adds to or changes from Forgejo. What Arbinel inherits is not listed. For that, read Forgejo’s release notes for the Forgejo release your Arbinel release is built on.
Last compared against Forgejo 17.0 on 2026-11-11. The list is refreshed on every Forgejo major release. What changed since the last Arbinel release is in the changelog issue.
Reasons for the fork
Section titled “Reasons for the fork”Forgejo is a good forge, and Arbinel would not exist without it. Running a public hosting service raised needs that do not fit Forgejo’s scope or its process:
- Hosting at scale. A shared, public instance needs several nodes, read replicas, usage quotas, paid add-ons, request budgets and hosted static sites. Forgejo reasonably keeps its scope to what serves most installations.
- Product decisions. Arbinel changes its interface and defaults faster than a project that serves every installation can.
- How Arbinel is built. Forgejo does not accept contributions written with the help of large language models, and Arbinel does.
Arbinel stays as close to Forgejo as it can, and fixes to Forgejo code go to Forgejo first. The Arbinel README explains the reasons in more detail.
Defaults that differ
Section titled “Defaults that differ”Arbinel’s server-side features are off by default, so an instance that switches from Forgejo enforces nothing until it opts in. These defaults do differ from Forgejo:
- The default theme is
codefloe-tide-auto. See Appearance. - A repository can pin up to six issues, where Forgejo allows three.
/issues,/pullsand/notificationsredirect to the inbox.- Users who can write to a repository cancel running checks from a pull request’s merge box. See Cancelling CI.
- File icons in the repository file list use the
deviconicon set.
Hosting and billing
Section titled “Hosting and billing”Opt-in features for running a public, multi-tenant instance.
| Feature | What it does |
|---|---|
| Quotas | Explains Forgejo’s quota groups and rules, and adds quotas for CI minutes and download traffic, warning emails and an API for external systems to raise a quota. |
| Billing | Sells monthly add-ons, such as extra CI minutes, storage or bandwidth, through Creem. Each add-on raises the matching quota. |
| Request budgets | Limits expensive requests per account, such as archive downloads, code search and diffs. |
| Pages | Hosts static sites from repositories, including up to five extra branches per repository. |
Operations and scale
Section titled “Operations and scale”| Feature | What it does |
|---|---|
| High availability | Runs several nodes behind a load balancer, with one elected leader running the cron tasks. |
| Database | Reads after a write go to the primary, so a lagging replica cannot serve stale rows. Adds connection timeouts, multi-host failover and extra indexes. |
| Search | Adds a Typesense issue indexer with exact counts and #13 lookups, and limits code searches so one broad query cannot load the whole index. |
| Announcements | Site administrators schedule several Markdown banners that users can dismiss. |
| HTTP and mirrors | Outbound HTTP calls have timeouts and bounded reads. Mirror syncs run at the lowest CPU and I/O priority. |
| Migrations | Downloaded assets are checked before they are uploaded to S3. |
| Instance version | The site administration summary shows the Arbinel version and the Forgejo version it is compatible with. The API and forgejo --version keep reporting the Forgejo version. |
Pull requests, CI and branches
Section titled “Pull requests, CI and branches”| Feature | What it does |
|---|---|
| Cancelling CI | Cancels running checks from a pull request’s merge box, for Forgejo Actions and external CI systems. Forgejo only cancels whole runs from the Actions page. |
| Live updates | Issue and pull request pages update without a reload: checks, the merge box, the timeline and the title. |
| Branch protection | Organization-wide rules, a simpler form with presets and a live preview of matching branches, and a force-push allowlist. |
| Repository defaults | Instance-wide defaults for new repositories, such as the allowed merge styles. |
| Commit signing | Commits signed with the instance SSH key link to the account that owns SIGNING_EMAIL, instead of a placeholder. The signing notice shows SIGNING_NAME instead of the key path. |
Issues and notifications
Section titled “Issues and notifications”| Feature | What it does |
|---|---|
| Inbox | One /inbox page with tabs for issues, pull requests and notifications, with batch actions and keyboard shortcuts. |
| Watch settings | Choose which events a watched repository notifies you about, and whose. Release notifications appear in the notification list. |
| Pinned issues | Up to six pinned issues per repository, shown as compact cards. |
Accounts and sign-in
Section titled “Accounts and sign-in”| Feature | What it does |
|---|---|
| Linked accounts | Signing up through OAuth2 links that account, so it shows under Linked accounts. |
| Account switcher | Switch between linked accounts from the user menu. OAuth2 clients can ask the user to choose one with prompt=select_account. |
| OAuth2 consent | The full-access warning shows only when a client gets full access. |
| Avatars | Optional monogram placeholder avatars. |
Interface
Section titled “Interface”| Feature | What it does |
|---|---|
| Themes | The codefloe-tide-* theme family is the default, with an ice blue variant. The classic codefloe-* themes stay available. Themes preload their main font. |
| Navigation | A repository switcher in the repository header, and search as you type on Explore, profile and organization pages. |
| Reading and editing | An outline of headings on rendered Markdown files, and typing a bracket or quote wraps the selection. |
| Repository lists | Denser repository rows on Explore, profiles and organizations. |
| Small screens | The commit history list works on phones. |
| Icons | Refreshed icons and per-file icon sets, served from the instance instead of a CDN. |
| API docs | /api/swagger uses Scalar instead of swagger-ui, without external requests. |
Forgejo fixes Arbinel carries
Section titled “Forgejo fixes Arbinel carries”Bugs in Forgejo code that Arbinel fixes and Forgejo has not taken.
| Area | Fix |
|---|---|
| Migrations from Forgejo and Gitea | A migration skips issues, pull requests or releases that the source repository has turned off, instead of failing. |
| API migration cleanup | A failed POST /api/v1/repos/migrate deletes the half-created repository. |