collin/anvil
RenderedSource
anvil
A minimal self-hosted git forge in Rust, built on gix (gitoxide). Modeled on Gitea's basic feature set: repository hosting, web code browsing, the git smart protocols (HTTP and SSH), issues, pull requests, users/orgs with access control, and webhooks. No wiki, no CI/CD.
Status
Early development. Milestone 1 (workspace scaffold + storage) is in place:
anvild can initialize its database and create users and bare repositories on
disk. The git wire protocol, web UI, and SSH transport follow.
Architecture
A Cargo workspace. The keystone is anvil-git: gix is a client library
with no server-side protocol, so anvil supplies its own transport-agnostic
upload-pack/receive-pack (smart-HTTP and SSH share one implementation).
| Crate | Responsibility |
|---|---|
anvil-core | Domain model, SQLite persistence, on-disk bare-repo storage |
anvil-git | Server-side git wire protocol on gix (upstream-candidate) |
anvil-web | axum HTTP server: web UI + smart-HTTP git endpoints |
anvil-ssh | git-over-SSH (russh) |
anvil | anvild daemon + admin CLI |
Quick start
cargo run -- migrate # create data/ + database
cargo run -- user create alice --password secret # create a user
cargo run -- repo create alice/hello # create a bare repo on disk
cargo run -- serve # start the server
Configuration is optional; see anvil.example.toml.
License
MIT OR Apache-2.0.