{"adoption": {"forks": 152, "observed_at": "2026-08-28T04:05:09.912479+00:00", "stars": 1603}, "canonical_url": "https://ross.abutalabs.com/products/pyouroboros-ouroboros", "card": {"archived": false, "artifact_type": "application", "description": "Automatically update running docker containers with newest available image", "domain": ["self-hosted"], "enriched": true, "function": ["deployment", "container-runtime", "monitoring"], "health_score": 20, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["pyouroboros/ouroboros"], "name": "pyouroboros/ouroboros", "platform": ["python", "cli"], "pushed_at": "2023-02-09T17:59:13+00:00", "repo": "pyouroboros/ouroboros", "stars": 1603, "tags": ["docker-containers", "auto-update", "container-management", "watchtower-alternative", "prometheus-metrics", "apprise-notifications", "notification", "devops", "containers", "automation", "docker", "linux"], "topics": ["docker", "docker-container", "updater", "update-checker", "container-management", "containers", "python3", "python-3"], "urls": [], "use_cases": ["automatically update docker containers to latest image", "keep self-hosted services up to date without ssh", "replace manual docker pull and docker run workflows", "monitor container image updates with prometheus metrics", "get notified when containers are updated", "schedule periodic docker image update checks"], "what_it_is": "Ouroboros is a Python application that automatically updates running Docker containers to the latest available image in the remote registry, recreating them with their original configuration (volumes, networks, environment variables, etc.). It runs as a Docker container or CLI tool and supports notifications via Apprise and metrics via Prometheus/InfluxDB.", "when_to_avoid": ["the project is no longer maintained - prefer actively maintained alternatives like Watchtower", "you use docker-compose or swarm orchestration for updates", "you need multi-node or kubernetes container updates"], "when_to_choose": ["you run docker containers on a single host and want hands-off image updates", "you want containers recreated with their original run parameters", "you need update notifications and metrics out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pyouroboros-ouroboros", "repo": "pyouroboros/ouroboros", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "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:09.912479+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.912479+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:52:27.385509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "85c8837d7079a9547377fe63ac3819a9a28c93a990d28360c05919dfcf19b598", "fetched_at": "2026-08-28T04:05:09.912479+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pyouroboros/ouroboros"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "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": 2907, "days_push": 1301, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}