PushGo:开源免费的全能消息推送新选择

在服务器运维、智能家居和自动化场景中,稳定可靠的消息推送至关重要。提到轻量级推送工具,很多人会想到Bark或Server酱,但它们各有局限——Bark仅支持苹果生态,Server酱依赖微信生态。今天介绍的PushGo,是一个开源免费、支持全平台、数据结构更丰富的全新选择。

一、PushGo 是什么?
PushGo 是一款专为开发者、运维工程师、自托管爱好者和智能家居用户设计的开源推送通知工具。它的核心目标是解决“重要事件需要及时知晓”的问题——无论是服务器宕机告警、脚本执行结果,还是智能家居设备触发,都能通过PushGo快速推送到你的设备上。
它最大的特点在于数据结构更丰富。传统的推送工具只支持“发一条消息”,而PushGo围绕三种模型组织信息,让零散的通知变得结构化、可追溯:
模型 说明 典型场景 消息 基础的一次性通知,支持Markdown格式 脚本执行完成、简单提醒 事件 拥有完整生命周期的数据流,可创建、更新、关闭 服务器故障处理进程、部署任务状态跟踪 对象 融合属性、事件流和通知的复合模型 代表一个服务器、设备或业务系统,聚合其所有变化记录
二、核心功能与特色
1. 全平台支持,一个都不少
PushGo原生支持 iOS、macOS、watchOS 和 Android 四大平台。这意味着无论你用什么手机或电脑,都能收到统一推送。苹果设备利用APNs(Apple Push Notification service)推送,几乎不消耗额外电量;Android平台则在FCM基础上提供了私有协议通道,在FCM不可用时也能工作。
2. 隐私与安全,双重保障
-
端到端加密(E2EE):参考Bark的实现逻辑,保障内容传输安全。
-
支持自建网关:PushGo的服务端(PushGo Gateway)完全开源,你可以部署在自己的服务器上,实现数据完全自控。公共网关虽然免费,但自建更适合对隐私有更高要求的场景。
3. 更大的消息容量与可靠性
-
单条消息最大支持32KB,远超市面同类工具,足以承载详细的日志或报警信息。
-
内建 pull 和 ack 机制,更好地保证消息触达的可靠性。
4. 面向未来的AI集成
PushGo已经实现了 MCP(模型上下文协议) 支持,完整实现了OAuth2和DCR,可以搭配各类AI Agent使用,让AI助手也能直接调用推送能力。
三、在哪里下载与安装?
PushGo完全开源免费,下载和部署方式灵活:
客户端下载:
-
Apple 平台:在 App Store 搜索“PushGo”即可下载(要求 iOS 17.0 / macOS 14.0 或更高版本)。
-
Android 平台:可通过GitHub仓库或官方渠道获取APK安装包。
服务端自建(可选):
如需自建网关,可参考GitHub上的 pushgo-gateway 仓库。基本命令示例:
# 使用SQLite数据库启动网关(示例)
pushgo-gateway --db-url sqlite:///pushgo.db --http-addr 0.0.0.0:6666更详细的配置(如PostgreSQL、MCP开关、Token认证等),可查阅官方文档或GitHub仓库说明。


四、适用场景
场景分类 具体用途 💻 服务器与运维 CPU/内存/磁盘告警、服务宕机通知、证书过期提醒、SSH异常登录告警 📱 应用与开发 CI/CD构建状态、脚本执行结果、爬虫数据抓取完成通知 🏠 智能家居 门锁状态、漏水/烟雾报警、温度异常、扫地机器人完成清扫 🏢 业务系统 异常订单、数据同步错误、系统权限变更通知
五、代码示例:三分钟上手
PushGo的API设计直观,以下是一个简单的Python示例,演示如何通过HTTP请求发送通知(具体接口地址和Token请替换为你自己的):
import requests
import json
# 替换为你的网关地址和通道/Token信息
gateway_url = "https://api.pushgo.dev/v1/messages" # 公共网关示例
token = "your_access_token_here"
# 构建一条简单消息
payload = {
"title": "服务器告警",
"body": "CPU使用率已超过90%,请立即检查!",
# 可选:指定对象、事件ID进行关联
# "object_id": "web-server-01",
# "event_id": "cpu-high-20260829"
}
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
response = requests.post(gateway_url, json=payload, headers=headers)
if response.status_code == 200:
print("推送发送成功!")
else:
print(f"发送失败:{response.text}")六、总结
PushGo是一款 “站在巨人肩膀上,又走得更远” 的开源推送工具。它既有Bark式的轻量和免费,又补足了全平台支持和数据结构化的短板。无论是个人开发者、运维工程师,还是智能家居爱好者,都能从中受益。