Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gamal

gamal is a partial Go port of Kamal 2.12, with customizations for the way we deploy. It uses the same config/deploy.yml format and kamal-proxy runtime contract, but is not a line-for-line port.

See History and comparison for its origins, design differences, and intentionally unsupported Kamal features.

Install

Building requires Go 1.27+. Deploying requires Docker locally and on each target host, plus SSH access for remote targets.

git clone https://github.com/beint-no/gamal.git
cd gamal
make test
make install        # installs ~/.local/bin/gamal

To start a new project, run gamal init. Existing Kamal 2.12 projects can keep their config/deploy.yml, destination overlays, .kamal/secrets, and hooks.

Deploy

Run gamal from the application root:

gamal doctor                                      # check config and hosts
gamal plan --version="$version"                    # preview commands
gamal deploy --skip-hooks --version="$version"     # deploy
gamal deploy -d staging --version="$version"       # deploy a destination

--version selects the application image version; gamal version prints the CLI version. Use --hosts, --roles, or --primary to limit a command, and --config-file to use a non-default config path.

For a same-host deployment, use the Docker builder driver. gamal builds into the local Docker engine and skips the registry push/pull round trip when every target is local.

Commands

Command Purpose
deploy, redeploy, rollback, setup, remove Manage a rollout
doctor, plan, config, details, audit Inspect before or after a rollout
app … Manage application containers, logs, and commands
proxy … Manage kamal-proxy
build …, registry … Manage images and registry access
lock …, prune …, server … Manage deployment infrastructure

Run gamal help or gamal <command> --help for flags and subcommands.

Runtime compatibility

gamal preserves Kamal's production-facing names and paths:

  • Docker network and proxy container: kamal and kamal-proxy
  • Proxy settings: .kamal/proxy/options
  • App environment: .kamal/apps/<service>/env/roles/<role>.env
  • Deploy lock: .kamal/lock-<service>[-<destination>]
  • Container labels and names used by Kamal 2.12

This lets gamal manage deployments previously created by Kamal within its supported scope.

About

Kamal-protocol deploy CLI in Go: same config/deploy.yml and kamal-proxy, single static binary.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages