{"adoption": {"forks": 999, "observed_at": "2026-08-28T04:10:44.680748+00:00", "stars": 10911}, "canonical_url": "https://ross.abutalabs.com/products/dtm", "card": {"archived": false, "artifact_type": "framework", "description": "A distributed transaction framework, supports workflow, saga, tcc, xa, 2-phase message, outbox patterns, supports many languages.", "domain": ["microservices", "databases", "backend", "developer-tools"], "enriched": true, "function": ["microservices", "workflow-automation", "database", "message-queue", "concurrency"], "health_score": 67, "homepage": "http://d.dtm.pub", "language": "Go", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "stable", "member_repos": ["dtm-labs/dtm"], "name": "dtm-labs/dtm", "platform": ["go", "jvm", "python", "dotnet", "php", "cross-platform", "self-hosted"], "pushed_at": "2026-01-03T13:47:46+00:00", "repo": "dtm-labs/dtm", "stars": 10911, "tags": ["distributed-transactions", "saga", "tcc", "xa", "outbox-pattern", "2-phase-message", "eventual-consistency", "data-consistency", "workflow-engine", "seata-alternative", "nodejs", "docker"], "topics": ["saga", "xa", "tcc", "microservice", "seata", "go", "dtm", "golang", "distributed", "transaction", "distributed-transactions", "database", "java", "csharp", "transactions", "workflow-engine", "cadence", "outbox"], "urls": [], "use_cases": ["ensure data consistency across microservices", "implement saga pattern for distributed transactions", "reliable outbox pattern for event publishing", "deduct inventory in flash sales with exact consistency", "manage cache consistency across services", "coordinate multi-database transactions", "build non-monolithic order systems"], "what_it_is": "DTM is a distributed transaction framework that provides cross-service eventual data consistency using saga, TCC, XA, 2-phase message, outbox, and workflow patterns. It offers SDKs for Go, Java, PHP, C#, Python, and Node.js, and supports multiple storage engines including MySQL, Redis, and BoltDB.", "when_to_avoid": ["your application is a single monolith with one database - local ACID transactions suffice", "you need strictly synchronous strong consistency rather than eventual consistency", "you are not using a supported language or storage engine", "you want a fully managed cloud service rather than self-hosted infrastructure"], "when_to_choose": ["you need cross-service eventual consistency in a microservices architecture", "you want a multi-language transaction manager with SDKs for Go, Java, Python, and more", "you need a better alternative to the outbox pattern via 2-phase messages", "you require support for multiple storage engines like MySQL, Redis, or Postgres", "you want a battle-tested framework used by Tencent and Bytedance"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dtm", "repo": "dtm-labs/dtm", "role": "main", "score": 50}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "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:10:44.680748+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:44.680748+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:17:24.003171+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b1ea725c60eb9a299eb870dc06b4e0ba1622f0e88d24eff004a6c7398333e19f", "fetched_at": "2026-08-28T04:10:44.680748+00:00", "kind": "readme", "missing": false, "url": "https://github.com/dtm-labs/dtm"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 60, "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": 1936, "days_push": 242, "days_rel": 575, "gap_med": null, "n_releases_24m": 1}, "score": 50, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}