{"adoption": {"forks": 78, "observed_at": "2026-08-28T04:04:31.543640+00:00", "stars": 1369}, "canonical_url": "https://ross.abutalabs.com/products/opentag", "card": {"archived": false, "artifact_type": "service", "description": "Mention any ACP coding agent from Slack, GitHub, GitLab, Linear, or Lark. OpenTag runs Claude Code, Codex, Cursor and more on your own machine, then replies in-thread with verified, evidence-backed results.", "domain": ["developer-tools", "large-language-models"], "enriched": true, "function": ["agent-framework", "workflow-automation", "developer-tools", "webhook", "chatbot"], "health_score": 99, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["amplifthq/opentag"], "name": "amplifthq/opentag", "platform": ["cli", "self-hosted", "cross-platform"], "pushed_at": "2026-08-24T01:36:06+00:00", "repo": "amplifthq/opentag", "stars": 1369, "tags": ["agent-client-protocol", "acp", "claude-code", "codex", "cursor", "slack-integration", "github-integration", "local-first", "coding-agents", "audit-ledger", "ai-agents", "automation", "nodejs"], "topics": ["ai-agents", "codex", "github", "slack", "acp", "agent-client-protocol", "claude-code", "coding-agents", "developer-tools", "local-first"], "urls": [], "use_cases": ["trigger claude code from slack", "run codex agent from a github comment", "delegate coding tasks to ai agents from linear", "verify ai agent work with evidence before merging", "run coding agents locally without sending code to the cloud", "orchestrate multiple coding agents through one protocol"], "what_it_is": "OpenTag is a local-first gateway that lets you mention coding agents like Claude Code, Codex, and Cursor from Slack, GitHub, GitLab, Linear, or Lark, running them on your own machine via the Agent Client Protocol. It replies in-thread with evidence-backed results and enforces completion gates such as merged pull requests before marking work done.", "when_to_avoid": ["you need a fully hosted SaaS with no local component", "you don't use any of the supported chat or code platforms", "you only need a single agent integrated directly without a gateway", "your platform of choice (Teams, Discord, Telegram) is still in preview"], "when_to_choose": ["your team collaborates in Slack, GitHub, GitLab, Linear, or Lark and wants to dispatch coding agents from threads", "you need local-first execution so code and credentials never leave your machine", "you want auditable, evidence-gated completion instead of trusting agent self-reports", "you want vendor-neutral agent dispatch across multiple ACP-compatible executors"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/opentag", "repo": "amplifthq/opentag", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "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:04:31.543640+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:31.543640+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:40:57.795665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f07cd528934a9286cb336295dea15ed88d1d4a19cb7c5bf45935fa5ca59be9c6", "fetched_at": "2026-08-28T04:04:31.543640+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amplifthq/opentag"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 5, "rhythm": 98}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 70, "days_push": 10, "days_rel": 16, "gap_med": 4, "n_releases_24m": 8}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}