anvilsign in

collin/anvil

RenderedSource

1# anvil
2
3A minimal self-hosted git forge in Rust, built on [gix (gitoxide)](https://github.com/GitoxideLabs/gitoxide).
4Modeled on Gitea's *basic* feature set: repository hosting, web code browsing,
5the git smart protocols (HTTP and SSH), issues, pull requests, users/orgs with
6access control, and webhooks. No wiki, no CI/CD.
7
8## Status
9
10Early development. Milestone 1 (workspace scaffold + storage) is in place:
11`anvild` can initialize its database and create users and bare repositories on
12disk. The git wire protocol, web UI, and SSH transport follow.
13
14## Architecture
15
16A Cargo workspace. The keystone is **`anvil-git`**: gix is a *client* library
17with no server-side protocol, so anvil supplies its own transport-agnostic
18`upload-pack`/`receive-pack` (smart-HTTP and SSH share one implementation).
19
20| Crate | Responsibility |
21|--------------|----------------|
22| `anvil-core` | Domain model, SQLite persistence, on-disk bare-repo storage |
23| `anvil-git` | Server-side git wire protocol on gix (upstream-candidate) |
24| `anvil-web` | axum HTTP server: web UI + smart-HTTP git endpoints |
25| `anvil-ssh` | git-over-SSH (russh) |
26| `anvil` | `anvild` daemon + admin CLI |
27
28## Quick start
29
30```sh
31cargo run -- migrate # create data/ + database
32cargo run -- user create alice --password secret # create a user
33cargo run -- repo create alice/hello # create a bare repo on disk
34cargo run -- serve # start the server
35```
36
37Configuration is optional; see [`anvil.example.toml`](anvil.example.toml).
38
39## License
40
41MIT OR Apache-2.0.