Install the command-line tools
Overview
Gitmoap ships two command-line programs, and you want both. gitmoap talks to the API — signing in, creating repositories, opening merge requests, watching a pipeline run. git-remote-gitmoap teaches your existing git to push to and clone from gitmoap:// addresses, so git push works the way it always has.
Every install channel below gives you both programs and the same binaries. Pick the one that matches how you already install software; there is nothing to choose between them beyond that.
Before you start
gitmust be installed.git-remote-gitmoaprunsgitto build and read the packs it transfers, so it is a requirement rather than a companion. Every packaged channel below installs it for you if it is missing; a downloaded archive does not.- You need a Gitmoap accountto sign in afterwards — sign up at gitmoap.com. There is nothing else to configure: the tools connect to Gitmoap on their own.
- No account is needed to install.Everything below is a public download.
How to
Install on macOS
Homebrew installs Gitmoap on a Mac with Apple Silicon. The formula places a prebuilt binary, so the install takes seconds and puts no compiler on your Mac.
brew tap gitmoap/tap https://get.gitmoap.com/homebrew-tap.gitbrew trust gitmoap/tapbrew install gitmoapNote
The brew trust line is a separate command on purpose. Homebrew asks you to trust any tap that is not one of its own before it will load formulae from it, and brew install fails with tap is not trusted until you do.
Install on an Intel Mac
There is no prebuilt binary for Intel Macs, so build the two programs from the source distribution. You need a Rust toolchain, which rustup installs.
curl -fLO https://get.gitmoap.com/releases/0.0.1/gitmoap-0.0.1.tar.gzcurl -fLO https://get.gitmoap.com/releases/0.0.1/SHA256SUMSshasum -a 256 -c --ignore-missing SHA256SUMStar xzf gitmoap-0.0.1.tar.gzcd gitmoap-0.0.1cargo install --locked --path crates/gitmoap-clicargo install --locked --path crates/git-remote-gitmoapcargo install puts both programs in ~/.cargo/bin, which rustup adds to your PATH. The build takes a few minutes; nothing else is needed.
Install on Debian or Ubuntu
sudo install -d -m 0755 /etc/apt/keyringscurl -fsSL https://get.gitmoap.com/gitmoap.gpg \ | sudo tee /etc/apt/keyrings/gitmoap.gpg > /dev/nullecho "deb [signed-by=/etc/apt/keyrings/gitmoap.gpg] https://get.gitmoap.com stable main" \ | sudo tee /etc/apt/sources.list.d/gitmoap.listsudo apt update && sudo apt install gitmoapCheck the key against the fingerprint in Signing keys before you trust it. apt update fails with The repository … is not signed if the key did not install, which is the failure you want — it means nothing unverified was accepted.
Install on Fedora, RHEL or openSUSE
Download the .rpm for your architecture from the release page and install it:
curl -fLO https://get.gitmoap.com/releases/0.0.1/gitmoap-0.0.1-1.x86_64.rpmsudo rpm --import https://get.gitmoap.com/gitmoap.ascsudo dnf install ./gitmoap-0.0.1-1.x86_64.rpmNote
rpm -i on its own refuses the package, saying git is required. That is the packaging working: install through dnf or zypper and the dependency is resolved for you.
Install on Alpine
wget -qO /etc/apk/keys/gitmoap.rsa.pub https://get.gitmoap.com/gitmoap.rsa.pubecho "https://get.gitmoap.com/alpine/v3.21/main" >> /etc/apk/repositoriesapk update && apk add gitmoapAlpine verifies each package as well as the index, so apk add refuses anything the key above does not vouch for.
Install on Windows
Three package managers carry Gitmoap on Windows; any of them gives you the same binaries.
Chocolatey:
choco install gitmoapScoop:
scoop bucket add gitmoap https://get.gitmoap.com/scoop-bucket.gitscoop install gitmoapwinget:
winget install Gitmoap.gitmoapWarning
Windows shows a SmartScreen warning the first time you run a downloaded Gitmoap binary, because the executables are not signed with an Authenticode certificate. Verify the download against its checksum instead — see Verify a download — and report anything that does not match rather than clicking through.
Install from an archive
Use this when your platform has no package, or when you want a specific version without a package manager.
curl -fsSL https://get.gitmoap.com/install.sh | shThe script picks the archive for your platform, checks it against the published checksum, tells you what it will install and where, and stops if anything does not match. --version installs a specific release, --bin-dir chooses where the programs go.
Warning
Piping a script into a shell trusts whatever the server sends you, protected by nothing but TLS. Download it, read it, then run it if you would rather not extend that trust:
curl -fsSLO https://get.gitmoap.com/install.shless install.shsh install.shTo do it by hand, download the archive for your platform, verify it, unpack it, and put both programs somewhere on your PATH:
curl -fLO https://get.gitmoap.com/releases/0.0.1/gitmoap-0.0.1-x86_64-unknown-linux-musl.tar.gzcurl -fLO https://get.gitmoap.com/releases/0.0.1/SHA256SUMSsha256sum -c --ignore-missing SHA256SUMStar xzf gitmoap-0.0.1-x86_64-unknown-linux-musl.tar.gzsudo install -m 0755 gitmoap-0.0.1-x86_64-unknown-linux-musl/gitmoap /usr/local/bin/sudo install -m 0755 gitmoap-0.0.1-x86_64-unknown-linux-musl/git-remote-gitmoap /usr/local/bin/Note
git-remote-gitmoap has to keep that exact name and be on your PATH. git finds it by name when it sees a gitmoap:// address, so renaming it or putting it somewhere git cannot see it is what causes git: 'remote-gitmoap' is not a git command.
Verify a download
Every release publishes a SHA256SUMS file listing each archive and its digest, and every channel above quotes the same numbers.
sha256sum -c --ignore-missing SHA256SUMS--ignore-missing checks the files you actually downloaded rather than failing on the ones you did not. A line ending OK is a match; anything else means you should not install what you have.
Check it worked
gitmoap --versiongit-remote-gitmoap --versionBoth print the same version. Then sign in:
gitmoap logingitmoap doctorgitmoap doctor checks the parts that are easy to get half-right — whether you are signed in, whether the remote helper is on your PATH under the name git looks for, and whether Gitmoap answers.
Reference
Channels
| Platform | Channel | What you get |
|---|---|---|
| macOS | Homebrew tap | A prebuilt binary for Apple Silicon; an Intel Mac builds from the source distribution |
| Debian, Ubuntu | apt repository | A signed .deb, updated by apt upgrade |
| Fedora, RHEL, openSUSE | .rpm download | A signed package, installed through dnf or zypper |
| Alpine | apk repository | A signed .apk, updated by apk upgrade |
| Windows | Chocolatey, Scoop, winget | A downloaded archive, verified against its digest |
| Anything else | Archive or install script | The binaries, and a checksum file to verify them |
Download layout
Everything is served from one host, and every path below is public.
| Path | Holds |
|---|---|
/install.sh | The install script |
/releases/{version}/ | The archives for one release, and its SHA256SUMS |
/latest | The current version number, one line. What the install script reads to decide what to fetch |
/gitmoap.gpg | The public key apt verifies against, as a keyring |
/gitmoap.asc | The same key, ASCII-armoured, for rpm --import |
/gitmoap.rsa.pub | The public key apk verifies against |
/homebrew-tap.git | The Homebrew tap |
/scoop-bucket.git | The Scoop bucket |
/alpine/{release}/main/{arch}/ | The apk repository |
/dists/, /pool/ | The apt repository |
Platforms
| Platform | Architectures |
|---|---|
| Linux (any distribution) | x86_64, aarch64 — built against musl, so they run wherever Linux does |
| macOS | arm64, prebuilt; x86_64, built from the source distribution |
| Windows | x86_64 |
Signing keys
Two keys sign what you install: an OpenPGP key for the apt repository and the rpm packages, and an RSA key for the apk packages and their index. The same key signs every package in its ecosystem, so you install one public key per package manager and it covers everything published afterwards.
The OpenPGP key is published twice, as the same key in two encodings, because apt and rpm each take one and refuse the other. gitmoap.gpg is the keyring apt names in signed-by=; gitmoap.asc is the armoured form rpm --import accepts.
Check the fingerprint you have against the one below before trusting a key:
OpenPGP C562 20FD 7E19 6582 10A4 BEEC 6ED5 5516 461B 8173apk SHA256:9396d0f822d04ddb71ce26f2cb786bb52809a87829896805740b6a5aaab9d2a9gpg --show-keys --with-fingerprint gitmoap.gpgWarning
A key downloaded from the same host as the packages proves only that the host is consistent with itself. Compare the fingerprint above against a source that is not that host before you trust a repository.
Troubleshooting
The repository … is not signed, or NO_PUBKEY
- Cause
- The apt key did not install, or landed in the wrong place
- What to do
- Re-run the
curl … tee /etc/apt/keyrings/gitmoap.gpgstep and confirm the file is there and non-empty, thensudo apt update
UNTRUSTED signature from apk
- Cause
/etc/apk/keys/gitmoap.rsa.pubis missing- What to do
- Download it again with the
wgetline above; the file name has to be exactlygitmoap.rsa.pub, becauseapkmatches a signature to a key by its name
BAD signature from apk
- Cause
- The key in
/etc/apk/keys/is not the one that signed the packages - What to do
- Replace it with the key from the download host and compare its fingerprint against Signing keys
git: 'remote-gitmoap' is not a git command
- Cause
git-remote-gitmoapis not on yourPATH, or was renamed- What to do
- Put it on your
PATHunder exactly that name —gitlooks it up by name when it sees agitmoap://address.gitmoap doctorreports this
tap is not trusted from brew
- Cause
- The tap was added but not trusted
- What to do
- Run
brew trust gitmoap/tap, then install again
brew install gitmoap says the arm64 architecture is required
- Cause
- The Mac has an Intel processor, and the formula carries the Apple Silicon binary
- What to do
- Build from the source distribution — see Install on an Intel Mac
SmartScreen warns about an unrecognised app
- Cause
- The Windows binaries carry no Authenticode signature
- What to do
- Verify the download against
SHA256SUMSand run it if it matches
sha256sum: WARNING: 1 computed checksum did NOT match
- Cause
- The download is damaged or is not the file that was published
- What to do
- Delete it and download again. If it fails a second time, do not install it — report it
rpm --import says key 1 not an armored public key
- Cause
- You imported
gitmoap.gpg, which is the keyring for apt - What to do
- Import
gitmoap.ascinstead — the same key, in the encodingrpmaccepts
rpm --checksig says SIGNATURES NOT OK
- Cause
- The signing key is not in
rpm's keyring - What to do
sudo rpm --import https://get.gitmoap.com/gitmoap.asc, then check again. It should saydigests signatures OK
rpm -i says git is required
- Cause
- The dependency is declared and
rpmdoes not resolve dependencies - What to do
- Install through
dnf install ./gitmoap-*.rpmorzypper install, which do
gitmoap login says it could not reach Gitmoap
- Cause
- No network, or a firewall or proxy blocking
api.gitmoap.com - What to do
- Check that
https://api.gitmoap.comopens from this machine, then rungitmoap doctor
Related
- Repositoriescreate one and push to it, once the tools are installed
- Access tokensfor a script or a build that cannot sign in interactively
- How the CLI reaches Gitmoapwhat the tools resolved and from where, and how to point them at another environment for testing