{"id":49332019,"url":"https://github.com/natrontech/argoplane","last_synced_at":"2026-04-26T23:01:28.119Z","repository":{"id":353058518,"uuid":"1182256896","full_name":"natrontech/argoplane","owner":"natrontech","description":"ArgoPlane is a collection of ArgoCD UI extensions.","archived":false,"fork":false,"pushed_at":"2026-04-22T10:20:09.000Z","size":2947,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-22T10:30:29.243Z","etag":null,"topics":["argocd","gitops"],"latest_commit_sha":null,"homepage":"https://natrontech.github.io/argoplane","language":"TypeScript","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/natrontech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"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-15T09:07:37.000Z","updated_at":"2026-04-22T10:20:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/natrontech/argoplane","commit_stats":null,"previous_names":["natrontech/argoplane"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/natrontech/argoplane","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natrontech%2Fargoplane","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natrontech%2Fargoplane/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natrontech%2Fargoplane/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natrontech%2Fargoplane/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/natrontech","download_url":"https://codeload.github.com/natrontech/argoplane/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natrontech%2Fargoplane/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32315712,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T21:09:39.134Z","status":"ssl_error","status_checked_at":"2026-04-26T21:09:21.240Z","response_time":129,"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":["argocd","gitops"],"created_at":"2026-04-26T23:01:25.981Z","updated_at":"2026-04-26T23:01:28.104Z","avatar_url":"https://github.com/natrontech.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/argoplane_logo.svg\" alt=\"ArgoPlane\" width=\"72\" height=\"72\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eArgoPlane\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eAn ArgoCD extension package. Metrics, logs, backups, network flows, vulnerabilities, and events — all inside ArgoCD.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/natrontech/argoplane/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/natrontech/argoplane/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/natrontech/argoplane/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/natrontech/argoplane?include_prereleases\u0026sort=semver\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache--2.0-blue\" alt=\"License: Apache-2.0\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/natrontech/argoplane/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/natrontech/argoplane\" alt=\"Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://claude.ai/code\"\u003e\u003cimg src=\"https://img.shields.io/badge/built%20with-Claude%20Code-blueviolet\" alt=\"Built with Claude Code\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nArgoPlane is a collection of ArgoCD UI extensions. It adds resource tabs, app views, and status panels so developers can see metrics, logs, backups, network flows, vulnerabilities, and events without leaving ArgoCD. Nothing more, nothing less. Each extension is independent and can be installed on its own.\n\nhttps://github.com/user-attachments/assets/b9c4a296-9d05-46ca-b421-7011a22bf9b9\n\n## Extensions\n\n| Category | Extension | What it shows | Status | Preview |\n|----------|-----------|---------------|--------|---------|\n| **Observe** | Metrics | CPU, memory, request rates, latency (Prometheus) | ✅ | \u003cimg src=\"assets/demo/application_metrics.png\"/\u003e\u003cbr\u003e\u003cimg src=\"assets/demo/pod_metrics.png\"/\u003e |\n| **Observe** | Backups | Backup status, schedules, restore triggers (Velero) | ✅ | \u003cimg src=\"assets/demo/application_backup.png\"/\u003e |\n| **Observe** | Networking | Traffic flows, network policies (Cilium/Hubble) | ✅ | \u003cimg src=\"assets/demo/application_network_flows.png\"/\u003e\u003cbr\u003e\u003cimg src=\"assets/demo/application_network_flows_dropped.png\"/\u003e |\n| **Observe** | Logs | Log search, severity detection, volume charts (Loki) | ✅ | \u003cimg src=\"assets/demo/application_logs.png\"/\u003e\u003cbr\u003e\u003cimg src=\"assets/demo/pod_logs.png\"/\u003e |\n| **Secure** | Vulnerabilities | Image CVEs, config audit, exposed secrets, SBOM (Trivy Operator) | ✅ | \u003cimg src=\"assets/demo/application_vulnerabilities.png\"/\u003e\u003cbr\u003e\u003cimg src=\"assets/demo/application_configuration_audit.png\"/\u003e\u003cbr\u003e\u003cimg src=\"assets/demo/application_exposed_secrets.png\"/\u003e\u003cbr\u003e\u003cimg src=\"assets/demo/application_sbom.png\"/\u003e |\n| **Observe** | Events | Kubernetes events per resource and application | ✅ | \u003cimg src=\"assets/demo/application_events.png\"/\u003e\u003cbr\u003e\u003cimg src=\"assets/demo/pod_events.png\"/\u003e |\n| **Observe** | Alerts | Firing alerts, PrometheusRules, silences (Alertmanager) | Planned | - |\n| **Secure** | Policies | Policy violations, admission results (Kyverno) | Planned | - |\n\nEach extension is independently toggleable. Install only what you need.\n\n## How it works\n\nEvery extension follows the same pattern: a **React/TypeScript UI** registers tabs and views via ArgoCD's extension API, a **Go backend** queries the underlying system (Prometheus, Velero, Loki, etc.), and ArgoCD's **proxy extension** mechanism routes requests from the UI to the backend. Extensions inherit ArgoCD's authentication and RBAC. No extra auth layer required.\n\n```\nArgoCD UI\n├── ArgoPlane extensions\n│   ├── Resource tabs (per Deployment, Pod, etc.)\n│   ├── App views (per Application)\n│   └── Status panels (app header)\n│\n│   React/TS ──proxy──▶ Go backends\n│                        ├── Prometheus\n│                        ├── Velero\n│                        ├── Cilium/Hubble\n│                        ├── Loki\n│                        ├── Trivy Operator\n│                        └── K8s Events API\n│\n└── ArgoCD RBAC + Dex auth\n```\n\n## Installation\n\n**Helm (recommended):**\n\n```sh\nhelm install argoplane oci://ghcr.io/natrontech/charts/argoplane --version 0.2.0\n```\n\nEach extension can be enabled or disabled individually in `values.yaml`. The chart deploys extension backends, proxy configuration, RBAC policies, and UI bundles (via an init container on argocd-server).\n\nSee the [deployment docs](services/docs/) for full configuration details.\n\n## RBAC\n\nArgoCD requires explicit `extensions, invoke` permission in `argocd-rbac-cm`. AppProject role policies are ignored for this check — it must be in the global config map.\n\n```csv\ng, your-oidc-group-id, role:your-role\np, role:your-role, applications, get, your-project/*, allow\np, role:your-role, extensions, invoke, metrics, allow\np, role:your-role, extensions, invoke, backups, allow\np, role:your-role, extensions, invoke, networking, allow\np, role:your-role, extensions, invoke, logs, allow\np, role:your-role, extensions, invoke, vulnerabilities, allow\np, role:your-role, extensions, invoke, events, allow\n```\n\n`applications, get` is a prerequisite: ArgoCD rejects extension calls for applications the user cannot read.\n\n**Security note:** ArgoCD uses a single `extensions, invoke` permission for all HTTP methods. A user with invoke access can call any endpoint the backend exposes — including write operations like backup triggers and restores. Scope `applications, get` as narrowly as your setup allows.\n\n## Development\n\n```sh\nmake dev-infra            # Create kind cluster + install ArgoCD (idempotent)\nmake argocd-password      # Print admin password\nmake argocd-portforward   # Port-forward UI to localhost:8080\nmake build-extensions     # Build all UI extension bundles\nmake reload-extensions    # Rebuild + redeploy all extensions\nmake test-integration     # Run integration tests\nmake clean-all            # Destroy everything\nmake help                 # Show all available targets\n```\n\n## Built with AI\n\nArgoPlane is developed with the help of [Claude Code](https://claude.ai/code), Anthropic's AI coding assistant. We're transparent about this because we believe AI-assisted development is the future, and hiding it helps nobody.\n\nThe entire Claude Code configuration is checked into this repo:\n\n| Path | What it does |\n|------|-------------|\n| [`CLAUDE.md`](CLAUDE.md) | Project context, architecture overview, and development instructions for Claude |\n| [`.claude/rules/`](.claude/rules/) | Rule files covering Go, React, architecture, design system, git conventions, and more |\n| [`.claude/skills/`](.claude/skills/) | Custom skills: dev setup, extension scaffolding, deployment, testing |\n\nWe share this openly so others can learn from our approach to AI-assisted development.\n\n## License\n\n[Apache-2.0](LICENSE)\n\nBuilt with love from Switzerland by [Natron Tech AG](https://natron.io).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatrontech%2Fargoplane","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnatrontech%2Fargoplane","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatrontech%2Fargoplane/lists"}