CLI pays a full SSH handshake on every command #94

closed cmc opened this on 2026-09-03 05:12 UTC · cli priority · milestone v1.10.0

Discussion

cmc 2026-09-03 05:12 UTC

From a laptop with a 170 ms round trip, every invocation takes 3.8 s wall and 1.5 s of client CPU. The same command over an OpenSSH multiplexed connection takes 0.34 s.

invocation wall client cpu
gitbay auth whoami 3.84 s 1.53 s
ssh git@gitbay.org whoami 3.81 s 1.53 s
same with ControlMaster=auto ControlPersist=60, warm 0.34 s 0.00 s

The CLI spawns ssh with no ControlMaster options (cmd/gitbay/ssh.go:95, :127, local.go:197) and the README's client quickstart does not mention multiplexing.

Remedy: pass -o ControlMaster=auto -o ControlPath=~/.ssh/gitbay-%C -o ControlPersist=300 by default, with a profile switch to disable. Separately, profile why the handshake costs 1.5 s of client CPU; a curve25519 exchange should not.

closed by commit 0dd284d9dd by cmc: cli: share one SSH connection per instance

2026-09-03 15:59 UTC