{"id":39689337,"url":"https://github.com/colliery-io/brokkr","last_synced_at":"2026-01-18T10:03:59.255Z","repository":{"id":288425844,"uuid":"840462781","full_name":"colliery-io/brokkr","owner":"colliery-io","description":"  Environment-aware control plane for dynamically distributing Kubernetes objects across multiple clusters. API-first, pull-based architecture for runtime-driven service orchestration where GitOps falls short.","archived":false,"fork":false,"pushed_at":"2026-01-04T18:47:15.000Z","size":7423,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-01-09T10:24:05.527Z","etag":null,"topics":["cloud-native","control-plane","kubernetes","multi-cluster","platform-engineering","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/colliery-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-HEADER.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-09T19:05:08.000Z","updated_at":"2026-01-08T14:05:28.000Z","dependencies_parsed_at":"2025-04-18T03:13:41.808Z","dependency_job_id":"fc09e42c-6904-47cc-a3f9-be216ffe8188","html_url":"https://github.com/colliery-io/brokkr","commit_stats":null,"previous_names":["colliery-io/brokkr"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/colliery-io/brokkr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colliery-io%2Fbrokkr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colliery-io%2Fbrokkr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colliery-io%2Fbrokkr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colliery-io%2Fbrokkr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/colliery-io","download_url":"https://codeload.github.com/colliery-io/brokkr/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colliery-io%2Fbrokkr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28534209,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"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":["cloud-native","control-plane","kubernetes","multi-cluster","platform-engineering","rust"],"created_at":"2026-01-18T10:03:58.532Z","updated_at":"2026-01-18T10:03:59.248Z","avatar_url":"https://github.com/colliery-io.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Brokkr\n\nBrokkr is an environment-aware control plane for dynamically distributing Kubernetes objects across multiple clusters. It provides a centralized way to manage deployments across heterogeneous Kubernetes environments while respecting the unique characteristics and constraints of each target cluster.\n\n## Overview\n\nModern infrastructure often spans multiple Kubernetes clusters across different cloud providers, regions, or environments. Managing deployments consistently across these clusters while adapting to their individual requirements is challenging. Brokkr solves this by providing a broker-agent architecture where a central broker service orchestrates resource distribution to lightweight agents running in each target cluster.\n\nThe broker maintains the desired state of your applications as \"stacks\" containing Kubernetes resources. Agents poll the broker for updates and apply resources to their local clusters. This pull-based model means clusters can be behind firewalls or in restricted networks and still receive deployments reliably. Agents also report back health status and deployment results, giving you visibility into the state of your applications across all clusters from a single point.\n\nBrokkr supports sophisticated targeting through labels and annotations, allowing you to direct deployments to specific clusters or groups of clusters. Templates with JSON Schema validation enable standardized deployments while allowing per-environment customization. The system tracks deployment health, emits events via webhooks, and provides comprehensive APIs for integration with CI/CD pipelines and external tooling.\n\n## Quick Start\n\n### Prerequisites\n\nRunning Brokkr locally requires Rust 1.8+, PostgreSQL, Docker with Docker Compose, and the [Angreal](https://angreal.github.io/) task runner which you can install via `pip install angreal`.\n\n### Running Locally\n\nClone the repository and start the development environment:\n\n```bash\ngit clone https://github.com/your-org/brokkr.git\ncd brokkr\nangreal local up\n```\n\nThis starts the broker API at http://localhost:3000 and the admin UI at http://localhost:3001.\n\n### Creating Your First Deployment\n\nCreate a stack to hold your application's resources:\n\n```bash\ncurl -X POST http://localhost:3000/api/v1/stacks \\\n  -H \"Authorization: Bearer \u003cadmin-pak\u003e\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\": \"my-app\", \"description\": \"My application stack\"}'\n```\n\nVerify agents are connected and ready to receive deployments:\n\n```bash\ncurl http://localhost:3000/api/v1/agents \\\n  -H \"Authorization: Bearer \u003cadmin-pak\u003e\"\n```\n\n## Documentation\n\nComprehensive documentation is available in the [docs/](./docs/) directory or can be built locally with `angreal local docs`. The documentation follows the Divio documentation system, organized into four categories:\n\nThe **Getting Started** guide covers installation options including Helm charts for production and development environment setup. **Tutorials** provide step-by-step walkthroughs of common tasks like deploying your first application or setting up multi-cluster targeting. **How-To Guides** give focused instructions for specific tasks such as configuring webhooks, using templates, or integrating with CI/CD systems. The **Explanation** section dives deep into Brokkr's architecture, data model, and design decisions.\n\n## Project Structure\n\nBrokkr is implemented as a Rust workspace with multiple crates serving distinct roles. The `brokkr-broker` crate contains the central management service that exposes the REST API and coordinates resource distribution. The `brokkr-agent` crate implements the cluster agent that polls the broker and applies resources to Kubernetes. Shared data models live in `brokkr-models`, while common utilities like configuration parsing and PAK management are in `brokkr-utils`. The `charts/` directory contains Helm charts for deploying both components.\n\n## Development\n\nCommon development tasks are managed through Angreal. Run the test suite with `angreal tests unit all` or rebuild a specific service with `angreal local rebuild broker`. See the documentation for complete development workflows.\n\n## License\n\nBrokkr is provided under the Elastic License 2.0. See [LICENSE.txt](./LICENSE.txt) for details.\n\n## Contributing\n\nPull requests and issues are welcome. For commercial use or implementation assistance, please contact us.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolliery-io%2Fbrokkr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcolliery-io%2Fbrokkr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolliery-io%2Fbrokkr/lists"}