Skip to main content

Crate gitaway

Crate gitaway 

Source
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 host or host: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.