What we guarantee, and what runs underneath.
Written for the person who has to sign off on moving a company's source code. The guarantees first, then the isolation model, then the limits and how to leave. The implementation detail is at the end, as evidence rather than as the subject.
What we guarantee
Six commitments, each with the qualifier that makes it true. Read the bold line in each card for the claim, the paragraph under it for the detail.
Isolation
One Forgejo, one machine, one customer.
Your Forgejo runs on a machine of its own, with its own database and storage volume. Not a namespace on a shared cluster, and no cross-customer table for a query bug to spill across.
Operations
We carry the pager, not you.
Updates, TLS, runner capacity, monitoring, and restores are ours to run. Nobody on your team becomes the forge admin.
Backups
Nightly and encrypted, on Team and Pro.
Encrypted before they leave your instance and kept on a rolling 90-day window in a store dedicated to your forge. Starter has no managed snapshot backups.
Updates
Upstream Forgejo, patched for you.
You run upstream Forgejo, not a fork we control. We track releases and apply them for you, security fixes first, with no maintenance window to book.
Security
Narrow access, and a ledger of it.
Per-instance secrets come from a root key held only in the control plane. Inbound access is firewalled, administrative endpoints require MFA, and a tamper-evident ledger records admin actions.
Data ownership
Open format, open exit.
Forgejo is open source and the on-disk format is upstream. Export through the API any time, or ask for a full dump. Nothing proprietary sits in the middle to trap you.
The isolation model
One instance, top to bottom. Everything between your team and your backups is dedicated to you.
Your team
Browser,
fjCLI, and the iOS app, over HTTPS to your own hostnameA dedicated VM
One per instance, single-tenant, in the region you choose
Upstream Forgejo
A pinned upstream release, on your own hostname
Its own database
Scoped to this instance. No cross-customer tables.
Its own storage volume
Repositories and attachments, on the instance volume
Encrypted backups, off the box
Team and Pro. Nightly, encrypted client-side, to a jailed store of its own.
Current limitations
These are current limitations, listed on purpose so you know exactly what you are buying.
What we do not guarantee
- No SOC 2, no ISO 27001, and no contractual uptime SLA. Support response targets are targets, not guarantees.
- Restore is operator-run against a runbook we are still validating end to end. We publish no recovery-time commitment, and because backups run nightly the recovery point is the last nightly snapshot.
- Backups are not yet pinned to your instance region. Instance and runner placement are.
- CI jobs run on a runner pool we operate unless you add a dedicated runner. Single-tenancy of the forge itself is unconditional; single-tenancy of the CI machine is the add-on.
If your procurement requires a certification or a contractual SLA, we are not the right fit yet. We would rather say so here than in month three.
How you leave
Open format, a per-repository migration or a full dump, and a delete that takes everything with it.
The honest test of an architecture you are trusting with source code is how cheaply you can walk away from it.
Forgejo is open source and GPL-3.0-or-later from v9 onward, and your instance is a standard
one. So exporting your data is a per-repository migration through the Forgejo API, or a full forgejo dump archive on request.
Deleting an instance tears down its machine, its DNS records, and the tokens we hold for it. Single-tenant
never turns into a single point of lock-in.
Implementation details
The evidence behind the guarantees: how the isolation is built, where each category of data lives, and who can reach it.
How the isolation is built
Deploying a forge provisions a machine for it, running an upstream Forgejo release with its own database and data volume, on your subdomain or your own custom domain. It starts, updates, and stops on its own schedule. No multi-tenant control surface sits in the request path of your repositories.
CI is the one place the default is shared. Every plan includes capacity on a runner pool we operate and patch. On Team and Pro you can attach runners registered to your forge and nothing else, at $29/mo each, up to 1 on Team and 3 on Pro. Those are unmetered: no build minutes to count. Runner machines expose no inbound services either way.
Isolation is what makes the rest of the site's promises cheap to keep. Never training AI on your code is easy to honor when there is no shared corpus, and private by default is real when there are no neighbors to be private from.
Where your data lives
You choose the region. Your instance and runner machines stay in it; backups do not yet.
- Instance and CI runners
- Hosted by Hetzner in the region you choose: EU Central (Falkenstein), United States, Asia Pacific (Singapore). New instances default to EU Central (Falkenstein). We do not replicate forge contents to other regions.
- Backups
- Backups are currently stored in EU (Helsinki, Finland) for every Instance, whichever region you choose; per-region backup storage is being rolled out. On Team and Pro, each forge backs up to a jailed store of its own, encrypted client-side before anything leaves the instance, on a rolling 90-day window.
- Analytics and error reporting
- Service analytics and error reporting are processed in the EU.
- Operations
- Fjord is operated from the United States by Raster & State LLC, and is offered to United States customers today. Operational and audit logs are kept for 90 days.
Where each category of data lives, backups included, is set out per category in the Data Residency Statement.
How we keep it running, and who can touch it
We patch it, we hold the certificates, and operator access is narrow and logged.
- Updates
- We track Forgejo releases and apply them for you, security fixes first, so you are current without reading a changelog to find out what broke. Runner capacity is provisioned, registered, and patched by us.
- Certificates
- Provisioned and renewed automatically. Your forge is HTTPS from the first request.
- Operator access
- Per-instance secrets derive from a durable root key held only in the control plane, fetched over TLS at first boot and never placed in the machine's user-data channel. Inbound access is firewalled, with administrative access limited to the control plane. Sensitive administrative endpoints require MFA, and we do not read repository or CI contents except to provide, secure, and support the service.
- Audit trail
- Administrative actions land in a tamper-evident ledger.
Each of these is on the record in the security annex of the Data Processing Addendum, and the full current-state detail is on the security page.
