{"id":13820973,"url":"https://github.com/gimlet-io/capacitor","last_synced_at":"2026-03-11T05:04:24.908Z","repository":{"id":200455264,"uuid":"705527070","full_name":"gimlet-io/capacitor","owner":"gimlet-io","description":"A general purpose UI for FluxCD.","archived":false,"fork":false,"pushed_at":"2026-02-08T16:26:16.000Z","size":12030,"stargazers_count":1059,"open_issues_count":28,"forks_count":38,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-02-08T16:26:34.211Z","etag":null,"topics":["fluxcd","gitops","kubernetes"],"latest_commit_sha":null,"homepage":"https://gimlet.io/capacitor-next","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/gimlet-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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":"2023-10-16T07:30:06.000Z","updated_at":"2026-02-08T14:48:26.000Z","dependencies_parsed_at":"2023-12-28T15:25:20.384Z","dependency_job_id":"5a799e2a-8829-4028-aa70-3c77886e67d1","html_url":"https://github.com/gimlet-io/capacitor","commit_stats":null,"previous_names":["gimlet-io/capacitor"],"tags_count":96,"template":false,"template_full_name":null,"purl":"pkg:github/gimlet-io/capacitor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimlet-io%2Fcapacitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimlet-io%2Fcapacitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimlet-io%2Fcapacitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimlet-io%2Fcapacitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gimlet-io","download_url":"https://codeload.github.com/gimlet-io/capacitor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gimlet-io%2Fcapacitor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30372127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"online","status_checked_at":"2026-03-11T02:00:07.027Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["fluxcd","gitops","kubernetes"],"created_at":"2024-08-04T08:01:12.780Z","updated_at":"2026-03-11T05:04:19.897Z","avatar_url":"https://github.com/gimlet-io.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","kubernetes"],"sub_categories":[],"readme":"# Capacitor\n\nA general purpose UI for FluxCD.\n\n![Capacitor - Services](https://github.com/gimlet-io/capacitor/assets/4289031/b79056f0-7383-45f6-9b4a-a04376ba152b)\n\n\n## Installation\n\nCapacitor requires Flux v2.0.0.\n\n### Flux\n\nDeploy the latest Capacitor release in the `flux-system` namespace\nby adding the following manifests to your Flux repository:\n\n```yaml\n---\napiVersion: source.toolkit.fluxcd.io/v1beta2\nkind: OCIRepository\nmetadata:\n  name: capacitor\n  namespace: flux-system\nspec:\n  interval: 12h\n  url: oci://ghcr.io/gimlet-io/capacitor-manifests\n  ref:\n    semver: \"\u003e=0.1.0\"\n---\napiVersion: kustomize.toolkit.fluxcd.io/v1\nkind: Kustomization\nmetadata:\n  name: capacitor\n  namespace: flux-system\nspec:\n  targetNamespace: flux-system\n  interval: 1h\n  retryInterval: 2m\n  timeout: 5m\n  wait: true\n  prune: true\n  path: \"./\"\n  sourceRef:\n    kind: OCIRepository\n    name: capacitor\n```\n\nNote that Flux will check for Capacitor releases every 12 hours and will \nautomatically deploy the new version if it is available.\n\nAccess Capacitor UI with port-forwarding:\n\n```bash\nkubectl -n flux-system port-forward svc/capacitor 9000:9000\n```\n\n#### (Optional) Verify OCIRepository with Cosign\n\nThis feature requires Flux v2.2.0.\n\n```diff\n---\napiVersion: source.toolkit.fluxcd.io/v1beta2\nkind: OCIRepository\nmetadata:\n  name: capacitor\n  namespace: flux-system\nspec:\n  interval: 12h\n  url: oci://ghcr.io/gimlet-io/capacitor-manifests\n  ref:\n    semver: \"\u003e=0.1.0\"\n+  verify:\n+    provider: cosign\n+    matchOIDCIdentity:\n+      - issuer: \"https://token.actions.githubusercontent.com\"\n+        subject: \"^https://github.com/gimlet-io/capacitor.*$\" \n---\napiVersion: kustomize.toolkit.fluxcd.io/v1\nkind: Kustomization\nmetadata:\n  name: capacitor\n  namespace: flux-system\nspec:\n  targetNamespace: flux-system\n  interval: 1h\n  retryInterval: 2m\n  timeout: 5m\n  wait: true\n  prune: true\n  path: \"./\"\n  sourceRef:\n    kind: OCIRepository\n    name: capacitor\n```\n\n### Kubernetes manifests\n\n```\nkubectl apply -f https://raw.githubusercontent.com/gimlet-io/capacitor/main/deploy/k8s/rbac.yaml\nkubectl apply -f https://raw.githubusercontent.com/gimlet-io/capacitor/main/deploy/k8s/manifest.yaml\n\nkubectl port-forward svc/capacitor -n flux-system 9000:9000\n```\n\nFor adding an `Ingress`, a Kubernetes `NetworkPolicy` is required.\nAn example would be:\n\n```\n---\napiVersion: networking.k8s.io/v1\nkind: NetworkPolicy\nmetadata:\n  name: capacitor-ingress\n  namespace: flux-system\nspec:\n  policyTypes:\n    - Ingress\n  ingress:\n    - from:\n      - namespaceSelector: {}\n  podSelector:\n    matchLabels:\n      app.kubernetes.io/instance: capacitor\n---\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: capacitor-ingress\n  namespace: flux-system\nspec:\n  rules:\n    - host: gitops.example.com\n      http:\n        paths:\n          - pathType: Prefix\n            path: /\n            backend:\n              service:\n                name: capacitor\n                port:\n                  number: 9000\n```\n\n### Helm\n\n```\nkubectl apply -f https://raw.githubusercontent.com/gimlet-io/capacitor/main/deploy/k8s/rbac.yaml\n\nhelm repo add onechart https://chart.onechart.dev\n\nhelm upgrade -i capacitor -n flux-system onechart/onechart -f https://raw.githubusercontent.com/gimlet-io/capacitor/main/deploy/helm/onechart-helm-values.yaml\n\nkubectl port-forward svc/capacitor -n flux-system 9000:9000\n```\n\n## Why\n\nFluxCD is an amazing backend for all things gitops.\n\nIt is a shame that ArgoCD gained so much traction mostly because developers appreciate the UI. Rolling out a read-only ArgoCD UI made Argo the de-facto kubernetes dashboard, where people look at logs and various kubernetes resources.\n\nCapacitor's goal is to level the field: providing a UI option for Flux users that matches or exceeds the level of ArgoCD.\n\n## Built in public\n\nThe vision: [https://www.youtube.com/watch?v=LaDRRDvsRAs](https://www.youtube.com/watch?v=LaDRRDvsRAs)\n\nCapacitor is built currently by Gimlet.io founder Laszlo Fogas on live streams:\n\n- 1730CET, 16th October - Capacitor launch, Flux CRD backend\n    - https://youtube.com/live/Tw18CWFL5jo\n- 1700CET, 20th October - Rudimentary data model, bundling a React frontend\n    - https://www.youtube.com/watch?v=rhQ_ZSon8KA\n- 1730CET, 23rd October - Rendering Flux state\n    - https://www.youtube.com/watch?v=BoOIRF2bsQY\n- 1700CET, 6th November - Product vision, Rendering Kustomizations, React event handlers\n    - https://www.youtube.com/watch?v=LaDRRDvsRAs\n- 1700CET, 12th January - Where are we with Capacitor? Launch plans\n    - https://www.linkedin.com/events/buildingauiforfluxcd-wherearewe7151493559815188481/comments/\n- 6th February - OCIRepository support\n    - https://www.youtube.com/watch?v=q_dUJk6UZw4\n\n## Philosophy\n\nCapacitor wants to be more than a tool that displays Flux's CRDs in tables. Capacitor wants to provide contextualized information for developers to best operate their applications.\n\n## Screenshots\n\nKustomizations:\n\u003cimg alt=\"Kustomizations\" src=\"https://github.com/gimlet-io/capacitor/assets/4289031/597d066c-7db1-4f28-91f4-c7ee5d4af722\" width=\"450\"\u003e\n\nError Handling:\n\u003cimg alt=\"Capacitor - Error handling\" src=\"https://github.com/gimlet-io/capacitor/assets/4289031/cf025e03-1c45-4db0-8ee1-cf102dc24468\" width=\"450\"\u003e\n\n\nHelmReleases:\n\u003cimg alt=\"Capacitor - Helm Releases\" src=\"https://github.com/gimlet-io/capacitor/assets/4289031/effe04d9-b76f-4fc4-b83d-769164bb23aa\" width=\"450\"\u003e\n\n\nService Logs:\n\u003cimg alt=\"Capacitor - Service logs\" src=\"https://github.com/gimlet-io/capacitor/assets/4289031/8493d215-2969-49b2-a433-e0ab4c18437e\" width=\"450\"\u003e\n\n## Roadmap\n\n  - DONE: Flux CRD data (\"sync state\") backend\n  - DONE: Flux CRD data (\"sync state\") frontend\n  - DONE: UI for kubernetes resources deployed by Flux\n  - DONE: Quick actions: logs, events, describe, port-forward\n  - Displaying Errors\n  - Error notifications\n  - Support for environments\n  - Display application meta information - service catalog items\n\n## Star History\n\n![Star History Chart](https://api.star-history.com/svg?repos=gimlet-io/capacitor\u0026type=Date)\n\nPlease push ✨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgimlet-io%2Fcapacitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgimlet-io%2Fcapacitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgimlet-io%2Fcapacitor/lists"}