Skip to main content

BubuStack Overview

BubuStack applies the Unix philosophy to workflow orchestration on Kubernetes.

Design philosophy

  1. Do one thing and do it well. Each Engram is a single-purpose component — transcribe audio, call an LLM, send a notification. It does its job and produces output. It knows nothing about the pipeline it runs in.

  2. Write programs to work together. A Story composes Engrams into a DAG, wiring step outputs to step inputs. Swap one Engram for another and the pipeline keeps working — just as replacing jq with yq in a shell pipeline requires no changes to the surrounding commands.

  3. Text is the universal interface. Step outputs are JSON. Templates evaluate against a shared context of inputs and steps. There is no proprietary IPC, no binary coupling — just structured data flowing between independent components.

The operator (bobrapet) is the kernel: it schedules, reconciles, and enforces policy. It never owns business logic. The components — Engrams and Impulses — are userspace: Engrams own side effects, external calls, and data transformation; Impulses listen for external events and trigger workflows. The SDK (bubu-sdk-go) is libc: it provides the contract between the two.

Core resources

ResourceScopePurpose
StoryNamespacedDeclarative workflow definition (DAG of steps, policies, schemas)
StoryRunNamespacedConcrete execution of a Story with resolved inputs/outputs
StepRunNamespacedExecution record for a single step within a StoryRun
EngramNamespacedConfigured component instance
EngramTemplateClusterComponent definition with schemas and runtime contract
ImpulseNamespacedTrigger that launches StoryRuns from external events
ImpulseTemplateClusterTrigger definition
TransportClusterStreaming transport provider configuration
TransportBindingNamespacedRuntime binding between a step and its transport connector

Module map

ModuleRole
tractatusProtobuf service definitions for gRPC transport
coreShared contracts, templating engine, transport runtime
bobrapetKubernetes operator: CRDs, controllers, webhooks
bubu-sdk-goGo SDK for building Engrams and Impulses
bobravoz-grpcgRPC streaming transport hub
bubuilderWeb console and API server
engrams/*Individual Engram implementations
impulses/*Individual Impulse implementations

Dependencies form a strict DAG — lower layers never import higher layers.

Delivery lifecycle

  1. Declare Stories, EngramTemplates, and Impulses in Git.
  2. Apply with your GitOps controller (Argo CD, Flux, or plain kubectl).
  3. Reconcile — Bobrapet creates runtimes, wires transports, schedules steps.
  4. Observe — StoryRuns emit OpenTelemetry traces, structured errors, and metrics.

Choose your path

I am an operator

  1. Prerequisites
  2. Quickstart
  3. Operator Configuration
  4. Observability

I am building components

  1. Go SDK
  2. Building Engrams & Impulses
  3. Runtime Primitives

I want to contribute

  1. Community
  2. Roadmap
  3. Examples repository

Quick routes