Skip to content

Self-host

You do not need to run infrastructure to use ngit. Self-host only when you want to provide repository storage, a relay, CI, or all three.

Choose the service

You want to…RunContinue
Host Git objects and a repository-aware Nostr relayngit-graspHost repositories
Execute workflows and publish signed CI resultsngit-ciRun CI
Offer bothboth servicesDeploy grasp first, then CI
Build a compatible hosting serviceyour own GRASP implementationRead the GRASP reference

The components are independent. ngit-ci can serve repositories announced through any compatible provider; ngit-grasp does not require CI.

A sensible production order

  1. Deploy ngit-grasp and verify its WebSocket relay and Git smart-HTTP paths.
  2. Confirm persistent storage, backups, TLS, access policy, and metrics.
  3. Decide which repositories and workflow authors you are prepared to trust.
  4. Add ngit-ci with a container or microVM execution boundary.

The generated references contain the exhaustive settings. The overview pages focus on decisions, deployment shape, and verification.

What users see

A public GRASP service can be selected during repository creation:

bash
ngit init --name "My Project" \
  --grasp-server grasp.example.com \
  --defaults

A CI coordinator is selected independently:

bash
ngit ci request <COORDINATOR-NPUB>

Neither choice makes the provider authoritative. Repository refs and collaboration state remain signed Nostr events.

Git collaboration, without the platform.