The procedure is simple. You will need to gave go installed as well as make.
First, clone the repository:
git clone https://github.com/cloudbase/garm
cd garmThen build garm:
make buildYou should now have both garm and garm-cli available in the ./bin folder.
If you have docker/podman installed, you can also build a static binary against musl:
make build-staticThis command will also build for both AMD64 and ARM64. Resulting binaries will be in the ./bin folder.
If you're hacking on GARM and want to override the default version GARM injects, you can run the following command:
VERSION=v1.0.0 make buildImportant
This only works for make build. The make build-static command does not support version overrides.
GARM now ships with a single page application. The application is written in svelte and tailwind CSS. To rebuild it or hack on it, you will need a number of dependencies installed and placed in your $PATH.
- Node.js 24+ and npm
- Go 1.21+ (for building the GARM backend)
- openapi-generator-cli in your PATH (for API client generation)
Option 1: NPM Global Install
npm install -g @openapitools/openapi-generator-cliOption 2: Manual Install Download from OpenAPI Generator releases and add to your PATH.
Verify Installation:
openapi-generator-cli versionIf you need to change something in the webapp/src folder, make sure to rebuild the webapp before rebuilding GARM:
make build-webui
make buildImportant
The Web UI that GARM ships with has go generate stanzas that require @openapitools/openapi-generator-cli and tailwindcss to be installed. You will also have to make sure that if you change API models, the Web UI still works, as adding new fields or changing the json tags of old fields will change accessors in the client code.
If you need to change the models in the params/ package, you will also need to regenerate the client both for garm-cli and for the web application we ship with GARM. To do this, you can run:
make generateYou will also need to make sure that the web app still works.