Skip to content
/ cli Public

A command line interface for pushing messages to gotify/server.

License

Notifications You must be signed in to change notification settings

gotify/cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3f1f590 · Mar 14, 2025

History

63 Commits
Aug 1, 2024
Mar 3, 2025
May 21, 2020
Aug 1, 2024
Nov 24, 2018
Aug 1, 2024
Jul 8, 2022
Nov 25, 2018
Dec 11, 2021
Mar 14, 2025
Apr 23, 2019
Jun 23, 2024
Jun 23, 2024
Nov 25, 2018

Repository files navigation

Gotify-CLI travus-badge badge-release

Gotify-CLI is a command line client for pushing messages to gotify/server. It is not required to push messages. See alternatives.

Features

  • stores token/url in a config file
  • initialization wizard
  • piping support (echo message | gotify push)
  • simple to use
  • watch and push script result changes (gotify watch "curl http://example.com/api | jq '.data'")

Alternatives

You can simply use curl, HTTPie or any other http-client to push messages.

$ curl -X POST "https://push.example.de/message?token=<apptoken>" -F "title=my title" -F "message=my message"
$ http -f POST "https://push.example.de/message?token=<apptoken>" title="my title" message="my message"

Installation

Manually

Download the latest release for your os: (this example uses version v2.2.0)

$ wget -O gotify https://github.com/gotify/cli/releases/download/v2.2.0/gotify-cli-linux-amd64
# or
$ curl -Lo gotify https://github.com/gotify/cli/releases/download/v2.2.0/gotify-cli-linux-amd64

Make gotify executable:

$ chmod +x gotify

Test if the Gotify-CLI works: (When it doesn't work, you may have downloaded the wrong file or your device/os isn't supported)

$ gotify version

It should output something like this:

Version:   2.2.0
Commit:    95cc125e39f805a1369b0c746c8bf3af15797a57
BuildDate: 2020-09-25-16:27:04

(optional) Move the executable to a folder on your $PATH:

$ mv gotify /usr/bin/gotify

Arch Linux

Gotify-CLI is available in the AUR, so you can install it with any AUR helper, i.e. yay:

$ yay -S gotify-cli

Maintenance of the AUR package is not performed by the Gotify team.

macOS

Gotify-CLI is available in Homebrew, so you can install it with:

$ brew install gotify

Maintenance of the Brew package is not performed by the Gotify team.

Usage

Now you can either run the initialization wizard or create a config manually. This tutorial uses the wizard.

$ gotify init

When you've finished initializing Gotify-CLI, you are ready to push messages to gotify/server.

Here are some examples commands, you can view the "push help" via gotify help push (or have a look at push help).

$ gotify push my message
$ gotify push "my message"
$ echo my message | gotify push
$ gotify push < somefile
$ gotify push -t "my title" -p 10 "my message"
$ gotify watch "curl http://example.com/api | jq '.data'"

Help

Uses version v2.2.0

NAME:
   Gotify - The official Gotify-CLI

USAGE:
   gotify [global options] command [command options] [arguments...]

VERSION:
   2.2.0

COMMANDS:
     init        Initializes the Gotify-CLI
     version, v  Shows the version
     config      Shows the config
     push, p     Pushes a message
     watch       watch the result of a command and pushes output difference
     help, h     Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

Watch help

NAME:
   gotify watch - watch the result of a command and pushes output difference

USAGE:
   gotify watch [command options] <cmd>

OPTIONS:
   --interval value, -n value  watch interval (sec) (default: 2)
   --priority value, -p value  Set the priority (default: 0)
   --exec value, -x value      Pass command to exec (default: "sh -c")
   --title value, -t value     Set the title (empty for command)
   --token value               Override the app token [$GOTIFY_TOKEN]
   --url value                 Override the Gotify URL
   --output value, -o value    Output verbosity (short|default|long) (default: "default")

Push help

$ gotify help push
NAME:
   gotify push - Pushes a message

USAGE:
   gotify push [command options] <message-text>

DESCRIPTION:
   the message can also provided in stdin f.ex:
   echo my text | gotify push

OPTIONS:
   --priority value, -p value    Set the priority (default: 0)
   --title value, -t value       Set the title (empty for app name)
   --token value                 Override the app token [$GOTIFY_TOKEN]
   --url value                   Override the Gotify URL
   --quiet, -q                   Do not output anything (on success)
   --contentType value           The content type of the message. See https://gotify.net/docs/msgextras#client-display
   --disable-unescape-backslash  Disable evaluating \n and \t (if set, \n and \t will be seen as a string)

Configuration

Note: The config can be created by gotify init.

Gotify-CLI will search the following paths for a config file:

  • /etc/gotify/cli.json
  • $XDG_CONFIG_HOME/gotify/cli.json
  • ~/.gotify/cli.json
  • ./cli.json

Structure

name description example
token an application token (a client token will not work) A4ZudDRdLT40L5X
url the URL to your gotify/server https://gotify.example.com
defaultPriority Default priority ( set to 0 if not present) 6

Config example

{
  "token": "A4ZudDRdLT40L5X",
  "url": "https://gotify.example.com",
  "defaultPriority": 6
}

Configuration option

If needed, you can disable SSL handcheck validation using an environment variable:

export GOTIFY_SKIP_VERIFY_TLS=True

For better security with self-signed certificate, you can also set custom root CA or pin the server cert for TLS verification:

export SSL_CERT_FILE=/path/to/cert.pem

Dockerfile

The Dockerfile contains the steps necessary to build a new version of the CLI and then run it in a minimal Alpine container.

Build:

docker build -t gotify/gotify-cli .

Run (this assumes your cli.json file is in the current working directory):

docker run -it -v "$PWD/cli.json:/home/app/cli.json" gotify/gotify-cli:latest push -p 5 "Test from Gotify CLI"