GitArena is a software development platform with built-in vcs, issue tracking and code review. It is meant as a lightweight and performant alternative to the likes of GitLab and Gitea, built with self-hosting and cross-platform/cross-architecture support in mind.
Features progress
- Git protocol support
- HTTP(S)
- SSH
- Repository management
- Create
- Fork
- Rename
- Branch listing
- Tag listing
- Releases
- Autogenerated changelogs from merged PRs
- Asset upload
- Semantic version tagging UI
- Web-based code browser
- Syntax-highlighted file view
- Blame
- View raw
- Commit history with diffs
- User auth
- Username and password auth
- SSH key management
- Org/team model for access control
- Merge requests
- Open, review, approve, merge
- Inline comments on diffs
- Merge strategies (merge commit, squash, rebase)
- Issue tracker
- open/close issues
- Labels
- Milestones
- Assignees
- Kanban
- Webhooks
- REST API
- Protected branches
- Require reviews
- status checks before merge
- Prevent direct pushes to
main
- Woodpecker CI
- Package registry
- Wiki per repository
- Code search
- OAuth/SSO
- CLI
- MCP
- Email notifications
- Dependency/vulnerability scanning hooks
- Commit/PR cross-linking
- Federation via ForgeFed/AT Proto
- VS Code / JetBrains IDE integration
- Review iteration tracking: show what changed between force-pushed versions of a PR (like Gerrit's patchset model)
- Merge queue
- Commit signing + verification
- Mirror/sync: bi-directional
Requirements:
- Latest Rust stable toolchain
Compiling:
$ cargo build --release
Cargo will build all required dependencies as well as GitArena itself.
The resulting binary can be found in ./target/release.
In order to run GitArena, the following environment variable needs to be set:
BIND_ADDRESS: Socket address to bind to, for examplelocalhost:8080or127.0.0.1:80(Port is required)- Specify either of these two environment variables:
DATABASE_URL_FILE: Path to a file containing the Postgres connection stringDATABASE_URL: Raw Postgres connection string
After start GitArena will automatically create the required tables. Please edit the settings table to configure your
GitArena instance and restart GitArena. In the future this will be do-able in the web ui.
Afterwards your GitArena instance will be fully set up and you can register
your account. In order to access the admin panel (/admin), please set
admin on your user account in the users table to true.
By default, GitArena will write logs to a file (instead of the console) when built with --release. In order
to view the logs, look for a file in the logs directory ending with the current date.
MAX_POOL_CONNECTIONS: Max amount of connections the Postgres connection pool should keep open and ready to use.DATABASE_PASSWORD_FILE: This environment variable may contain a path to a file containing the Postgres database password. In that case, the password does not need to be specified in the Postgres connection string. This is for usage with Docker secrets.
Repository:
Repository commits:
File view:
Create repository:
Import repository:
Login:
Sign up:
Explore:
GitArena is part of the Mintlify OSS Program, meaning we receive gracious support from them in the form of a free Mintlify Pro plan (normally $300/month) to host our documentation.







