{"id":48436321,"url":"https://github.com/bubustack/bobrapet","last_synced_at":"2026-04-08T15:00:40.119Z","repository":{"id":316750379,"uuid":"941890466","full_name":"bubustack/bobrapet","owner":"bubustack","description":"Kubernetes operator for declarative AI workflows. Model pipelines as CRDs (Stories, Engrams, Impulses) with real‑time streaming and batch execution.","archived":false,"fork":false,"pushed_at":"2026-02-02T07:29:27.000Z","size":444,"stargazers_count":5,"open_issues_count":8,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-06T13:32:55.662Z","etag":null,"topics":["agent","ai-orchestration","controller-runtime","crd","dag","gitops","go","kubernetes","llm","operator","rag","streaming","workflow-engine"],"latest_commit_sha":null,"homepage":"https://bubustack.io/","language":"Go","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/bubustack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","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},"funding":{"github":["bubustack"]}},"created_at":"2025-03-03T08:19:36.000Z","updated_at":"2025-12-16T02:47:55.000Z","dependencies_parsed_at":"2025-09-26T14:32:34.565Z","dependency_job_id":"1f51dd4a-b69b-485a-a0ae-8954f3de3af5","html_url":"https://github.com/bubustack/bobrapet","commit_stats":null,"previous_names":["bubustack/bobrapet"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/bubustack/bobrapet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bubustack%2Fbobrapet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bubustack%2Fbobrapet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bubustack%2Fbobrapet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bubustack%2Fbobrapet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bubustack","download_url":"https://codeload.github.com/bubustack/bobrapet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bubustack%2Fbobrapet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31560476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"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":["agent","ai-orchestration","controller-runtime","crd","dag","gitops","go","kubernetes","llm","operator","rag","streaming","workflow-engine"],"created_at":"2026-04-06T13:02:45.085Z","updated_at":"2026-04-08T15:00:40.067Z","avatar_url":"https://github.com/bubustack.png","language":"Go","readme":"# 🤖 bobrapet - A Declarative, Kubernetes-Native AI Workflow Engine\n[![Go Reference](https://pkg.go.dev/badge/github.com/bubustack/bobrapet.svg)](https://pkg.go.dev/github.com/bubustack/bobrapet)\n[![Go Report Card](https://goreportcard.com/badge/github.com/bubustack/bobrapet)](https://goreportcard.com/report/github.com/bubustack/bobrapet)\n\nBobrapet is a powerful, cloud-native workflow engine for orchestrating complex AI and data processing pipelines on Kubernetes. It leverages the declarative power of Custom Resource Definitions (CRDs) to let you define, manage, and execute multi-step, event-driven workflows with flexibility and control.\n\nQuick links:\n- Operator docs: https://bubustack.io/docs/bobrapet\n- Quickstart: https://bubustack.io/docs/bobrapet/guides/quickstart\n- CRD reference: https://bubustack.io/docs/bobrapet/reference/crds\n\n## 🌟 Key Features\n\n- **Declarative \u0026 GitOps-Friendly**: Define your entire workflow as a `Story` resource. Treat your AI pipelines as code and manage them through GitOps.\n- **Advanced DAG Orchestration**: A sophisticated Directed Acyclic Graph (DAG) engine orchestrates your steps, enabling complex dependencies and execution flows.\n- **Parallel-by-Default Execution**: For maximum performance, independent steps run in parallel automatically. Use the `needs` keyword to define an explicit execution order.\n- **Dynamic Control Flow**: Implement powerful logic directly in your workflows with built-in primitives and Common Expression Language (CEL) for `if` conditions.\n- **Composable \u0026 Reusable Components**: Package reusable tasks as `Engrams`, backed by versioned, cluster-scoped `EngramTemplates` for consistency.\n- **Flexible Streaming Strategies**: Optimize for long-running tasks with `PerStory` (always-on) or `PerStoryRun` (on-demand) resource allocation.\n- **Cross-Namespace Orchestration**: Securely reference resources and orchestrate workflows across multiple Kubernetes namespaces.\n- **Event-Driven Triggers**: Initiate workflows from various event sources using `Impulses`.\n\n## 🏗️ Architecture\n\nHigh-level architecture, patterns, and controller internals are documented on the website:\n- Overview and architecture: https://bubustack.io/docs/bobrapet/explanations/architecture\n\n## 📚 Core Concepts\n\n- **`Story`**: The top-level definition of a workflow, composed of steps.\n- **`Engram`**: A configured, runnable instance of a component (a \"worker\").\n- **`Impulse`**: A trigger that creates workflow instances based on external events.\n- **`StoryRun`**: An instance of an executing `Story`.\n- **`StepRun`**: An instance of a single `engram` step executing within a `StoryRun`.\n- **`EngramTemplate` \u0026 `ImpulseTemplate`**: Reusable, cluster-scoped definitions for `Engrams` and `Impulses`.\n\n## 🧰 Workflow Primitives\n\nSee the guides for primitives, batch vs. streaming, impulses, and storage configuration:\n- Guides: https://bubustack.io/docs/bobrapet/guides\n\n## 🚀 Quick Start\n\n### Prerequisites\n- A running Kubernetes cluster (e.g., KinD, Minikube).\n- `kubectl` configured to access your cluster.\n\n### 1. Install the Operator\n\nFirst, install the Custom Resource Definitions (CRDs):\n```bash\nmake install\n```\n\nNext, deploy the operator controller to your cluster:\n```bash\nmake deploy IMG=\u003cyour-repo\u003e/bobrapet:latest\n```\n*(Replace `\u003cyour-repo\u003e` with your container registry)*\n\n### 2. Deploy a sample workflow\n\nThe following example defines a two-step workflow that fetches content from a URL and uses an AI model to summarize it. Notice how the `summarize` step implicitly depends on the output of the `fetch-content` step.\n\nApply the sample manifests, which include the necessary `EngramTemplates`, `Engrams`, and the `Story` definition:\n```bash\nkubectl apply -k config/samples\n```\n\nThis creates:\n- An `Engram` named `http-request-engram` to fetch web content.\n- An `Engram` named `openai-summarizer-engram` to summarize text.\n- A `Story` named `summarize-website-story` that defines the workflow.\n\n### 3. Run the workflow\n\nCreate a `StoryRun` resource to trigger the workflow. This `StoryRun` provides the initial input `url` required by the `Story`.\n\n```yaml\napiVersion: runs.bubustack.io/v1alpha1\nkind: StoryRun\nmetadata:\n  name: summarize-k8s-docs\nspec:\n  storyRef:\n    name: summarize-website-story\n  inputs:\n    url: https://kubernetes.io/docs/concepts/overview/\n```\n\n### 4. Observe the results\n\nMonitor the execution of the workflow by checking the `StoryRun` and its child `StepRuns`.\n\n```bash\n# Check the overall status of the workflow\nkubectl get storyrun summarize-k8s-docs -o yaml\n\n# Check the status of individual steps\nkubectl get stepruns -l bubustack.io/storyrun=summarize-k8s-docs\n```\n\n## Environment variables (operator-injected; consumed by SDK)\n\nFor complete environment variable listings and defaults, see the operator configuration and transport reference:\n- Operator config: https://bubustack.io/docs/bobrapet/reference/config\n- gRPC transport: https://bubustack.io/docs/bobrapet/reference/grpc\n\n## 🛠️ Local Development\n\n1.  **Clone the repository:**\n    ```bash\n    git clone https://github.com/bubustack/bobrapet.git\n    cd bobrapet\n    ```\n\n2.  **Run the controller locally:**\n    This command runs the operator on your machine, using your local `kubeconfig` to communicate with the cluster. This is great for rapid development and debugging.\n    ```bash\n    make run\n    ```\n\n3.  **Run tests:**\n    ```bash\n    make test\n    ```\n\n4.  **End-to-end tests (Kind optional):**\n    ```bash\n    make test-e2e\n    ```\n\n## 📢 Support, Security, and Changelog\n\n- See `SUPPORT.md` for how to get help and report issues.\n- See `SECURITY.md` for vulnerability reporting and security posture.\n- See `CHANGELOG.md` for version history.\n\n## 🤝 Community\n\n- Code of Conduct: see [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) (Contributor Covenant v3.0)\n\n## 📄 License\n\nCopyright 2025 BubuStack.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n","funding_links":["https://github.com/sponsors/bubustack"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbubustack%2Fbobrapet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbubustack%2Fbobrapet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbubustack%2Fbobrapet/lists"}