{"id":20513351,"url":"https://github.com/polarstreams/polar","last_synced_at":"2026-02-13T15:08:56.587Z","repository":{"id":58853217,"uuid":"449213274","full_name":"polarstreams/polar","owner":"polarstreams","description":"Lightweight \u0026 elastic kubernetes-native event streaming system","archived":false,"fork":false,"pushed_at":"2024-11-11T07:51:56.000Z","size":1104,"stargazers_count":207,"open_issues_count":26,"forks_count":15,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-21T22:46:27.936Z","etag":null,"topics":["elastic","event-streaming","events","golang","high-availability","k8s","kubernetes","message-queue"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polarstreams.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2022-01-18T09:06:39.000Z","updated_at":"2025-05-30T09:56:52.000Z","dependencies_parsed_at":"2023-11-17T07:40:39.435Z","dependency_job_id":"f9e10185-c885-47e2-b462-5de22126da25","html_url":"https://github.com/polarstreams/polar","commit_stats":null,"previous_names":["barcostreams/barco","polarstreams/barco"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/polarstreams/polar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polarstreams%2Fpolar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polarstreams%2Fpolar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polarstreams%2Fpolar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polarstreams%2Fpolar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polarstreams","download_url":"https://codeload.github.com/polarstreams/polar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polarstreams%2Fpolar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29411138,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"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":["elastic","event-streaming","events","golang","high-availability","k8s","kubernetes","message-queue"],"created_at":"2024-11-15T21:10:22.494Z","updated_at":"2026-02-13T15:08:56.569Z","avatar_url":"https://github.com/polarstreams.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PolarStreams\n\nPolarStreams is a lightweight, elastic, Kubernetes-native event streaming system. It acts as a persistent buffer between\nservices providing at-least-once delivery guarantees.\n\nPolarStreams is optimized to be developer friendly, resource efficient, have minimal operational overhead, and be a\ngood K8s neighbor.\n\n![go build](https://github.com/polarstreams/polar/actions/workflows/go.yml/badge.svg)\n\n## Features\n\n### Lightweight \u0026 Fast\n\n- Limited memory footprint\n- Production workloads using just 0.5GiB of memory per pod\n- [1+ million durable writes per second on commodity hardware][benchmarks]\n- Small binary size, arm64 as first-class citizen\n- No additional dependencies, i.e., no Zookeeper\n\n### Elastic\n\n- New brokers can be started up, join the cluster, and receive new data in seconds\n- No need to operate it manually for scaling up/down cluster\n- After a period of low usage, it scales down automatically\n- Elastic in both computing and storage\n\n### Kubernetes Native\n\n- Basic setup using StatefulSets\n- Data distribution is K8s-aware: data placement based on the StatefulSet's pod ordinal\n- No need for an operator\n- Good K8s neighbor: Direct I/O, no OS page cache for log segments\n\n-----\n\n\u003cdetails\u003e\n\u003csummary\u003e⚠️ \u003cstrong\u003eThe project is still in early development\u003c/strong\u003e ⚠️\u003c/summary\u003e\nPolarStreams is not production ready yet, expect bugs and things that don't work.\n\nWe honestly value your contribution to make this project ready for general availability. If you want to contribute,\ncheck out the [Contributing Guide](./CONTRIBUTING.md).\n\u003c/details\u003e\n\n-----\n\n## Resources\n\n- [Documentation Index](./docs/)\n- [Why PolarStreams?](#why-polarstreams)\n- [How does PolarStreams work?](./docs/technical_intro/)\n- [Benchmarks][benchmarks]\n- [REST API docs][rest-api]\n- [Installing](./docs/install/)\n- [FAQ](./docs/faq/)\n\n## Getting Started\n\nProducing and consuming messages from PolarStreams is as simple as sending a HTTP request. Use your favorite HTTP client in\nyour technology stack to send and receive events. Additionally, we also provide a [Go Client Library][go-client].\n\n### Getting Started on Kubernetes\n\nGet started with PolarStreams on Kubernetes using [this guide](./docs/getting_started/on_kubernetes/).\n\n### Getting Started on Docker\n\nPolarStreams is distributed by default with a minimal size of 3 brokers for production use. You can run a\nsingle-broker using Docker / Podman with developer mode. Read more about [how to get started with PolarStreams on\nDocker](./docs/getting_started/on_docker/).\n\n-----\n\n## Why PolarStreams?\n\nPolarStreams was created to provide a developer friendly and resource efficient event streaming solution for\nKubernetes that is easy to use and operate.\n\nWe believe that deploying and managing a persistent event streaming for a microservice architecture should be as easy as\ndeploying a stateless service. Users should be able to start with small pods (512MiB of memory!) and elastically scale\nto support larger workloads with no operational overhead.\n\nEase of use and resource efficiency is what the Cloud is all about. Pay for the resources that you need and avoid\noverprovisioning in advance.\n\n## Build\n\n```bash\ngo build .\n\ngo test -v ./...\n```\n\nThe [Contributing Guide](./CONTRIBUTING.md#environment-setup) has more information about environment setup and other\ntopics that can help you to build PolarStreams from source.\n\n## Design Principles\n\n### Act as safe buffer between services\n\nPersistent event streaming should act as a buffer between services, supporting peaks by seamlessly scaling,\nallowing events to be consumed at a later time from the peak. Once a certain amount of events have been produced\nand not consumed, the following events can be stored in object storage to be pulled once the consumers catch up,\nreducing costs for storage.\n\n### Always-on with cost control\n\nMessage streaming should be highly available by default and only consume the minimum required resources to run\neffectively.\n\n### Operational simplicity\n\nRegular maintenance operations like upgrading the cluster or decommissioning Kubernetes nodes are common and should\nbe handled smoothly. For example, when a consumer is being restarted due to an upgrade, there's no need for re-balance\nthe data assignment among consumers as it's very likely that the consumer will be ready in a few seconds. Querying the\nKubernetes API can provide valuable insights to understand what is occurring and what to expect.\n\n### Linearly horizontally scalable\n\nThe system should elastically scale intelligently, to support the future web scale and without affecting running\nservices.\n\n## Contribute\n\nWe are always happy to have contributions to the project whether it is source code, documentation, bug reports,\nfeature requests or feedback. To get started with contributing:\n\n- Have a look through GitHub issues labeled [\"Good first issue\"][good-first-issue].\n- Read the [contribution guide](./CONTRIBUTING.md).\n- See the [build instructions](#build), for details on building PolarStreams.\n- [Create a fork][create-fork] of PolarStreams and submit a pull\nrequest with your proposed changes.\n\n## License\n\nCopyright (C) 2022 Jorge Bay\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nhttps://www.gnu.org/licenses/agpl-3.0.html\n\n[good-first-issue]: https://github.com/polarstreams/polar/labels/good%20first%20issue\n[create-fork]: https://docs.github.com/en/github/getting-started-with-github/fork-a-repo\n[go-client]: https://github.com/polarstreams/go-client\n[rest-api]: ./docs/rest_api/\n[benchmarks]: ./docs/benchmarks/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolarstreams%2Fpolar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolarstreams%2Fpolar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolarstreams%2Fpolar/lists"}