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)
StoryTriggerNamespacedDurable admission request for external trigger delivery
StoryRunNamespacedConcrete execution of a Story with resolved inputs/outputs
StepRunNamespacedExecution record for a single step within a StoryRun
EffectClaimNamespacedDurable reservation and completion authority for one step side effect
EngramNamespacedConfigured component instance
EngramTemplateClusterComponent definition with schemas and runtime contract
ImpulseNamespacedTrigger that submits StoryTrigger requests 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 protocol/env helpers, and connector runtime helpers
bobrapetKubernetes operator: CRDs, controllers, webhooks
bubu-sdk-goGo SDK for building Engrams and Impulses
bobravoz-grpcgRPC streaming transport hub
bubuilderWeb console and API server
bubu-registryPre-release registry work and bubu CLI for future component discovery/install flows
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