Expand description
§gitaway
Reach a self-hosted git server from anywhere. At home, gitaway runs git directly. Away from home, it opens a VPN tunnel that only the gitaway process uses: no system-wide VPN, no virtual network adapter, no root.
gitaway wraps the git binary rather than reimplementing it. Commands it
doesn’t own are passed to git unchanged, and git’s exit code is returned
unchanged.
This crate is a library with two thin binaries (gitaway and git-away,
so git away push works). Nearly all the logic lives here, so it can be
tested and documented directly.
§Stability
The stability promise covers the command-line interface and the profile file format. The library API is an internal detail of the binaries and may change in any release.
See docs/ in the repository for the architecture and contributor guides.
Modules§
- address
- Network addresses written as
hostorhost:port. - cli
- The command line: decide what a command is, then hand it to the right place.
- config
- gitaway’s own configuration: where it lives, what a profile contains, and which profile applies to a command.
- error
- The error type for gitaway’s commands, and how errors become exit codes.
- git
- Everything gitaway knows about git.
- hardening
- Process hardening: making gitaway’s memory harder for other programs to read while it holds a secret.
- home_
check - Decide whether you’re on a profile’s home network by making its SSH server prove its identity.
- keys
- Device keys: the WireGuard private key each profile uses for its tunnel.
- proxy
- The per-command proxy git talks to when you’re away from home.
- transport
- Transports: how gitaway reaches home from elsewhere.