arbor-git is the Git backend for Arbor: a daemon that exposes gitoxide-powered repository operations over gRPC, alongside an HTTP server for health checks.
arbor-git performs no authentication or authorization of its own. It fully trusts its single caller, arbor-api:
- Read operations (commits, refs, trees, diffs) are unauthenticated and unfiltered; any caller that can reach the gRPC port can read any repository on disk
- The only access control enforced here is push confinement, and even that is driven entirely by the scope-match patterns arbor-api passes in per request
Because of this, arbor-git must be network-isolated so that only arbor-api can reach it (private cluster network, no ingress). It is not to be exposed publicly under any circumstances. Authentication, per-user authorization, and rate limiting all live in arbor-api, which is the sole trusted client.
cp .env.local.template .env.local
cargo buildcargo runConfiguration is read from the environment (see .env.local.template):
| Variable | Default | Description |
|---|---|---|
GRPC_PORT |
50051 |
Port for the gRPC service |
HTTP_PORT |
8080 |
Port for the HTTP server |
STORAGE_PATH |
./data/repositories |
On-disk root for repository storage |
GIT_DEFAULT_BRANCH |
main |
Default branch for newly created repositories |
GIT_MAX_REPO_SIZE |
1073741824 |
Maximum repository size in bytes (default 1 GiB) |
RUST_LOG |
arbor_git=info |
Log filter (see tracing) |
The HTTP server exposes health endpoints:
curl http://localhost:8080/health # liveness, returns "OK"
curl http://localhost:8080/ready # readiness, checks storage pathProbe the gRPC service (requires grpcurl):
grpcurl -plaintext localhost:50051 listIncrease log verbosity for either server:
RUST_LOG=arbor_git=debug,tower_http=debug cargo runcargo build # build
cargo test # test
cargo clippy # lint
cargo fmt # formatThe code in this repository is licensed under Apache 2.0, © Omni LLC. See LICENSE.md for more information.