Skip to content


clilol is a CLI for the various fun services offered by All the services supported by the API are supported.


Please see the links in the navigation menu to the left to learn about all the different commands provided by clilol.


You can install clilol in any of these ways. (These are the only supported builds of clilol. I don't submit them to "official" repositories, at least not yet. If you find a problem with anyone else's build, please try my builds instead.)


I maintain a Homebrew tap.

brew tap mcornick/tap
brew install mcornick/tap/clilol


I maintain a Scoop bucket.

scoop bucket add mcornick
scoop install clilol

Container Images

I maintain container images on my Git server here.

docker run --rm

Container manifests are signed with Cosign. The signatures are created with my Cosign key:

cosign verify --key

Binaries and Linux packages

I maintain binary releases on my Git server here. Releases are built for macOS (universal), Linux (i386, amd64, arm64, and armv6) and Windows (i386, amd64). Linux packages are built in RPM, DEB, APK, and Arch Linux pkg.tar.zst formats.

Binary checksums included on the release pages are signed with my GPG key.

YUM Repository

RPM packages are also available from my Gemfury repository.

# /etc/yum.repos.d/mcornick.repo
name=mcornick yum repo

APT Repository

DEB packages are also available from my Gemfury repository.

# /etc/apt/sources.list.d/mcornick.list
deb [trusted=yes] /

Arch User Repository

I maintain an AUR for clilol.

git clone
cd clilol-aur
makepkg -i

From source

The usual: go install

While I do not build or test for platforms other than the ones listed under the Binaries tab, clilol should still work on any platform supported by Go, and if you find that it does not, feel free to file an issue, and I'll take a look.

Configuration File

clilol expects a configuration file to specify your address, login email, and API key. You can find your API key on your account page.

The configuration file should be named either config.yaml, config.toml or config.json depending on which format you prefer, and should be located in one of these directories:

  • $HOME/Library/Application Support/clilol (macOS)
  • $XDG_CONFIG_HOME/clilol (Unix)
  • /etc/clilol (macOS or Unix)
  • %AppData%\clilol (Windows)

The file should look like one of these, substituting your own details:

address: tomservo
email: tomservo@gizmonics.invalid
apikey: 0123456789abcdef0123456789abcdef
address = "tomservo"
email = "tomservo@gizmonics.invalid"
apikey = "0123456789abcdef0123456789abcdef"
  "address": "tomservo",
  "email": "tomservo@gizmonics.invalid",
  "apikey": "0123456789abcdef0123456789abcdef"

A JSON Schema for the configuration file is available, for editors that support it.


Your email address is only needed to identify your account for the clilol account commands. It is not used by clilol for anything else, such as spamming you.

Environment Variables

Configuration is also possible using environment variables:

export CLILOL_ADDRESS="tomservo"
export CLILOL_EMAIL="tomservo@gizmonics.invalid"
export CLILOL_APIKEY="0123456789abcdef0123456789abcdef"

Environment variables are the easiest way to pass configuration when running the container images:

docker run --rm -ti --env CLILOL_ADDRESS=tomservo --env CLILOL_APIKEY=0123456789abcdef0123456789abcdef --env CLILOL_EMAIL=tomservo@gizmonics.invalid ...
# or put the configuration in a dotenv file:
docker run --rm -ti --env-file .env ...

Environment variables take precedence over any configuration file.

Reading apikey from a command


This has not been tested on Windows (yet.)

Rather than hardcoding your API key in the configuration file or environment, you can specify a command which, when run, will return the API key on standard output, such as:

address: tomservo
email: tomservo@gizmonics.invalid
apikeycmd: gopass -o
address = "tomservo"
email = "tomservo@gizmonics.invalid"
apikeycmd = "gopass -o"
  "address": "tomservo",
  "email": "tomservo@gizmonics.invalid",
  "apikeycmd": "gopass -o"
export CLILOL_ADDRESS="tomservo"
export CLILOL_EMAIL="tomservo@gizmonics.invalid"
export CLILOL_APIKEYCMD="gopass -o"

In this example, clilol would use the output of gopass -o as the API key. If the command fails, clilol will print an error stating that the API key is missing.

If apikeycmd is specified, it takes precedence over apikey if that is also specified..


clilol releases are announced on my Mastodon account which you are welcome to follow.

To verify signatures on commits to clilol, you might need my SSH public key or my GPG public key.

Thanks to the following people for helping to improve clilol:

clilol is a labor of love. I do not expect, do not request, and will not accept any payment for it. If you like clilol, please show your support by subscribing (or continuing to subscribe) to, a service that does not sell you or your data as a product, and thus relies on paid subscribers to keep the lights on.

clilol is made by Mark Cornick who is solely responsible for it. clilol is not a product of Neatnik/; please don't bug them for support. Thanks!