The Co-op Cloud command-line utility belt 🎩🐇
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3wc 95e19f03c4 fix: make release not crash on missing images 21 hours ago
.chglog chore: added git-chglog options 3 months ago
.gitea docs: add template 1 month ago
cli fix: make release not crash on missing images 21 hours ago
cmd/abra docs: document main package 1 month ago
pkg chore: change test context names 1 day ago
scripts chore: publish new version 3 days ago
tests/resources test: ensure .env reading tests work 2 weeks ago
.drone.yml fix: use more descriptive name for token [ci skip] 1 month ago
.envrc.sample dosc: add gitea token [ci skip] 1 month ago
.gitignore test: increatse client/context.go coverage to 90% 1 day ago
.goreleaser.yml fix: show descending orders on releases [ci skip] 2 weeks ago
Makefile fix: drop file for version handling [ci skip] 1 month ago docs: how to enable bash autocomplete from source 3 days ago
go.mod chore: set 1.16 as requirement now 4 days ago
go.sum chore: set 1.16 as requirement now 4 days ago


Build Status Go Report Card

The Co-op Cloud utility belt 🎩🐇

abra is a command-line tool for managing your own Co-op Cloud. It can provision new servers, create applications, deploy them, run backup and restore operations and a whole lot of other things. It is the go-to tool for day-to-day operations when managing a Co-op Cloud instance.


Arch-based Linux Distros

abra (coming-soon) or for the latest version on git abra-git

yay -S abra-git # or abra

Debian-based Linux Distros

Coming Soon


Coming Soon

Build from source

git clone
cd abra
go env -w
make install

The abra binary will be in $GOPATH/bin.



Copy scripts/autocomplete/bash into /etc/bash_completion.d/ and rename it to abra.

sudo cp scripts/autocomplete/bash /etc/bash_completion.d/abra
source /etc/bash_completion.d/abra

In development, you can source the script in your git checkout, just make sure to set PROG=abra, otherwise it'll add completion to the wrong command:

PROG=abra source /path/to/abra/scripts/autocomplete/bash


(fi)zsh doesn't have an autocompletion folder by default but you can create one, then copy scripts/autocomplete/zsh into it and add a couple lines to your ~/.zshrc or ~/.fizsh/.fizshrc

sudo mkdir /etc/zsh/completion.d/
sudo cp scripts/autocomplete/zsh /etc/zsh/completion.d/abra
echo "PROG=abra\n_CLI_ZSH_AUTOCOMPLETE_HACK=1\nsource /etc/zsh/completion.d/abra" >> ~/.zshrc

(replace .zshrc with ~/.fizsh/.fizshrc if you use fizsh)


Install direnv, run cp .envrc.sample .envrc, then run direnv allow in this directory. This will set coopcloud repos as private due to this bug.. Or you can run go env -w but I'm not sure how persistent this is.

Install Go >= 1.16 and then:

  • make build to build
  • ./abra to run commands
  • make test will run tests

Our Drone CI configuration runs a number of sanity on each pushed commit. See the Makefile for more handy targets.

Please use the conventional commit format for your commits so we can automate our change log.


We use goreleaser to help us automate releases. We use semver for versioning all releases of the tool. While we are still in the public alpha release phase, we will maintain a 0.y.z-alpha format. Change logs are generated from our commit logs. We are still working this out and aim to refine our release praxis as we go.

For developers, while using this -alpha format, the y part is the "major" version part. So, if you make breaking changes, you increment that and not the x part. So, if you're on 0.1.0-alpha, then you'd go to 0.1.1-alpha for a backwards compatible change and 0.2.0-alpha for a backwards incompatible change.

Making a new release

  • Change ABRA_VERSION to match the new tag in scripts (use semver)
  • Commit that change (e.g. git commit -m 'chore: publish next tag 0.3.1-alpha')
  • Make a new tag (e.g. git tag 0.y.z-alpha)
  • Push the new tag (e.g. git push && git push --tags)
  • Wait until the build finishes on
  • Deploy the new installer script (e.g. cd ./scripts/installer && make)
  • Check the release worked, (e.g. abra upgrade; abra version)

Fork maintenance

We maintain a fork of godotenv for two features:

  1. multi-line env var support
  2. inline comment parsing

You can upgrade the version here by running go get<commit> where <commit> is the latest commit you want to pin to. We are aiming to migrate to YAML format for the environment configuration, so this should only be a temporary thing.