Self-Hosted Git Forge

Deep Investigation: Forgejo vs OneDev vs Gogs vs Gitea vs Radicle vs SourceHut

Prepared for: Gaem (Nagato Game Assist + multi-project hosting) • Date: July 23, 2026
Research: 15+ sources including official docs, community comparisons, and benchmark data
Excluded: Codeberg (blocks all AI interactions), GitLab CE (heavyweight, 4GB+ RAM)

Executive Summary

Six self-hosted Git forge platforms were investigated for hosting Nagato Game Assist and other recurring projects. The landscape splits into three tiers:

Bottom Line: Forgejo is the clear winner for your use case. It is lightweight enough to run alongside your existing homelab services, has GitHub Actions-compatible CI (Forgejo Actions), supports 20+ package registry formats, container registry, and is governed by a non-profit (Codeberg e.V.). It can be deployed via Docker on your existing Windows machine or a small VPS. OneDev is worth considering if you want built-in project management and code intelligence in one box, but costs 3x the RAM and has no GitHub Actions compatibility.

1. Forgejo RECOMMENDED

'Beyond coding. We forge.' - Community-governed fork of Gitea under Codeberg e.V.

Forgejo v15.0.4 LTS

Lightweight, community-governed, GitHub Actions-compatible

Key Facts

Language: Go (single binary)
License: GPL-3.0 (copyleft, 100% FOSS)
Governance: Non-profit (Codeberg e.V., Germany)
RAM (idle): ~180 MB
RAM (under load): ~320 MB
Official min: 512 MB
Install: Docker / binary / package

Pros
  • Lightest RAM footprint of all contenders (~180MB idle)
  • Forgejo Actions - GitHub Actions-compatible CI/CD
  • 20+ package registry formats (npm, Docker, PyPI, Maven, etc.)
  • Container registry (OCI-compatible)
  • Non-profit governance, public security disclosures
  • Drop-in replacement for Gitea (same DB schema)
  • ActivityPub federation (cross-instance issues/PRs)
  • Pull requests, issues, wiki, releases, milestones
  • Branch protection, code review, merge strategies
  • Runs on Raspberry Pi / tiny VPS
  • Monthly security patches, predictable LTS line
  • End-to-end + upgrade tests (Gitea has none)
Cons
  • Actions not 100% GitHub-compatible (documented gaps: missing permissions subkey, continue-on-error ignored, different OIDC syntax)
  • No built-in project management / Kanban (basic issues only)
  • No code intelligence / symbol search in web UI
  • Requires separate runner process for CI (not built-in)
  • Federation features still maturing (not production default)
  • Smaller ecosystem than Gitea (though growing fast)
★ BEST FIT for Nagato + multi-project hosting

Detailed Analysis

History: Forgejo was forked from Gitea in late 2022 after the Gitea trademark/domain was transferred to a for-profit company (Gitea Limited) without community consultation. It became a hard fork in early 2024 and is now governed by Codeberg e.V., a German non-profit with an elected council. All development happens on Codeberg.org using Forgejo itself (dogfooding).

CI/CD: Forgejo Actions uses a workflow syntax familiar to GitHub Actions users. A separate runner process (forgejo-runner) executes jobs in Docker containers. Many GitHub Actions workflows transfer with minor modifications - you typically need to set jobs.<job_id>.container.image to a compatible image like ghcr.io/catthehacker/ubuntu:act-22.04. Documented incompatibilities exist around permissions subkeys, continue-on-error, and OIDC syntax.

Security: Forgejo publishes security advisories to everyone through public channels. This contrasts with Gitea, which reserves advance security notices for paying Enterprise customers. Forgejo also runs end-to-end and upgrade tests that Gitea lacks.

For Nagato: Forgejo can host all your repos (nagato-game-assist, nagato-genui, nagato-ai-council) with private visibility, issues, PRs, and CI. The GitHub Actions compatibility means your existing workflow files mostly transfer. The container registry can host MSIX build artifacts. The low RAM footprint means it can run alongside your existing gaem-proxy, GTC Docker stack, and other services on your Windows machine.

2. OneDev VIABLE ALTERNATIVE

'The Unified and Autonomous Development Platform' - All-in-one: Git + CI/CD + Kanban + Code Intelligence

OneDev v16.0.2 (Jul 2026)

All-in-one platform with built-in CI, PM, and code intelligence

Key Facts

Language: Java (JVM-based)
License: MIT
Governance: Independent project (github.com/theonedev/onedev)
RAM (idle): ~600 MB
RAM (under load): ~950 MB (1-2GB with CI)
Official min: 2 GB (4 GB practical)
Install: Docker (single container)
GitHub stars: 15.1k

Pros
  • Built-in CI/CD - no separate runner to deploy (daemon inside server)
  • Visual GUI pipeline editor (no YAML needed)
  • Code intelligence: symbol search, go-to-definition, find-references in browser
  • Automated Kanban boards with rule-based task movement
  • Custom issue states, fields, and transition rules
  • Service desk (email-to-issue without account required)
  • Time tracking and reporting
  • Web terminal for debugging CI/CD jobs
  • Run CI/CD against uncommitted local changes
  • Security/compliance scanning (deps, binaries, containers)
  • Renovate integration for dependency updates
  • AI teammates: assign work to AI users, PR review, fix CI failures
  • High availability and horizontal scalability
  • Command palette (cmd/ctrl-k)
  • Project tree for hierarchical organization
Cons
  • 3x RAM cost vs Forgejo (~600MB idle vs ~180MB)
  • NOT GitHub Actions compatible - own YAML dialect, all workflows must be rewritten
  • Java/JVM overhead (heap, warmup spike on boot)
  • Smaller package registry (Docker, npm, NuGet, Maven, PyPI, RubyGems, Helm only)
  • No migration path to/from Gitea/Forgejo family (different data model)
  • Smaller community/ecosystem than Gitea/Forgejo
  • Code indexing is memory-hungry on initial build
  • AI features require external API endpoint configuration
⚠ Strong platform, but RAM cost + no GH Actions compat

Detailed Analysis

Architecture: OneDev is fundamentally different from Gitea/Forgejo. It is a project-management-and-CI platform that happens to host Git, not a Git server with PM bolt on. The CI/CD build daemon lives inside the OneDev server process, so CI works the moment the platform is up - no separate runner deployment needed. This is a genuine operational simplification.

Code Intelligence: OneDev's standout feature is built-in code intelligence - symbol search, go-to-definition, and find-references work across Java, JavaScript, C, C++, C#, Go, PHP, and Python without cloning the repo. Gitea and Forgejo have nothing equivalent built in.

AI Integration: OneDev has built-in AI features - AI users that can implement issues, review PRs, fix CI/CD failures, and resolve merge conflicts. It ships a CLI (TOD) and skills for coding agents. This is interesting but requires external API endpoints.

The Migration Trap: There is no migration path between the Gitea/Forgejo family and OneDev. Different data model, different CI format, different schema. If you start on Forgejo and later decide you want OneDev (or reverse), it is a repo-by-repo API move that loses CI history and PM data. This is a one-way, lossy trip.

For Nagato: OneDev's built-in PM and code intelligence are attractive, but the 3x RAM cost is significant when running alongside your existing stack. The lack of GitHub Actions compatibility means rewriting all workflow files. The AI teammate feature is interesting but may conflict with your existing Hermes-based agent workflow.

3. Gogs NOT RECOMMENDED

'A painless self-hosted Git service' - The original lightweight Go Git service (2014)

Gogs v0.14.3 (Jun 2026)

Minimal footprint, but slow development and security concerns

Key Facts

Language: Go (single binary)
License: MIT
Governance: Single maintainer (Unknwon)
RAM (idle): ~64 MB (extremely low)
Official min: 64 MB
Install: Docker / binary
Still v0.x: Has not reached 1.0 in 12 years

Pros
  • Absolute lowest RAM footprint (64 MB minimum)
  • Single binary, cross-platform (Go)
  • Simple, stable, extensible design
  • MIT license (permissive)
  • Runs on ARM / Raspberry Pi / SBCs
  • Still receiving commits (security fixes, dependency bumps)
Cons
  • NO built-in CI/CD (needs external: Woodpecker, Drone, etc.)
  • NO OAuth provider support
  • Still v0.14 after 12 years (never reached 1.0)
  • Largely single-maintainer development pace
  • Recent authenticated RCE vulnerability (CVE-2026-52806, fixed in 0.14.3)
  • Gitea and Forgejo both forked FROM Gogs and surpassed it
  • No container registry, no package registry
  • No federation, no Actions compatibility
  • Limited feature set vs Gitea/Forgejo
✗ Superseded by its own forks (Gitea/Forgejo)

Detailed Analysis

History: Gogs is the grandparent of the lightweight Go Git forge family. Gitea was forked from Gogs in 2016, and Forgejo was forked from Gitea in 2022. Both forks have significantly surpassed Gogs in features, community, and development pace.

Maintenance Status: Gogs is still maintained but at a slow pace by primarily one maintainer (Unknwon). The latest release is v0.14.3 (June 7, 2026), which fixed an authenticated RCE vulnerability (CVE-2026-52806). The project has been stuck at v0.x for 12 years and has never reached a 1.0 release.

Security: The recent RCE vulnerability (argument injection via crafted branch names in pull requests) is concerning. It was fixed in 0.14.3, but the fact that such a vulnerability existed in a mature project with a single maintainer raises questions about the security review process.

For Nagato: Gogs is too minimal for your needs. No CI/CD, no container registry, no package registry, and a slower development pace. Both Gitea and Forgejo are strictly better choices - they are forks of Gogs that have added all the features Gogs lacks.

4. Gitea VIABLE ALTERNATIVE

'Git with a cup of tea' - Company-backed fork of Gogs, the parent of Forgejo

Gitea v1.26.4

Company-backed, MIT-licensed, largest ecosystem of the Go forges

Key Facts

Language: Go (single binary)
License: MIT (permissive)
Governance: Company-backed (Gitea Limited / CommitGo)
RAM (idle): ~200 MB
RAM (under load): ~350 MB
Official min: 512 MB
Install: Docker / binary / package

Pros
  • Largest community/ecosystem of lightweight forges
  • Gitea Actions - designed as GitHub Actions drop-in (~90% compat)
  • MIT license (more permissive than Forgejo GPL-3.0)
  • Enterprise tier available (.50-9/user/mo: SSO, audit, SLA)
  • 20+ package registry formats
  • Container registry (OCI)
  • Drop-in compatible with Forgejo (same DB schema lineage)
  • Very widely deployed, lots of tutorials/guides
Cons
  • Company-backed governance (the reason Forgejo forked)
  • Security disclosures reserved for Enterprise customers first
  • Open Core model (SaaS offering has proprietary code)
  • No end-to-end or upgrade tests (Forgejo has both)
  • Copyright assignment required for contributions
  • Developed on GitHub (not self-hosted)
  • Requires separate runner for CI
⚠ Good forge, but Forgejo is the better governance choice

Detailed Analysis

vs Forgejo: For core Git hosting, Gitea and Forgejo are a near-tie. Same codebase lineage, same Go binary, same DB schema, nearly identical UI. The real difference is governance: Gitea is company-backed (Gitea Limited / CommitGo) with an Enterprise tier, while Forgejo is non-profit governed (Codeberg e.V.) with all features free.

Security Asymmetry: Gitea reserves advance security notices for paying Enterprise customers. Self-hosted admins on the free tier can be exposed to known vulnerabilities longer than paying customers. Forgejo publishes security advisories to everyone.

For Nagato: Gitea is a perfectly functional forge, but Forgejo is the better choice unless you specifically need the MIT license, the Enterprise tier, or have an existing Gitea investment. The governance and security disclosure differences are meaningful for a long-term hosting decision.

5. Radicle NOT RECOMMENDED

'The sovereign forge' - Peer-to-peer, decentralized, serverless code collaboration

Radicle v1.9.1 (May 2026)

P2P decentralized Git - no server needed, but no web UI forge

Key Facts

Language: Rust
License: Open source (GPL-3.0 + MIT/Apache-2.0 components)
Governance: Independent (radicle-dev)
Architecture: P2P (NoiseXK protocol)
Server: None (peer-to-peer)
Active releases: 10+ since Jun 2025

Pros
  • No server required - fully decentralized P2P
  • Censorship-resistant, sovereign data ownership
  • Replicated repositories across peers
  • CLI + Web interface available
  • Active development (frequent releases)
  • Built on Git (standard repos underneath)
  • Issues and patches supported in protocol
Cons
  • No server model - cannot self-host a traditional forge
  • No web-based PR review UI like GitHub/Forgejo
  • No CI/CD pipeline support
  • No container/package registry
  • No issues web UI (CLI/protocol only)
  • P2P model requires peers to be online for replication
  • Niche community, limited tooling
  • Fundamentally different workflow from GitHub
✗ Wrong paradigm - P2P, not a server forge

Detailed Analysis

Radicle is architecturally fascinating but solves a different problem. It is a peer-to-peer code collaboration stack where repositories are replicated across nodes in a decentralized network. There is no server to self-host - you run a Radicle node on your machine and it syncs with other peers.

For your use case (hosting Nagato and other projects with a web UI, CI/CD, issues, and PRs), Radicle is the wrong tool. It lacks a traditional web forge UI, CI/CD, container registry, and package registry. The P2P model is interesting for censorship-resistant open source collaboration but does not fit a private project hosting scenario.

6. SourceHut NOT RECOMMENDED

'The hacker's forge' - Email-driven, minimalist, Unix-philosophy code collaboration

SourceHut Alpha (sr.ht)

Email-based workflow, no JavaScript, no PR UI - for hardcore minimalists

Key Facts

Language: Python, Go, Common Lisp
License: AGPL-3.0
Governance: Small company (Drew DeVault)
Architecture: Suite of composable tools
CI: builds.sr.ht (VM-based)
Status: Still in alpha

Pros
  • Extremely fast, no JavaScript, minimal UI
  • Email-driven workflow (like Linux kernel)
  • Built-in CI (builds.sr.ht - VM-based, 9 OSes)
  • 100% FOSS (AGPL-3.0)
  • Git and Mercurial hosting
  • Mailing lists, ticket tracking, wiki
  • Self-hostable (full stack is open source)
  • Very low resource usage
Cons
  • No pull request UI (patches via email)
  • Still in alpha (not production-stable)
  • Steep learning curve for non-Unix developers
  • No container/package registry
  • No GitHub Actions compatibility
  • Small company, single key person dependency
  • Self-hosting is complex (multiple services)
  • Niche workflow, limited adoption
✗ Niche email workflow, no PR UI, still alpha

Detailed Analysis

SourceHut takes a radically different approach: a suite of composable tools (git.sr.ht, builds.sr.ht, todo.sr.ht, lists.sr.ht) with an email-driven code review workflow. There are no pull requests - patches are sent via mailing lists, similar to how the Linux kernel works. It has almost no JavaScript and prioritizes speed and simplicity.

While self-hostable (the full stack is AGPL-3.0), it requires deploying multiple services and is still in alpha. The email-based workflow is a significant departure from the GitHub-style PR workflow you are used to with Nagato. No container registry, no package registry, and no GitHub Actions compatibility make it impractical for your use case.

Feature Comparison Matrix

Feature Forgejo OneDev Gitea Gogs Radicle SourceHut
Language Go Java Go Go Rust Python/Go
License GPL-3.0 MIT MIT MIT GPL-3.0 AGPL-3.0
Governance Non-profit Independent Company Solo maintainer Independent Small company
RAM (idle) ~180 MB ~600 MB ~200 MB ~64 MB N/A (P2P) Low
RAM (min) 512 MB 2 GB (4 GB practical) 512 MB 64 MB N/A Low
CI/CD Built-in Forgejo Actions Built-in daemon Gitea Actions None None builds.sr.ht
GH Actions Compat ~95% (gaps) No (own YAML) ~90% (drop-in) No No No
Separate Runner Needed Yes No (built-in) Yes N/A N/A Yes (VMs)
Container Registry Yes (OCI) Yes Yes (OCI) No No No
Package Registry 20+ formats 7 formats 20+ formats No No No
Pull Requests Yes Yes Yes Yes Patches (P2P) Email patches
Issues Yes Yes (advanced) Yes Yes Protocol-level Yes
Kanban / PM No Yes (automated) No No No No
Code Intelligence No Yes (symbol search) No No No No
Wiki Yes No Yes Yes No Yes
LFS Support Yes Yes Yes Limited No No
Federation ActivityPub No Experimental No P2P (native) No
AI Integration No AI teammates No No No No
Security Disclosures Public Not documented Enterprise-first Reactive N/A N/A
Migration from GitHub Documented Manual (API) Documented Manual No No
Docker Install Yes Yes Yes Yes N/A Complex
Single Binary Yes No (Java) Yes Yes Yes No
Maturity Production (Codeberg) Production (5+ years) Production v0.x (12 years) Maturing Alpha

Resource & Cost Comparison

Tested RAM figures from nodatools.com benchmark (fresh VPS, 2026):

Platform Version Tested Idle RAM Active RAM (under load) Official Minimum Practical VPS Size
Forgejo v15.0.3 LTS ~180 MB ~320 MB 512 MB 1 GB (no runner) / 4 GB (with runner)
Gitea v1.26.4 ~200 MB ~350 MB 512 MB 1 GB (no runner) / 4 GB (with runner)
OneDev v16.0.1 ~600 MB ~950 MB (1-2 GB with CI) 2 GB 4 GB minimum / 8 GB recommended
Gogs v0.14.3 ~64 MB ~128 MB 64 MB 512 MB
For your homelab: Your Windows machine (RTX 4090, 64GB RAM) can run any of these alongside your existing stack (gaem-proxy, GTC Docker, wrangler, Hermes). Forgejo at ~180MB idle is negligible. OneDev at ~600MB idle + 1-2GB under CI load is still fine but noticeably heavier. The real question is whether OneDev's built-in PM and code intelligence justify 3x the resource cost when you already have Hermes for agent orchestration.

Recommendation for Nagato Game Assist

★ Forgejo is the clear choice

For hosting Nagato Game Assist and your other recurring projects (nagato-genui, nagato-ai-council, and future repos), Forgejo is the recommended platform. Here is why:

1. Lightweight enough to coexist

~180MB idle RAM means Forgejo runs alongside your gaem-proxy, GTC Docker stack, wrangler, and Hermes without contention. OneDev's 600MB+ would compete with your existing services.

2. GitHub Actions compatibility

Forgejo Actions means your existing .github/workflows files mostly transfer with minor tweaks. OneDev requires complete workflow rewrites. Gogs has no CI at all.

3. Container & package registry

Host MSIX build artifacts, Docker images, and npm/PyPI packages in the same forge. OneDev has fewer formats. Gogs has none.

4. Non-profit governance

Codeberg e.V. governance means no company can change the license, restrict features, or sell the project. Public security disclosures keep you informed.

5. Drop-in Gitea replacement

If you ever need Gitea Enterprise features, migration is documented both ways. OneDev is a one-way trip - no migration path to/from the Gitea family.

6. Proven at scale

Codeberg.org runs 100,000+ users on Forgejo. The platform is production-proven with end-to-end and upgrade tests.

7. Docker deployment

Single Docker container with PostgreSQL. Can be proxied through your existing gaem-proxy at gaem.moe/git/ using path-based routing (your preference).

8. Federation future-proofing

ActivityPub federation means cross-instance issues/PRs are possible. Not needed today, but a unique capability no other forge offers.

When to consider OneDev instead

OneDev is worth a second look if:

For your current setup, none of these outweigh Forgejo's advantages. Your Hermes-based agent workflow already handles orchestration, and your existing CI needs are met by Forgejo Actions.

When to consider Gitea instead

Gitea is worth considering if:

For a solo developer / small team project like Nagato, these do not outweigh Forgejo's governance and security advantages.

Migration Path: GitHub to Forgejo

If you decide to proceed with Forgejo, here is the high-level migration plan:

Step Action Notes
1 Deploy Forgejo via Docker docker pull codeberg.org/forgejo/forgejo:15.0.4 + PostgreSQL + optional runner
2 Configure reverse proxy Add /git/ route to gaem-proxy (path-based, your preference). SSL via existing gaem.moe cert.
3 Migrate repos from GitHub Forgejo has built-in GitHub migration tool (Settings > Migration). Imports repos, issues, PRs, labels, milestones.
4 Set up Forgejo Actions runner Separate Docker container: code.forgejo.org/forgejo/runner:9. Register against Forgejo instance.
5 Adapt workflow files Set container.image in jobs, check for known incompatibilities (permissions subkey, continue-on-error, OIDC).
6 Update git remotes Change origin URLs in local clones to point at Forgejo. Keep GitHub as 'github' remote for backup.
7 Update Hermes/agent configs Update AGENTS.md, CI references, and any scripts that reference GitHub URLs.
8 Set up backups Dump PostgreSQL + Forgejo data volume on schedule. Git repos are plain filesystem underneath.
Important: Migration from GitHub to Forgejo is well-documented and supported. The built-in migration tool handles repos, issues, PRs, labels, milestones, and releases. CI/CD workflows need manual adaptation but are mostly compatible. This is a reversible decision - you can migrate back to GitHub or to Gitea if needed.

Repos to migrate

Repo Current Host Visibility Notes
nagato-game-assist github.com/Gaemghost20000 Private Primary repo. Has issues, PRs, AGENTS.md, worktrees.
nagato-genui github.com/Gaemghost20000 Private Fork of philholden/partialupdate. Has issues, PRs.
nagato-ai-council github.com/Gaemghost20000 Private Scaffolded only, idle. Low priority.
Future projects N/A Private All new projects can start on Forgejo directly.

Excluded Platforms

Platform Reason for Exclusion
Codeberg Blocks all AI interactions. User explicitly excluded.
GitLab CE Heavyweight (4GB+ RAM minimum, 8GB recommended). Overkill for solo/small team. Different category - full DevOps platform, not lightweight forge.
Bitbucket Not self-hostable (Atlassian cloud only). Not open source.
Azure DevOps Repos Not self-hostable in the traditional sense. Microsoft cloud. Not open source.
GForge Commercial (/user/month). Not fully open source. Niche.