{"id":51320014,"url":"https://github.com/study8677/ai-status-hub","last_synced_at":"2026-07-01T12:04:06.452Z","repository":{"id":365818791,"uuid":"1273910113","full_name":"study8677/ai-status-hub","owner":"study8677","description":"AI provider outage/status monitor for OpenAI, Claude, Gemini, Grok, and AWS. Official sources only, no API keys, GitHub Actions + Pages, JSON API.","archived":false,"fork":false,"pushed_at":"2026-06-26T14:42:13.000Z","size":293,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-26T16:24:11.904Z","etag":null,"topics":["ai","anthropic","aws","claude","gemini","github-actions","github-pages","grok","incident-response","json-api","llm","observability","openai","outage-monitor","self-hosted","status","status-monitor","statuspage","uptime-monitor","xai"],"latest_commit_sha":null,"homepage":"https://study8677.github.io/ai-status-hub/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/study8677.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-19T02:03:26.000Z","updated_at":"2026-06-22T04:51:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/study8677/ai-status-hub","commit_stats":null,"previous_names":["study8677/aistatues","study8677/ai-status-hub"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/study8677/ai-status-hub","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/study8677%2Fai-status-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/study8677%2Fai-status-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/study8677%2Fai-status-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/study8677%2Fai-status-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/study8677","download_url":"https://codeload.github.com/study8677/ai-status-hub/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/study8677%2Fai-status-hub/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35005417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","anthropic","aws","claude","gemini","github-actions","github-pages","grok","incident-response","json-api","llm","observability","openai","outage-monitor","self-hosted","status","status-monitor","statuspage","uptime-monitor","xai"],"created_at":"2026-07-01T12:04:05.636Z","updated_at":"2026-07-01T12:04:06.444Z","avatar_url":"https://github.com/study8677.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AI Status Hub\n\nOfficial-source AI provider status dashboard for OpenAI, Anthropic Claude, Google Gemini, xAI Grok, and AWS.\n\n\u003e 中文：AI 服务官方状态中心。只读官方状态源，覆盖 OpenAI、Claude、Gemini、Grok、AWS。\n\n[![Monitor](https://github.com/study8677/ai-status-hub/actions/workflows/monitor.yml/badge.svg)](https://github.com/study8677/ai-status-hub/actions/workflows/monitor.yml)\n[![Live dashboard](https://img.shields.io/badge/live-dashboard-0b57d0)](https://study8677.github.io/ai-status-hub/)\n[![GitHub stars](https://img.shields.io/github/stars/study8677/ai-status-hub?style=social)](https://github.com/study8677/ai-status-hub/stargazers)\n[![License: MIT](https://img.shields.io/badge/license-MIT-137333)](./LICENSE)\n[![Python 3.12](https://img.shields.io/badge/python-3.12-3776ab)](https://www.python.org/)\n\n[![Current AI status](https://study8677.github.io/ai-status-hub/status.svg)](https://study8677.github.io/ai-status-hub/)\n\nTrack AI outages from official status pages only. No API keys, no paid probes, no third-party status aggregators. Runs on GitHub Actions + Pages and publishes a live dashboard, JSON API, NDJSON event stream, and daily reports.\n\n官方状态源优先的 AI 服务状态中心：不消耗模型 API quota，不依赖第三方聚合站，Fork 后即可自托管。\n\n[在线看板](https://study8677.github.io/ai-status-hub/) · [最新 JSON](https://study8677.github.io/ai-status-hub/last_run.json) · [部署文档](./docs/SELF_HOST.md) · [输出 API](./docs/API.md) · [官方源说明](./docs/SOURCES.md) · [路线图](./docs/ROADMAP.md)\n\nIf this helps you track AI provider incidents, star the repo so more builders can find an official-source alternative to third-party aggregators.\n\n![AI Status Hub preview](./assets/preview.svg)\n\n## 为什么值得用\n\n- **官方源优先**：不依赖第三方聚合站，不主动消耗模型 API quota。\n- **免费托管**：GitHub Actions 定时采样，GitHub Pages 发布页面。\n- **一眼判断问题**：服务按 `正常 / 预警 / 严重 / 未知` 排序，严重事件优先显示。\n- **可机器读取**：同时发布 `last_run.json`、`events.ndjson`、日报 JSON/Markdown。\n- **误报边界清晰**：抓取失败显示为 `未知`，不会直接算作 provider outage。\n- **易于 Fork**：无第三方 Python 依赖，改 `services.json` 和 parser 就能扩展。\n\n## Live Demo\n\n| 页面 | 地址 |\n|---|---|\n| 中文状态看板 | https://study8677.github.io/ai-status-hub/ |\n| 最新快照 | https://study8677.github.io/ai-status-hub/last_run.json |\n| 事件流 | https://study8677.github.io/ai-status-hub/output/events.ndjson |\n| 日报 | https://github.com/study8677/ai-status-hub/tree/gh-pages/reports |\n\n快速查看当前状态：\n\n```bash\ncurl -s https://study8677.github.io/ai-status-hub/last_run.json \\\n  | jq -r '.services[] | [.service, .level, .overall_status] | @tsv'\n```\n\n## 更新频率\n\n- 计划频率：每 5 分钟触发一次。\n- 触发分钟：北京时间每小时 `00 / 05 / 10 / 15 / 20 / 25 / 30 / 35 / 40 / 45 / 50 / 55` 分。\n- 实际更新：GitHub Actions 触发后还要完成采样、生成页面、推送 `gh-pages`，通常会晚几十秒到数分钟。\n- 1 分钟级别监控：需要自托管 runner 或外部调度器，GitHub 托管 runner 不适合严格 1 分钟轮询。\n\n## 官方数据源\n\n| 服务 | 官方源 | 解析方式 | 说明 |\n|---|---|---|---|\n| OpenAI | https://status.openai.com/api/v2/summary.json | Statuspage JSON | 读取组件状态和 active incident。 |\n| Claude | https://status.claude.com/api/v2/summary.json | Statuspage JSON | `indicator=none` 视为基础正常，但 active major incident 仍会拉红。 |\n| Gemini | https://status.cloud.google.com/incidents.json | Google Cloud incident JSON | 只筛选 Gemini / Vertex Gemini 相关事件。 |\n| Grok | https://status.x.ai/feed.xml | xAI RSS + 页面回退 | 页面被 Cloudflare 拦截时，以 RSS 作为主要机器可读源。 |\n| AWS | https://health.aws.amazon.com/public/currentevents | AWS public health JSON | 全量 AWS public current events；响应为 UTF-16 JSON，事件时间来自 `event_log`。 |\n\n## 自托管\n\nFork 后只需要 GitHub Actions + Pages：\n\n1. Fork 仓库。\n2. 在 fork 中启用 GitHub Actions。\n3. 将 Pages 来源设为 `gh-pages` 分支。\n4. 手动运行一次 `AI Status Hub Monitor` workflow。\n5. 打开你的 Pages URL。\n\n更多细节见 [Self-hosting](./docs/SELF_HOST.md)。\n\n## 本地运行\n\n```bash\npython3 -m unittest discover -s tests -v\npython3 monitor.py run\npython3 monitor.py report\npython3 monitor.py loop --interval 60\n```\n\nEditable install:\n\n```bash\npython3 -m pip install -e .\nai-status-hub run\nai-status-hub report\n```\n\nDocker:\n\n```bash\ndocker compose up --build\n```\n\n## 输出结构\n\n| 路径 | 用途 |\n|---|---|\n| `monitor.py` | 抓取、解析、评分、去抖、存储、页面渲染。 |\n| `services.json` | 官方源服务配置。 |\n| `tests/test_monitor.py` | 解析器和边界测试。 |\n| `docs/API.md` | JSON/NDJSON/日报输出说明。 |\n| `docs/SOURCES.md` | 官方源可信度和误报边界。 |\n| `docs/schema/last_run.schema.json` | 公开 JSON 快照 Schema。 |\n| `.github/workflows/monitor.yml` | GitHub Actions 托管运行。 |\n| `.github/workflows/ci.yml` | push/PR 测试。 |\n| `gh-pages` 分支 | 发布页面和运行态数据。 |\n\n## 状态规则\n\n| 等级 | 含义 |\n|---|---|\n| `正常` / `ok` | 官方源显示 operational，且没有相关 active incident。 |\n| `预警` / `warn` | 降级、部分故障或较低级别 active incident。 |\n| `严重` / `critical` | major outage、service disruption、active major incident，或 AWS public currentevents 里的最高活动影响级别。 |\n| `未知` / `unknown` | 官方源抓取或解析失败。这代表监控源健康问题，不直接算作服务故障。 |\n\n告警去抖：\n\n- 连续 2 次异常才触发。\n- 连续 2 次恢复才消警。\n- source failure 不直接制造 provider outage。\n\n## 贡献\n\n欢迎提交新的官方源、解析器、测试 fixture、页面可读性改进和输出格式。先看 [CONTRIBUTING.md](./CONTRIBUTING.md)。\n\n适合贡献的方向：\n\n- 添加更多 AI 服务的官方状态源。\n- 改进 AWS AI 相关服务过滤。\n- 增加 Slack/Feishu/Discord webhook 输出。\n- 增加静态 SVG badge 输出。\n- 增加中英切换和可访问性测试。\n\n## Examples\n\n- [Consume JSON with Python](./examples/consume-json.py)\n- [Consume from GitHub Actions](./examples/github-action.yml)\n\n## 项目边界\n\n这个项目只使用官方状态源，不主动探测模型 API，不发送测试 prompt，不依赖第三方聚合状态页。这样可以避免消耗 API quota，也能把信号限定在服务商正式发布的事件上。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudy8677%2Fai-status-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstudy8677%2Fai-status-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudy8677%2Fai-status-hub/lists"}