{"adoption": {"forks": 146, "observed_at": "2026-09-03T02:15:09.228726+00:00", "stars": 1118}, "canonical_url": "https://ross.abutalabs.com/products/go-ansible", "card": {"archived": false, "artifact_type": "library", "description": "Go-ansible is a Go package that enables the execution of ansible-playbook or ansible commands directly from Golang applications. It supports a wide range of options for each command, enabling smooth integration of Ansible functionality into your projects.", "domain": ["developer-tools", "infrastructure-as-code"], "enriched": true, "function": ["workflow-automation", "developer-tools", "configuration-management", "deployment"], "health_score": 96, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["apenella/go-ansible"], "name": "apenella/go-ansible", "platform": ["go", "windows", "cli"], "pushed_at": "2026-09-02T07:46:49+00:00", "repo": "apenella/go-ansible", "stars": 1118, "tags": ["ansible", "ansible-playbook", "wrapper", "provisioning", "infrastructure-automation", "vault", "executor", "automation", "devops", "linux", "macos"], "topics": ["ansible", "golang", "golang-library", "ansible-playbook"], "urls": [], "use_cases": ["run ansible playbooks from a go application", "execute ansible commands programmatically in golang", "chain ansible-galaxy installs and playbook runs in a workflow", "manage ansible vault secrets from go code", "capture ansible output as json in a go service", "build a custom automation tool on top of ansible"], "what_it_is": "go-ansible is a Go library that wraps the Ansible CLI so Go applications can execute commands like ansible-playbook, ansible, ansible-galaxy, and ansible-inventory. It supports workflow chaining, vault secrets, flexible configuration, and extensible output handling.", "when_to_avoid": ["you just need to run Ansible from shell scripts or CI pipelines", "you want to reimplement Ansible's logic natively in Go rather than wrapping the CLI", "your project is not in Go and you can invoke Ansible directly", "you need an Ansible replacement rather than a wrapper"], "when_to_choose": ["you are building a Go application that needs to drive Ansible automation", "you need to orchestrate multiple Ansible commands sequentially from Go", "you want structured (JSON) handling of Ansible command output", "you need programmatic control over Ansible environment variables and vault passwords"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/go-ansible", "repo": "apenella/go-ansible", "role": "main", "score": 85}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:09.228726+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:41:52.271886+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dedf8273eb1789d22a68ed1e65b72cb616f119eddf2cadf040c35c05a3da3364", "fetched_at": "2026-09-03T02:15:09.228726+00:00", "kind": "readme", "missing": false, "url": "https://github.com/apenella/go-ansible"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 56}, "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": 2648, "days_push": 0, "days_rel": 293, "gap_med": 23, "n_releases_24m": 6}, "score": 85, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}