{"id":48577831,"url":"https://github.com/magosproject/magos","last_synced_at":"2026-04-13T23:01:06.481Z","repository":{"id":350020778,"uuid":"1193469687","full_name":"magosproject/magos","owner":"magosproject","description":"Bringing GitOps to Terraform.","archived":false,"fork":false,"pushed_at":"2026-04-08T14:58:17.000Z","size":478,"stargazers_count":4,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-08T16:07:00.568Z","etag":null,"topics":["gitops","kubernetes-operator","magos","terraform"],"latest_commit_sha":null,"homepage":"https://magosproject.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/magosproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-27T09:01:06.000Z","updated_at":"2026-04-08T15:17:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/magosproject/magos","commit_stats":null,"previous_names":["magosproject/magos"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/magosproject/magos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magosproject%2Fmagos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magosproject%2Fmagos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magosproject%2Fmagos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magosproject%2Fmagos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/magosproject","download_url":"https://codeload.github.com/magosproject/magos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/magosproject%2Fmagos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31774547,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T20:17:16.280Z","status":"ssl_error","status_checked_at":"2026-04-13T20:17:08.216Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gitops","kubernetes-operator","magos","terraform"],"created_at":"2026-04-08T16:03:39.438Z","updated_at":"2026-04-13T23:01:06.471Z","avatar_url":"https://github.com/magosproject.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Magos\n\nMagos is a Kubernetes-native operator for the declarative management of Terraform and OpenTofu infrastructure.\n\n## Overview\n\nThe Magos operator manages the lifecycle of your infrastructure directly from Kubernetes. By defining a `Workspace` custom resource, Magos automates `terraform` plans and applies within your cluster.\n\n| Controller  | Resource      | Description                                                                 |\n|------------|---------------|-----------------------------------------------------------------------------|\n| project    | `Project`     | Defines the boundary for related Workspaces, VariableSets, and Rollouts.   |\n| workspace  | `Workspace`   | Runs Terraform plans and applies in isolated, ephemeral Pods.              |\n| rollout    | `Rollout`     | Bound to a Project and orchestrates matching Workspaces via label selectors. |\n| variableset| `VariableSet` | Defines reusable variables and configuration shared across Projects and Workspaces. |\n\n## Development\n\n### Prerequisites\n\n- Go 1.25+\n- Docker\n- Kind\n- Helm\n- kubectl\n\n### Local Development\n\nCreate a local Kind cluster:\n\n```bash\nkind create cluster\n```\n\nBuild and locally run the operator:\n\n```bash\nmake run-controller\n```\n\nApply the sample resources:\n\n```bash\nkubectl apply -f samples/\n```\n\nObserve what's running:\n\n```bash\nkubectl get projects\nkubectl get workspaces\nkubectl get jobs\nkubectl rollouts\n```\n\n## Running E2E Tests Locally\n\nE2E tests deploy the operator to a Kind cluster and run Workspace reconciliation.\n\n### Run the Tests\n\n```bash\n# Run all E2E tests\nmake test-e2e\n\n# Run with cleanup skipped (for debugging)\nSKIP_CLEANUP=true make test-e2e\n\n# Skip infrastructure installation if already installed\nSKIP_INFRA_INSTALL=true make test-e2e\n\n# Skip credential validation (for basic deployment tests)\nSKIP_CREDENTIAL_CHECK=true make test-e2e\n```\n\nBy default all the test resources will be run. However, we can filter scenarios with the `SCENARIO_FILTER` flag. This filters based on the ginkgo labels. This can be used to e.g. only run tests for specific Workspaces with `SCENARIO_FILTER=workspaces make test-e2e`. The filters are additive.\n\n## Contributing\n\nWe deeply value inner-source contributions, but ask you to approach them carefully—Magos's strength comes from stability, not flexibility. Every change must be evaluated against its impact on a large number of configurations, not just its technical brilliance. To ensure we maintain the project's clarity and reliability, we prioritize proposals over pull requests: this creates a record for discussion, and prevents wasted effort on misaligned work. While we strive to review every contribution (big or small), we're uncompromising about Magos's platform principles—we'll reject even clever solutions if they add significant complexity.\n\nIf you're considering a contribution, start with an issue or RFC—not code—so we can collaborate on the why before the how. This rigor is what keeps our Control Plane API stable and performant. Thank you for your understanding and commitment to making Magos better! 💛\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagosproject%2Fmagos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagosproject%2Fmagos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagosproject%2Fmagos/lists"}