{"adoption": {"forks": 111, "observed_at": "2026-08-28T04:06:27.555196+00:00", "stars": 2221}, "canonical_url": "https://ross.abutalabs.com/products/sprix-sage-router", "card": {"archived": false, "artifact_type": "library", "description": "Sprix AI at 屿智同行 — state-aware SELF/COLLABORATE/HANDOFF routing for A2A agent networks.", "domain": ["large-language-models", "microservices"], "enriched": true, "function": ["agent-framework", "scheduling", "workflow-automation", "routing"], "health_score": 100, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["wang2122/sprix-sage-router"], "name": "wang2122/sprix-sage-router", "platform": ["python", "cross-platform"], "pushed_at": "2026-08-26T07:43:30+00:00", "repo": "wang2122/sprix-sage-router", "stars": 2221, "tags": ["a2a-protocol", "multi-agent-systems", "agent-routing", "task-dag", "tri-mode-routing", "agent-orchestration", "ai-agents", "automation"], "topics": ["a2a", "agent-orchestration", "agent-routing", "ai-agents", "multi-agent-systems", "python", "task-scheduling", "sprix-ai"], "urls": [], "use_cases": ["decide whether an agent should continue a task alone, recruit collaborators, or hand it off", "route tasks between agents in an A2A multi-agent network", "schedule task DAG dependencies across a team of agents", "replan mid-execution when an agent fails or progress stalls", "score candidate agent teams by complementary requirement coverage", "learn contextual trust per agent and requirement from execution evidence"], "what_it_is": "Sprix SAGE Router is a Python decision layer for Agent2Agent (A2A) networks that routes tasks across three modes—SELF, COLLABORATE, and HANDOFF—using a single auditable utility function. It assigns task-DAG roles, schedules dependencies, and learns from execution evidence under permission, budget, and deadline constraints.", "when_to_avoid": ["you need a full agent runtime or A2A transport implementation—SAGE only decides routing", "you want a production-hardened orchestrator; it is labeled a research preview", "your stack is not Python 3.10+"], "when_to_choose": ["you run an A2A-based multi-agent system and need a routing/decision layer above discovery", "you want SELF/COLLABORATE/HANDOFF decisions in one auditable objective", "you need dependency-aware task scheduling and role assignment for agent teams"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sprix-sage-router", "repo": "wang2122/sprix-sage-router", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "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:06:27.555196+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:27.555196+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:45:48.884245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ec76a6f8d1f524c04eead8ebc1d54c64c8ca385a57ee03b628dfcf8f0e181887", "fetched_at": "2026-08-28T04:06:27.555196+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wang2122/sprix-sage-router"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 1, "rhythm": 60}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["prerelease_only", "young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 15, "days_push": 7, "days_rel": 15, "gap_med": null, "n_releases_24m": 1}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}