Features & organization

Gitrust brings together the building blocks of a modern Git around six pillars: memory security, regulatory compliance, self-hosting, collaboration, observability and integration. Each function is designed to remain simple, auditable and without external dependencies.

mindmap
  root((Gitrust))
    Securite memoire
      Rust memory safe
      Zeroize des secrets
      SSH RSA 4096 bits
    Conformite ANSSI
      PA-074
      Audit fournisseurs
      SBOM CycloneDX
    Self-hosting
      Zero cloud
      Zero telemetrie
      Bare-metal ou VPS
    Integration
      HTTP natif
      SSH natif
      Clients Git standards
    Collaboration
      Multi-team
      Roles hierarchiques
      Permissions fines
    Observabilite
      SBOM exportable
      Dependency-Track
      Audit CVE

Glossary of features

Memory security

Rust memory-safe
100% Rust base with #![forbid(unsafe_code)] on critical crates. No undefined behavior, no exploitable memory leaks.
Strict Lints
deny(unwrap_used, expect_used, panic, indexing_slicing) applied to the entire code. Errors are managed, never avoided.
Zeroize
The secrets (tokens, hashes) implement the trait Zeroize : the memory is automatically erased upon destruction.
Hardened SSH
RSA keys >= 4096 bits imposed, weak algorithms rejected, SHA256 fingerprints verified at each connection.

ANSSI PA-074 compliance

Supplier audit
Each dependency is traced, versioned and auditable via the Cargo manifest and the integrated SBOM CycloneDX.
Traversal path blocked
Systematic validation of disk paths (owner + slug): rejection of .., / And \.
Logging
Audit traces on sensitive operations: creation, sharing, deletion of deposit, key rotation, change of permission.

Self-hosting

Sovereign deployment
A Rust archive, a PostgreSQL, a disk volume. No third-party services, no external network calls.
Zero CDN
All assets (CSS, JS, fonts) are served locally. Strict CSP blocking external domains.
Zero telemetry
No data is reported anywhere other than your own logs. The metrics stay with you.

Collaboration

Hierarchical roles
Four clear roles: Reader, Developer, Maintainer, Owner. Effective permissions = max(individual, team).
Shared deposits
Individual or team sharing, with or without inheritance. Rights combine, never circumvent each other.
Organizations
Multi-team structure with namespace and SSH key isolation.

Integration

Native HTTP Git
Full Smart HTTP (clone, fetch, push) without proxy layer. Compatible with all standard Git clients.
Native Git SSH
Integrated SSH server (port 2222 by default), public key authentication, fine hook management.
Extendable hooks
Expansion Points pre-receive, post-receive, update to connect your CI pipelines, your scanners, your notifications.
Dagger CI optional
Native triggering of Dagger CI pipelines on each push via the hook post-receive. Reproducible, portable and versioned builds on the repository.
Cohesive API
REST endpoints for automation (repository creation, key management, user invitation).

Observability and quality

SBOM CycloneDX
Automatic generation of the software nomenclature in CycloneDX 1.5 format, exportable to Dependency-Track.
Vulnerability analysis
Continuous integration with Dependency-Track: detection and monitoring of CVEs on all dependencies.
Structured logs
JSON logs usable by any aggregator (ELK, Loki, Graylog) without adapting a parser.

Developer workflow

flowchart LR
    Dev["Developpeur
git, SSH, HTTPS"] Gitrust["Gitrust
axum, HTMX, Rust"] PG[("PostgreSQL
metadata, permissions")] Repos[("Bare repos
disque local")] Dagger["Dagger CI
pipelines, post-receive"] DTrack["Dependency-Track
SBOM, CVE"] Dev -->|"git push"| Gitrust Gitrust -->|"core data"| PG Gitrust -->|"core data"| Repos Gitrust -.->|"hooks CI"| Dagger Gitrust -.->|"hooks CI"| DTrack

Ready to take back control of your code?

Gitrust is in gradual deployment. To access a demo, ask your questions or receive support on ANSSI-compliant integration, contact the team.