{"id":13682344,"url":"https://github.com/streamthoughts/jikkou","last_synced_at":"2026-04-07T12:01:14.200Z","repository":{"id":37079948,"uuid":"141187250","full_name":"streamthoughts/jikkou","owner":"streamthoughts","description":"The Open source Resource as Code framework for Apache Kafka. Jikkou helps you implement GitOps for Kafka at scale!","archived":false,"fork":false,"pushed_at":"2026-04-01T21:59:28.000Z","size":39129,"stargazers_count":280,"open_issues_count":35,"forks_count":26,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-04-01T22:28:34.595Z","etag":null,"topics":["apache-kafka","automation","aws-glue","cluster-manager","datamesh","devops","gitops","hacktoberfest","infrastructure-as-code","java","kafka","kafka-cluster","kafka-manager","kafka-topic","opensource","yaml"],"latest_commit_sha":null,"homepage":"https://www.jikkou.io","language":"Java","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/streamthoughts.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2018-07-16T19:53:53.000Z","updated_at":"2026-03-27T22:07:59.000Z","dependencies_parsed_at":"2023-10-15T13:51:58.468Z","dependency_job_id":"b647f106-94c1-42fc-bc6a-6a8d555d70de","html_url":"https://github.com/streamthoughts/jikkou","commit_stats":{"total_commits":296,"total_committers":8,"mean_commits":37.0,"dds":"0.21283783783783783","last_synced_commit":"e3ffe7b4372c123197b9733b16caf10813418120"},"previous_names":["streamthoughts/kafka-specs"],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/streamthoughts/jikkou","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamthoughts%2Fjikkou","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamthoughts%2Fjikkou/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamthoughts%2Fjikkou/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamthoughts%2Fjikkou/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/streamthoughts","download_url":"https://codeload.github.com/streamthoughts/jikkou/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamthoughts%2Fjikkou/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31511784,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["apache-kafka","automation","aws-glue","cluster-manager","datamesh","devops","gitops","hacktoberfest","infrastructure-as-code","java","kafka","kafka-cluster","kafka-manager","kafka-topic","opensource","yaml"],"created_at":"2024-08-02T13:01:44.539Z","updated_at":"2026-04-07T12:01:14.178Z","avatar_url":"https://github.com/streamthoughts.png","language":"Java","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/jikkou-logo-title.png\" alt=\"Jikkou Logo\" width=\"400\"/\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eResource as Code for Apache Kafka\u003c/h3\u003e\n\u003cp align=\"center\"\u003e\n  Declare. Apply. Automate.\u003cbr/\u003e\n  Manage your Kafka resources the same way you manage your infrastructure.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/streamthoughts/jikkou/actions/workflows/maven-build.yml\"\u003e\u003cimg src=\"https://github.com/streamthoughts/jikkou/actions/workflows/maven-build.yml/badge.svg\" alt=\"Build Status\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/streamthoughts/jikkou/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/streamthoughts/jikkou\" alt=\"License\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/streamthoughts/jikkou/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/streamthoughts/jikkou?color=blue\u0026label=latest\" alt=\"Release\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/streamthoughts/jikkou/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/streamthoughts/jikkou?style=flat\" alt=\"Stars\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://sonarcloud.io/dashboard?id=streamthoughts_jikkou\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=streamthoughts_jikkou\u0026metric=reliability_rating\" alt=\"Reliability\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://sonarcloud.io/dashboard?id=streamthoughts_jikkou\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=streamthoughts_jikkou\u0026metric=sqale_rating\" alt=\"Maintainability\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://sonarcloud.io/dashboard?id=streamthoughts_jikkou\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=streamthoughts_jikkou\u0026metric=coverage\" alt=\"Coverage\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://jikkou.io/\"\u003eDocumentation\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://jikkou.io/docs/install/\"\u003eInstall\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://jikkou.io/docs/tutorials/\"\u003eTutorials\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://join.slack.com/t/jikkou-io/shared_invite/zt-27c0pt61j-F10NN7d7ZEppQeMMyvy3VA\"\u003eSlack\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n**Jikkou** (jikkou / 実行 — *execution* in Japanese) is an open-source tool that lets you manage Apache Kafka resources declaratively using YAML files, the same way `kubectl` manages Kubernetes resources.\n\nStop writing scripts. Stop clicking through UIs. Define your desired state, and Jikkou makes it happen.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/demo.gif\" alt=\"Jikkou in action\" width=\"800\"/\u003e\n\u003c/p\u003e\n\n## Why Jikkou?\n\n| | |\n|---|---|\n| **Declarative** | Define Topics, ACLs, Schemas, Connectors, and Quotas as code in simple YAML files |\n| **GitOps-Ready** | Version-control your Kafka configuration and automate changes through CI/CD |\n| **Stateless** | No database needed — Jikkou uses your Kafka platform as the source of truth |\n| **Safe** | Built-in dry-run mode, validations, and reconciliation engine prevent accidents |\n| **Extensible** | Plugin-based architecture with providers, validators, transformations, and templates |\n| **Multi-Platform** | Works with Apache Kafka, Confluent Cloud, Aiven, Amazon MSK, Redpanda, and more |\n\n## Quick Start\n\n### Install\n\n```bash\n# Via SDKMan (recommended)\nsdk install jikkou\n\n# Or via Docker\ndocker pull streamthoughts/jikkou\n```\n\n\u003e See the full [installation guide](https://jikkou.io/docs/install/) for native binaries, Homebrew, and more.\n\n### Define a Kafka topic\n\n```yaml\n# kafka-topics.yaml\napiVersion: 'kafka.jikkou.io/v1beta2'\nkind: 'KafkaTopic'\nmetadata:\n  name: 'my-topic'\nspec:\n  partitions: 12\n  replicas: 3\n  configs:\n    min.insync.replicas: 2\n```\n\n### Apply it\n\n```bash\njikkou apply --files ./kafka-topics.yaml\n```\n\nThat's it. Jikkou computes the diff and applies only the necessary changes:\n\n```\nTASK [CREATE] Create a new topic my-topic (partitions=12, replicas=3) - CHANGED\nEXECUTION in 2s 661ms\nok: 0, created: 1, altered: 0, deleted: 0, failed: 0\n```\n\n## Supported Resources\n\n| Apache Kafka | Schema Registry | Kafka Connect | Cloud Providers |\n|:---:|:---:|:---:|:---:|\n| Topics \u0026 Configs | Avro Schemas | Connectors | Aiven (ACLs, Quotas) |\n| ACLs | JSON Schemas | | Confluent Cloud (RBAC) |\n| Quotas | Protobuf Schemas | | AWS Glue Schemas |\n| Consumer Groups | | | |\n| Brokers \u0026 Users | | | |\n| KTable Records | | | |\n\n## How It Works\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/content/en/docs/Overview/jikkou-architecture-overview.png\" alt=\"Architecture\" width=\"800\"/\u003e\n\u003c/p\u003e\n\nJikkou follows a simple reconciliation loop:\n\n1. **Read** your resource definitions from YAML files (with Jinja templating support)\n2. **Compute** the differences between desired state and actual cluster state\n3. **Apply** only the minimal set of changes needed\n4. **Report** what was created, updated, or deleted\n\n## Deployment Modes\n\n| Mode              | Description                                                                                   |\n|-------------------|-----------------------------------------------------------------------------------------------|\n| **CLI**           | Run as a command-line tool — perfect for local development and CI/CD pipelines                |\n| **API Server**    | Run as a REST API server — ideal for platform teams and automation                            |\n| **Docker**        | Available as container images on [Docker Hub](https://hub.docker.com/r/streamthoughts/jikkou) |\n| **Native Binary** | GraalVM-compiled native executables for instant startup                                       |\n\n## Documentation\n\nFull documentation is available at **[jikkou.io](https://jikkou.io/)**.\n\n- [Getting Started](https://jikkou.io/docs/install/)\n- [Concepts \u0026 Architecture](https://jikkou.io/docs/concepts/)\n- [Providers Reference](https://jikkou.io/docs/providers/)\n- [Tutorials](https://jikkou.io/docs/tutorials/)\n\n## Developers\n\nFor build instructions, development setup, and contribution guidelines, see:\n\n- **[CONTRIBUTING.md](./CONTRIBUTING.md)** — How to contribute, coding guidelines, commit conventions\n- **[AGENTS.md](./AGENTS.md)** — Detailed development guidelines, build commands, and architecture\n\n### Quick Build\n\n```bash\n# Build and run all tests\n./mvnw clean verify\n\n# Build without tests\n./mvnw clean verify -DskipTests\n\n# Apply code formatting\n./mvnw spotless:apply\n```\n\n**Requirements:** Java 25, Docker (for integration tests), GraalVM (for native builds)\n\n## Contributors\n\nJikkou is built by its community. Thank you to everyone who has contributed!\n\n\u003c!-- CONTRIBUTORS-START --\u003e\n\u003ca href=\"https://github.com/streamthoughts/jikkou/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=streamthoughts/jikkou\u0026max=100\u0026columns=12\" alt=\"Contributors\"/\u003e\n\u003c/a\u003e\n\u003c!-- CONTRIBUTORS-END --\u003e\n\nWant to see your name here? Check out the [contribution guide](./CONTRIBUTING.md) and [open issues](https://github.com/streamthoughts/jikkou/issues).\n\n## Support the Project\n\nIf you find Jikkou useful, please consider:\n\n- Giving it a **[star on GitHub](https://github.com/streamthoughts/jikkou)** to help others discover it\n- Joining the **[Slack community](https://join.slack.com/t/jikkou-io/shared_invite/zt-27c0pt61j-F10NN7d7ZEppQeMMyvy3VA)** to ask questions and share feedback\n- **[Contributing](./CONTRIBUTING.md)** code, documentation, or bug reports\n\n## License\n\nLicensed under the [Apache License, Version 2.0](./LICENSE).\n\n---\n\n\u003cp align=\"center\"\u003e\n  Developed with \u0026#10084; by \u003ca href=\"https://github.com/fhussonnois\"\u003eFlorian Hussonnois\u003c/a\u003e and the Jikkou community.\n\u003c/p\u003e\n","funding_links":[],"categories":["Java","进程间通信","Management \u0026 Monitoring"],"sub_categories":["Cluster Management"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamthoughts%2Fjikkou","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstreamthoughts%2Fjikkou","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamthoughts%2Fjikkou/lists"}