{"adoption": {"forks": 51, "observed_at": "2026-08-28T04:05:34.115939+00:00", "stars": 1771}, "canonical_url": "https://ross.abutalabs.com/products/loggifly", "card": {"archived": false, "artifact_type": "service", "description": "Get Alerts from your Docker Container Logs", "domain": ["monitoring", "self-hosted"], "enriched": true, "function": ["monitoring", "alerting", "logging"], "health_score": 100, "homepage": "https://clemcer.github.io/LoggiFly/", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["clemcer/LoggiFly"], "name": "clemcer/LoggiFly", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2026-08-24T20:14:18+00:00", "repo": "clemcer/LoggiFly", "stars": 1771, "tags": ["docker-logs", "ntfy", "apprise", "log-monitoring", "container-monitoring", "yaml-config", "podman", "docker-swarm", "devops", "containers", "automation", "docker", "linux"], "topics": ["apprise", "docker", "logging", "monitoring", "notifications", "ntfy", "server-events", "docker-logs", "logs"], "urls": [], "use_cases": ["get alerts when a failed login appears in my Vaultwarden container logs", "notify me on Slack or Discord when a specific error shows up in docker logs", "automatically restart a docker container when a critical error is logged", "monitor docker container logs for regex patterns and send ntfy notifications", "attach recent log context to crash notifications", "watch logs across multiple remote docker hosts", "get notified when a user downloads an audiobook on my Audiobookshelf server"], "what_it_is": "LoggiFly is a lightweight self-hosted tool that monitors Docker (and Podman/Swarm) container logs for predefined keywords or regex patterns and sends notifications via ntfy or Apprise to 100+ services. It supports multi-line log detection, message templates, log attachments, container restart/stop triggers, and monitoring of multiple remote Docker hosts.", "when_to_avoid": ["you need full metrics, dashboards, and log aggregation rather than keyword alerting (use Prometheus/Grafana or Loki)", "your workloads are not running in Docker, Podman, or Docker Swarm", "you need centralized structured log storage and querying"], "when_to_choose": ["you run self-hosted docker containers and want keyword/regex-based log alerts without a full observability stack", "you want notifications through ntfy, Slack, Discord, Telegram or other Apprise-supported channels", "you need automatic container restart/stop actions triggered by specific log messages"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/loggifly", "repo": "clemcer/LoggiFly", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:34.115939+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:26:00.020823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b5324263fc5ced32d0ba462d48479222f7c0c8f42705bc044457a0b53e895907", "fetched_at": "2026-08-28T04:05:34.115939+00:00", "kind": "readme", "missing": false, "url": "https://github.com/clemcer/LoggiFly"}, {"content_hash": "a9dbb90d6736b43aabdefed8808924935dcd8b831a747503f644032ba30af61c", "fetched_at": "2026-08-29T11:04:15.425340+00:00", "kind": "homepage", "missing": false, "url": "https://clemcer.github.io/LoggiFly/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 42, "rhythm": 93}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 597, "days_push": 9, "days_rel": 49, "gap_med": 12, "n_releases_24m": 24}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}