ntfy is a super simple pub-sub notification service. It allows you to send desktop notifications via scripts.

Related tags

Messaging ntfy
Overview

ntfy

ntfy (pronounce: notify) is a super simple pub-sub notification service. It allows you to send desktop and (soon) phone notifications via scripts. I run a free version of it on ntfy.sh. No signups or cost.

Usage

Subscribe to a topic

Topics are created on the fly by subscribing to them. You can create and subscribe to a topic either in a web UI, or in your own app by subscribing to an SSE/EventSource, or a JSON or raw feed.

Because there is no sign-up, the topic is essentially a password, so pick something that's not easily guessable.

Here's how you can create a topic mytopic, subscribe to it topic and wait for events. This is using curl, but you can use any library that can do HTTP GETs:

# Subscribe to "mytopic" and output one message per line (\n are replaced with a space)
curl -s ntfy.sh/mytopic/raw

# Subscribe to "mytopic" and output one JSON message per line
curl -s ntfy.sh/mytopic/json

# Subscribe to "mytopic" and output an SSE stream (supported via JS/EventSource)
curl -s ntfy.sh/mytopic/sse

You can easily script it to execute any command when a message arrives. This sends desktop notifications (just like the web UI, but without it):

while read msg; do 
  notify-send "$msg"
done < <(stdbuf -i0 -o0 curl -s ntfy.sh/mytopic/raw)

Publish messages

Publishing messages can be done via PUT or POST using. Here's an example using curl:

curl -d "long process is done" ntfy.sh/mytopic

Messages published to a non-existing topic or a topic without subscribers will not be delivered later. There is (currently) no buffering of any kind. If you're not listening, the message won't be delivered.

Installation

Please check out the releases page for binaries and deb/rpm packages.

  1. Install ntfy using one of the methods described below
  2. Then (optionally) edit /etc/ntfy/config.yml
  3. Then just run it with ntfy (or systemctl start ntfy when using the deb/rpm).

Binaries and packages

Debian/Ubuntu (from a repository):

curl -sSL https://archive.heckel.io/apt/pubkey.txt | sudo apt-key add -
sudo apt install apt-transport-https
sudo sh -c "echo 'deb [arch=amd64] https://archive.heckel.io/apt debian main' > /etc/apt/sources.list.d/archive.heckel.io.list"  
sudo apt update
sudo apt install ntfy

Debian/Ubuntu (manual install):

sudo apt install tmux
wget https://github.com/binwiederhier/ntfy/releases/download/v0.0.4/ntfy_0.0.4_amd64.deb
dpkg -i ntfy_0.0.4_amd64.deb

Fedora/RHEL/CentOS:

rpm -ivh https://github.com/binwiederhier/ntfy/releases/download/v0.0.4/ntfy_0.0.4_amd64.rpm

Docker:

docker run --rm -it binwiederhier/ntfy

Go:

go get -u heckel.io/ntfy

Manual install (any x86_64-based Linux):

wget https://github.com/binwiederhier/ntfy/releases/download/v0.0.4/ntfy_0.0.4_linux_x86_64.tar.gz
sudo tar -C /usr/bin -zxf ntfy_0.0.4_linux_x86_64.tar.gz ntfy
./ntfy

Building

Building ntfy is simple. Here's how you do it:

make build-simple
# Builds to dist/ntfy_linux_amd64/ntfy

To build releases, I use GoReleaser. If you have that installed, you can run make build or make build-snapshot.

FAQ

Isn't this like ...?

Probably. I didn't do a whole lot of research before making this.

Can I use this in my app?

Yes. As long as you don't abuse it, it'll be available and free of charge.

What are the uptime guarantees?

Best effort.

Why is the web UI so ugly?

I don't particularly like JS or dealing with CSS. I'll make it pretty after it's functional.

Will you know what topics exist, can you spy on me?

If you don't trust me or your messages are sensitive, run your ntfy on your own server. That said, the logs do not contain any topic names or other details about you.

TODO

  • add HTTPS

Contributing

I welcome any and all contributions. Just create a PR or an issue.

License

Made with ❀️ by Philipp C. Heckel, distributed under the Apache License 2.0.

Third party libraries and resources:

Comments
  • iOS app

    iOS app

    ~If you're interested in making an iOS app, I'm more than happy to help out. Unfortunately I don't have an iPhone or a Mac so it's a little tricky for me.~

    ~Significant work has been done here (https://github.com/Copephobia/ntfy-ios), but it's stale now, sadly.~

    I have picked up the work in https://github.com/binwiederhier/ntfy-ios and will hopefully be able to release soon.

    enhancement in-progress πŸƒ ios 
    opened by binwiederhier 74
  • Auth

    Auth

    I would like to require authentication to pub/sub to topics at least on private servers. I think Google Identity would be a good provider here since authenticating to it is a familiar part of the types of workflows I would like to incorporate this into.

    enhancement android-app in-progress πŸƒ πŸ”₯ HOT unified-push 
    opened by dwmccheyne 52
  • Maximize battery life

    Maximize battery life

    Having something like the following would be very cool, though it might be difficult to build. Basically:

    1. Detect that the device is on a new network (based on SSID, mobile data status, etc)
    2. The device calls the subscribe URL (/json or /sse) with ?keepalive=test
    3. The server sends keepalives at a known increasing interval, 30s, 35s, 40s, 45s ...
    4. At some point (say 90 sec), the client no longer receives the keepalive on time - it detects that the connection was disrupted.
    5. Next, it can connect to the server with ?keepalive=85 and receive keepalives every 85s.
    6. This information can be cached per SSID/mobile data/etc for some time.
    enhancement android-app 
    opened by karmanyaahm 22
  • Docker not starting with v1.18.1 on arm64

    Docker not starting with v1.18.1 on arm64

    I am trying to run ntfy on docker on a Raspberry 4. Executing

    docker run -p 127.0.0.1:4043:80 -it binwiederhier/ntfy serve
    

    stops after a few seconds without any output, and return code 132. (same if explicitly using the arm64-tagged image)

    Running on Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-1056-raspi aarch64)

    πŸͺ² bug build server 
    opened by iexos 19
  • Consider Including a Matrix Gateway endpoint as part of ntfy

    Consider Including a Matrix Gateway endpoint as part of ntfy

    Hello, this is kind of awkward to ask as the use-case is quite specific, but at the same time it should be fairly self-contained.

    Rationale

    The core issue is using UnifiedPush in conjunction with a Matrix Client and Server. The Matrix Client will pass a push URL to the Matrix server. However, the Matrix spec mandates some endpoints for push servers: https://spec.matrix.org/v1.2/push-gateway-api/

    Basically, the spec mandates the use of the /_matrix/push/v1/notify path.

    Therefore, one has to use an intermediate gateway before forwarding requests to ntfy. When users do not use their own, clients use default ones, which led to rate-limiting: #144

    Benefit to users

    Currently, users can host a gateway themselves through the common-proxies project, or some other rewrite proxy.

    That's one more step for users, who might feel discouraged from doing so. Including that gateway would increase privacy, for users of the public ntfy instance, but even more so for users who host their own homeserver and ntfy instance, as push messages do not need to travel through third-party gateways.

    Needed changes

    The set of features to support is relatively simple:

    • Answer
       GET /_matrix/push/v1/notify
      

      With

      HTTP/1.1 200 OK
      
      {"unifiedpush":{"gateway":"matrix"}}
      
    • Handle Pushes on that endpoint. From the spec:
      POST /_matrix/push/v1/notify
      
      {
      "notification": {
        "content": {
          "body": "I'm floating in a most peculiar way.",
          "msgtype": "m.text"
        },
        "counts": {
          "missed_calls": 1,
          "unread": 2
        },
        "devices": [
          {
            "app_id": "org.matrix.matrixConsole.ios",
            "data": {},
            "pushkey": "https://ntfy.sh/exampleTopicID?up=1",
            "pushkey_ts": 12345678,
            "tweaks": {
              "sound": "bing"
            }
          }
        ],
        "event_id": "$3957tyerfgewrf384",
        "prio": "high",
        "room_alias": "#exampleroom:matrix.org",
        "room_id": "!slw48wfj34rtnrf:example.com",
        "room_name": "Mission Control",
        "sender": "@exampleuser:matrix.org",
        "sender_display_name": "Major Tom",
        "type": "m.room.message"
      }
      }
      

      That should be forwarded to the topic in json_body["notification"]["devices"][0]["pushkey"]. In this case, exampleTopicID?up=1.

    • Answer that push with:
      HTTP/1.1 200 OK
      
      {"rejected":[]}
      

      Technically one could reject events for some topics that have never been listened to, or were deleted from the app, but that sounds a bit alien to the way ntfy works.

    That's all. This should only be necessary until the Matrix Spec Change 2970 lands to delete that requirement and allow arbitrary paths, so that's your call.

    Impact assessment

    One more thing to expect: on the public ntfy instance, FluffyChat's and schildichat's public gateways wouldn't be used anymore, so individual Matrix servers would be subjected to rate-limiting instead, probably Matrix.org, kde.org and mozilla.org, as they are the biggest I can think of right now.

    On the other hand, it makes it easier to single out abusive Matrix homeservers without locking users out. Moreover, as more clients appear (Element will soon support UP), more gateways will appear.

    It might also make it easier to rate-limit matrix separately while the MSC isn't merged.

    enhancement server unified-push 
    opened by MayeulC 17
  • arm64 build randomly crashes with varying stack traces

    arm64 build randomly crashes with varying stack traces

    $ qemu-aarch64 dist/ntfy_arm64_linux_arm64/ntfy
    fatal error: qemu: uncaught target signal 11 (Segmentation fault) - core dumped
    
    standard_init_linux.go:228: exec user process caused: exec format error
    
    πŸͺ² bug server 
    opened by binwiederhier 16
  • Opening ntfy.sh link in a browser on Android opens the app and subscribes to the topic if the app is installed

    Opening ntfy.sh link in a browser on Android opens the app and subscribes to the topic if the app is installed

    A scenario may be:

    • I have the ntfy.sh app installed on my Android device
    • A browser page or application (like Slack) has a URL to a ntfy.sh topic

    If I click on the ntfy.sh link, it will attempt to open the app and subscribe to the topic, so that I can view it from there.

    If I do not have the ntfy.sh link, it will display the web page for that topic.

    enhancement android-app in-progress πŸƒ 
    opened by Copephobia 13
  • Android: UnifiedPush registration with Schildichat broken since v1.11.0

    Android: UnifiedPush registration with Schildichat broken since v1.11.0

    As reported by Jakob on Discord:

    This is a log of the ntfy Android app. The log shows up to 1,000 entries.
    Server URLs (aside from ntfy.sh) and topics have been replaced with fruits 🍌πŸ₯πŸ‹πŸ₯₯πŸ₯‘πŸŠπŸŽπŸ‘.
    
    Device info:
    --
    ntfy: 1.11.0 (fdroid)
    OS: 4.14.116
    Android: 10 (SDK 29)
    Model: HWVOG
    Product: VOG-L29EEA
    
    --
    Settings:                    
    {
      "autoDeleteSeconds": 2592000,
      "autoDownloadMaxSize": 1048576,
      "broadcastEnabled": true,
      "connectionProtocol": "ws",
      "darkMode": -1,
      "defaultBaseUrl": "",
      "lastSharedTopics": [],
      "minPriority": 1,
      "mutedUntil": 0,
      "recordLogs": true
    }
    
    Logs
    --
    
    1651348085689 2022-04-30 21:48:05.689 D NtfyLog Log was truncated
    1651348090103 2022-04-30 21:48:10.103 D NtfyUpBroadcastRecv UNREGISTER received (connectorToken=)
    1651348090105 2022-04-30 21:48:10.105 D NtfyUpBroadcastRecv UNREGISTER received (connectorToken=)
    1651348090112 2022-04-30 21:48:10.112 D NtfyUpBroadcastRecv Subscription with connectorToken  does not exist. Ignoring.
    1651348090112 2022-04-30 21:48:10.112 D NtfyUpBroadcastRecv Subscription with connectorToken  does not exist. Ignoring.
    1651348090120 2022-04-30 21:48:10.120 D NtfyUpBroadcastRecv Adding subscription with for app de.spiritcroc.riotx (connectorToken raspberry): Subscription(id=-6776334696088911957, baseUrl=https://ntfy.sh, topic=strawberry, instant=true, mutedUntil=0, upAppId=de.spiritcroc.riotx, upConnectorToken=raspberry, totalCount=0, newCount=0, lastActive=1651348090, state=NOT_APPLICABLE)
    1651348090120 2022-04-30 21:48:10.120 D NtfyUpBroadcastRecv REGISTER received for app de.spiritcroc.riotx (connectorToken=raspberry)
    1651348090125 2022-04-30 21:48:10.125 D NtfyUpBroadcastRecv Adding subscription with for app de.spiritcroc.riotx (connectorToken raspberry): Subscription(id=-8361902847137317442, baseUrl=https://ntfy.sh, topic=upA7g3BlRWqyIS, instant=true, mutedUntil=0, upAppId=de.spiritcroc.riotx, upConnectorToken=raspberry, totalCount=0, newCount=0, lastActive=1651348090, state=NOT_APPLICABLE)
    1651348090125 2022-04-30 21:48:10.125 D NtfyUpBroadcastRecv REGISTER received for app de.spiritcroc.riotx (connectorToken=raspberry)
    1651348090146 2022-04-30 21:48:10.146 D NtfyUpDistributor Sending NEW_ENDPOINT to de.spiritcroc.riotx (token=raspberry): https://ntfy.sh/strawberry?up=1
    1651348090149 2022-04-30 21:48:10.149 D NtfyUpDistributor Sending REGISTRATION_FAILED to de.spiritcroc.riotx (token=raspberry)
    1651348090150 2022-04-30 21:48:10.150 D NtfySubscriberMgr Enqueuing work to refresh subscriber service
    1651348090152 2022-04-30 21:48:10.152 W NtfyUpBroadcastRecv Failed to add subscription
    Exception:
    android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: Subscription.upConnectorToken (Sqlite code 2067 SQLITE_CONSTRAINT_UNIQUE), (OS error - 110:Connection timed out)
    	at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
    	at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:923)
    	at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:810)
    	at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:88)
    	at androidx.sqlite.db.framework.FrameworkSQLiteStatement.executeInsert(FrameworkSQLiteStatement.java:51)
    	at androidx.room.EntityInsertionAdapter.insert(EntityInsertionAdapter.java:64)
    	at io.heckel.ntfy.db.SubscriptionDao_Impl.add(SubscriptionDao_Impl.java:121)
    	at io.heckel.ntfy.db.Repository.addSubscription(Repository.kt:72)
    	at io.heckel.ntfy.up.BroadcastReceiver$register$1.invokeSuspend(BroadcastReceiver.kt:79)
    	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
    	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
    	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
    	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
    	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
    
    1651348090197 2022-04-30 21:48:10.197 D NtfySubscriberMgr ServiceStartWorker: Starting foreground service with action START (work ID: f9011e93-05b9-4914-a418-801d0a681def)
    1651348090199 2022-04-30 21:48:10.199 D NtfySubscriberService onStartCommand executed with startId: 12
    1651348090199 2022-04-30 21:48:10.199 D NtfySubscriberService using an intent with action START
    1651348090202 2022-04-30 21:48:10.202 D NtfySubscriberService Refreshing subscriptions
    1651348090203 2022-04-30 21:48:10.203 D NtfySubscriberService - Desired connections: [ConnectionId(baseUrl=https://banana.example.com, topicsToSubscriptionIds={kiwi=-2754791496466822081}), ConnectionId(baseUrl=https://ntfy.sh, topicsToSubscriptionIds={strawberry=-6776334696088911957})]
    1651348090203 2022-04-30 21:48:10.203 D NtfySubscriberService - Active connections: [ConnectionId(baseUrl=https://banana.example.com, topicsToSubscriptionIds={kiwi=-2754791496466822081})]
    1651348090203 2022-04-30 21:48:10.203 D NtfySubscriberService - New connections: [ConnectionId(baseUrl=https://ntfy.sh, topicsToSubscriptionIds={strawberry=-6776334696088911957})]
    1651348090204 2022-04-30 21:48:10.204 D NtfySubscriberService - Obsolete connections: []
    1651348090204 2022-04-30 21:48:10.204 D NtfySubscriberService - Match? --> false
    1651348090208 2022-04-30 21:48:10.208 D NtfyWsConnection ntfy.sh/strawberry (gid=7): New connection with global ID 7
    1651348090210 2022-04-30 21:48:10.210 D NtfyWsConnection ntfy.sh/strawberry (gid=7): Opening https://ntfy.sh/strawberry/ws?since=1651348090 with listener ID 1 ...
    1651348090648 2022-04-30 21:48:10.648 D NtfyWsConnection ntfy.sh/strawberry (gid=7, lid=1): Opened connection
    1651348090650 2022-04-30 21:48:10.650 D NtfyWsConnection ntfy.sh/strawberry (gid=7, lid=1): Received message: {"id":"y3pWDiMMzjuy","time":1651348090,"event":"open","topic":"strawberry"}
    
    
    πŸͺ² bug android-app unified-push 
    opened by binwiederhier 12
  • Provide minimal docker image and binaries, possibly split docs to its own package.

    Provide minimal docker image and binaries, possibly split docs to its own package.

    I was trying to compile my own container image using the following build command:

    go build -o ntfy -v -trimpath -ldflags="-s -w -X main.version=v1.10.0" .

    This failed with the error message of server/server.go:116:13: pattern docs: no matching files found which appears to be a go:embed directive for docs. Removing this line allows for the compilation to successfully complete.

    Here's the line in question: https://github.com/binwiederhier/ntfy/blob/9752bd7c30d9b5620ccb610949f732fc847a8a18/server/server.go#L116

    enhancement build server 
    opened by jauderho 12
  • Translation πŸ‡§πŸ‡¬ πŸ‡©πŸ‡ͺ πŸ‡ΊπŸ‡Έ πŸ‡«πŸ‡· 🌎 πŸ˜€

    Translation πŸ‡§πŸ‡¬ πŸ‡©πŸ‡ͺ πŸ‡ΊπŸ‡Έ πŸ‡«πŸ‡· 🌎 πŸ˜€

    Allow for translation. The primary goal of this issue to have the Android app translated but better have the ability to translate everything.

    My humble suggestion for translating platform would be Hosted Weblate to match the Open Source nature of the project. Weblate is a home for many well known open source projects like F-Droid, OsmAnd~, KOreader, DAVx5, Tasks.org, AndrOBD, Minetest, Orbot, and many, many others.

    Aside from Weblate there are several other closed source platforms that sponsor open source projects. To name a few that I know of: Crowdin and Transifex.

    enhancement in-progress πŸƒ 
    opened by StoyanDimitrov 11
  • Getting Matrix gateway error on self-hosted instance, ntfy claims push key is not prefixed with base URL

    Getting Matrix gateway error on self-hosted instance, ntfy claims push key is not prefixed with base URL

    I run a self hosted ntfy and have try to get Element Android to work with is for the last few days. Today, setting the log level to TRACE, I can see the following in ntfy logs:

    Aug 18 13:36:59: {"notification":{"event_id":"$THIS_IS_A_FAKE_EVENT_ID","devices":[{"app_id":"im.vector.app.android","pushkey":"https://<ntfy.domain>/<notifcation_path>?up=1"}]}}
    Aug 18 13:36:59: DEBUG HTTP POST /_matrix/push/v1/notify Matrix gateway error: message with push key "https://<ntfy.domain>/<notifcation_path>?up=1 rejected: invalid request: push key must be prefixed with base URL
    

    I don't understand why I'm getting this error, the server is correctly configured as followed:

    base-url: "https://<ntfy.domain>"
    listen-http: ":8008"
    # Runs behind an Apache proxy
    behind-proxy: true
    

    where <ntfy.domain> corresponds to my self-hosted ntfy domain.

    Can you please tell me what's going on here?

    πŸͺ² bug server 
    opened by christophehenry 10
  • Add support for

    Add support for "mqtt" actions

    Similar to "http", allow a notification action to send an MQTT message.

    MQTT is a very common protocol for home automation. Having the ability to send an MQTT message from a ntfy notification action would allow all sorts of integrations.

    I will also be looking to add support for ntfy to mqttwarn. This would allow for users to send notifications to an MQTT topic and mqttwarn will automatically forward it to ntfy.

    With MQTT actions and mqttwarn integration, we would have bi-directional support for MQTT based systems.

    enhancement 
    opened by sumnerboy12 1
  • Add option to make TLS mandatory for sending e-mail notification

    Add option to make TLS mandatory for sending e-mail notification

    The subject says it all. I'd like to able to restrict outgoing mails to be sent only over TLS encrypted SMTP connections, by setting a option in the server.yml.

    enhancement server 
    opened by cmeis 0
  • Add TLS encryption to SMTP receiver

    Add TLS encryption to SMTP receiver

    As of today the e-mail receiving server (for e-mail publishing) is only able to accept plain text connections. I'd like to be able to use TLS encrypted (STARTTLS) connections, as notification contents might contain sensitive information. As an option, I'd like to be able to make TLS mandatory on the server side, i.e. reject not encrypted connections via an config option in the server.yml.

    enhancement server 
    opened by cmeis 0
  • Web UI: Clickable links

    Web UI: Clickable links

    I haven't been able to figure out a way to do this... Neither HTML nor markdown works (they're both output as-is). Is there any way to get hyperlinks to work in the web UI?

    question 
    opened by erickhavel 2
  • mipush support

    mipush support

    Hello, I am a Chinese Xiaomi mobile phone user. Xiaomi mobile phone has its own push system, called Mipush,This is the official website https://dev.mi.com/console/appservice/push.html, Can I add support?

    enhancement 
    opened by danmo66 1
Releases(v1.27.2)
Owner
Philipp C. Heckel
Principal Engineer at @datto, open source fan, semi-regular blogger, former author of @syncany, German πŸ‡©πŸ‡ͺ, fan of πŸ‡¬πŸ‡§ & πŸ‡ΊπŸ‡Έ, and a dad πŸ‘¦
Philipp C. Heckel
golang long polling library. Makes web pub-sub easy via HTTP long-poll server :smiley: :coffee: :computer:

golongpoll Golang long polling library. Makes web pub-sub easy via an HTTP long-poll server. New in v1.1 Deprecated CreateManager and CreateCustomMana

J Cuga 607 Sep 18, 2022
Simple synchronous event pub-sub package for Golang

event-go Simple synchronous event pub-sub package for Golang This is a Go language package for publishing/subscribing domain events. This is useful to

itchyny 19 Jun 16, 2022
Simple-messaging - Brokerless messaging. Pub/Sub. Producer/Consumer. Pure Go. No C.

Simple Messaging Simple messaging for pub/sub and producer/consumer. Pure Go! Usage Request-Response Producer: consumerAddr, err := net.ResolveTCPAddr

IchHabeKeineNamen 1 Jan 20, 2022
A simple in-process pub/sub for golang

go-pub-sub A simple in-process pub/sub for golang Motivation Call it somewhere between "I spent no more than 5 minutes looking for one that existed" a

Ryan Catherman 0 Jan 25, 2022
nanoQ β€” high-performance brokerless Pub/Sub for streaming real-time data

nanoQ β€” high-performance brokerless Pub/Sub for streaming real-time data nanoQ is a very minimalistic (opinionated/limited) Pub/Sub transport library.

Aigent 149 Sep 7, 2022
A basic pub-sub project using NATS

NATS Simple Pub-Sub Mechanism This is a basic pub-sub project using NATS. There is one publisher who publishes a "Hello World" message to a subject ca

Prosonul Haque 1 Dec 13, 2021
Kafka, Beanstalkd, Pulsar Pub/Sub framework

go-queue Kafka, Beanstalkd, Pulsar Pub/Sub framework.

chenquan 3 Sep 17, 2022
CLI tool for generating random messages with rules & publishing to the cloud services (SQS,SNS,PUB/SUB and etc.)

Randomsg A CLI tool to generate random messages and publish to cloud services like (SQS,SNS,PUB/SUB and etc.). TODO Generation of nested objects is no

Kerem DokumacΔ± 6 Sep 22, 2022
Go-notification - Realtime notification system with golang

Realtime notification system Used Apache kafka gRPC & PROTOBUF MongoDB restapi w

vishalvishnu 3 Aug 19, 2022
Github-notifications - Small script to alert me when I have notifications on Github. I use it in my Polybar conf

Github notification polybar widget This tool is meant to be used with Polybar, in order to let the user know when they have notifications on Github. R

Ghislain Rodrigues 1 Jan 26, 2022
Bark is an iOS App which allows you to push customed notifications to your iPhone.

Bark is an iOS App which allows you to push customed notifications to your iPhone.

Feng 1.5k Sep 28, 2022
cisasntyi: check iphone stock and send notification to your iphone

for buy iphone 13 notification cisasntyi: check iphone stock and send notification to your iphone install Bark app in your iphone first before you run

seaZhang 45 Aug 3, 2022
Send slack notifications using Github action

Slack notification This is a simple Slack notification action which runs using a Bot token. Example Action A simple example on how to use this action:

Gergely Brautigam 12 Aug 9, 2021
Golang tool to send notifications to LINE app

Golang tool to send notifications to LINE app

Muhammad Daffa 3 Dec 15, 2021
Uniqush is a free and open source software system which provides a unified push service for server side notification to apps on mobile devices.

Homepage Download Blog/News @uniqush Introduction Uniqush (\ˈyΓΌ-nΙ™-kuΜ‡sh\ "uni" pronounced as in "unified", and "qush" pronounced as in "cushion") is

Uniqush 1.4k Sep 20, 2022
Chanify is a safe and simple notification tools. This repository is command line tools for Chanify.

Chanify is a safe and simple notification tools. For developers, system administrators, and everyone can push notifications with API.

Chanify 924 Sep 28, 2022
Simple push notification system (android/fcm, apns/slideshow) written by Golang

Golang Push Notification Simple system push notification for android/fcm and apn

HoΓ ng HαΊ£i 0 Dec 20, 2021
Arjuns-urgent-notification-backend - A simple Golang app that handles form JSON POST requests

Arjun's Urgent Notification Backend This is intended to let people urgently noti

Kome Fumi 0 Jan 7, 2022
A dead simple Go library for sending notifications to various messaging services.

A dead simple Go library for sending notifications to various messaging services. About Notify arose from my own need for one of my api server running

Niko KΓΆser 1.2k Sep 19, 2022