{"adoption": {"forks": 93, "observed_at": "2026-09-03T02:15:17.052707+00:00", "stars": 1098}, "canonical_url": "https://ross.abutalabs.com/products/relay-pulse", "card": {"archived": false, "artifact_type": "service", "description": "企业级 LLM 中转服务可用性监控系统，实时追踪服务状态并提供可视化仪表板。", "domain": ["monitoring", "large-language-models", "apis", "self-hosted"], "enriched": true, "function": ["monitoring", "alerting", "http-client", "data-visualization", "self-hosted"], "health_score": 100, "homepage": "https://relaypulse.top", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["prehisle/relay-pulse"], "name": "prehisle/relay-pulse", "platform": ["self-hosted", "go"], "pushed_at": "2026-09-02T17:19:48+00:00", "repo": "prehisle/relay-pulse", "stars": 1098, "tags": ["llm-api-monitoring", "uptime-monitoring", "synthetic-checks", "status-dashboard", "api-relay", "devops", "docker", "linux", "web-server"], "topics": [], "urls": [], "use_cases": ["monitor availability of my LLM API relay service", "detect when an LLM API returns 200 but empty responses", "compare latency and error rates across multiple LLM providers", "track uptime of self-hosted OpenAI-compatible endpoints", "get notified when an LLM API goes down", "visualize API service quality with an uptime heatmap"], "what_it_is": "RelayPulse is a self-hosted monitoring service for LLM API relay/proxy services that probes endpoints with real token-consuming API calls and validates responses, avoiding false 'HTTP 200 but empty output' uptime. It provides a web dashboard with availability heatmaps (24h/7d/30d), hot-reloadable config, SQLite/PostgreSQL storage, and Telegram/QQ bot notifications.", "when_to_avoid": ["you only need basic HTTP endpoint uptime checks without token cost", "you cannot expose API keys or spend tokens on periodic probes", "you need monitoring of non-LLM services only"], "when_to_choose": ["you need real-call validation of LLM APIs rather than simple HTTP ping checks", "you run or buy LLM relay/proxy services and need continuous availability tracking", "you want a self-hosted, cloud-native monitor with Docker deployment and hot config reload"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/relay-pulse", "repo": "prehisle/relay-pulse", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.052707+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:47:11.926306+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e621f4b782dc146fe159351f696dbc0149cf307eefd72cf2b381974e65f5527f", "fetched_at": "2026-09-03T02:15:17.052707+00:00", "kind": "readme", "missing": false, "url": "https://github.com/prehisle/relay-pulse"}, {"content_hash": "03bc1095291d4249dc14911268ef0dc371c4178fa75c3c73f58a193b33b3e0ed", "fetched_at": "2026-08-29T12:50:02.391909+00:00", "kind": "homepage", "missing": false, "url": "https://relaypulse.top"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 20, "rhythm": 88}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 286, "days_push": 0, "days_rel": 0, "gap_med": 0.0, "n_releases_24m": 277}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}