Installing Engrams and Impulses
BubuStack ships a growing catalog of ready-made components. This guide shows how to install them directly into your cluster from GitHub-hosted template YAMLs.
bubu-registry and the bubu
CLI already exist for registry-backed discovery, install, and publishing
workflows. This page documents the direct kubectl apply path because it is
the universal baseline that works for every published component today.
Before you start, make sure you have
BubuStack installed and the CRDs registered
(kubectl api-resources | grep bubustack).
How components are distributed
Each component lives in its own GitHub repository under the bubustack organization:
- Engrams — data-processing steps (
*-engramrepos). - Impulses — event-driven triggers (
*-impulserepos).
Every repository contains:
| File | Purpose |
|---|---|
Engram.yaml or Impulse.yaml | Cluster-scoped template manifest |
Dockerfile | Container image build |
README.md | Configuration reference, inputs, outputs |
Pre-built container images are published to
ghcr.io/bubustack/<component-name>:<version>.
Step 1: Install an EngramTemplate
EngramTemplates are cluster-scoped resources. They register the component so that Stories can reference it.
From a GitHub release (recommended)
# Example: install the openai-chat-engram template
kubectl apply -f https://raw.githubusercontent.com/bubustack/openai-chat-engram/main/Engram.yaml
From a local clone
git clone https://github.com/bubustack/openai-chat-engram.git
kubectl apply -f openai-chat-engram/Engram.yaml
Verify the template is registered
kubectl get engramtemplates
# NAME VERSION MATURITY AGE
# openai-chat 0.1.0 experimental 5s
Step 2: Create an Engram instance
An Engram is a namespaced resource that references a template and supplies configuration for a specific Story.
apiVersion: bubustack.io/v1alpha1
kind: Engram
metadata:
name: my-chat
namespace: my-app
spec:
templateRef:
name: openai-chat # must match EngramTemplate metadata.name
with: # config values (see component README)
defaultModel: gpt-4o
defaultTemperature: 0.7
secretRefs:
- name: openai-credentials # Kubernetes Secret with API keys
kubectl apply -f my-engram.yaml
kubectl get engrams -n my-app
Step 3: Install an ImpulseTemplate
ImpulseTemplates follow the same pattern.
# Example: install the cron-impulse template
kubectl apply -f https://raw.githubusercontent.com/bubustack/cron-impulse/main/Impulse.yaml
kubectl get impulsetemplates
# NAME VERSION MATURITY AGE
# cron 0.1.0 experimental 5s
Step 4: Create an Impulse instance
apiVersion: bubustack.io/v1alpha1
kind: Impulse
metadata:
name: nightly-run
namespace: my-app
spec:
templateRef:
name: cron # must match ImpulseTemplate metadata.name
storyRef:
name: my-story
with:
schedules:
- name: nightly
cron: "0 2 * * *"
kubectl apply -f my-impulse.yaml
kubectl get impulses -n my-app
Available components
Engrams
| Component | Pattern | Install |
|---|---|---|
| conversation-memory-engram | Batch | kubectl apply -f https://raw.githubusercontent.com/bubustack/conversation-memory-engram/main/Engram.yaml |
| http-request-engram | Batch | kubectl apply -f https://raw.githubusercontent.com/bubustack/http-request-engram/main/Engram.yaml |
| json-filter-engram | Batch | kubectl apply -f https://raw.githubusercontent.com/bubustack/json-filter-engram/main/Engram.yaml |
| map-reduce-adapter-engram | Batch | kubectl apply -f https://raw.githubusercontent.com/bubustack/map-reduce-adapter-engram/main/Engram.yaml |
| materialize-engram | Batch | kubectl apply -f https://raw.githubusercontent.com/bubustack/materialize-engram/main/Engram.yaml |
| mcp-adapter-engram | Both | kubectl apply -f https://raw.githubusercontent.com/bubustack/mcp-adapter-engram/main/Engram.yaml |
| openai-chat-engram | Both | kubectl apply -f https://raw.githubusercontent.com/bubustack/openai-chat-engram/main/Engram.yaml |
| openai-stt-engram | Streaming | kubectl apply -f https://raw.githubusercontent.com/bubustack/openai-stt-engram/main/Engram.yaml |
| openai-tts-engram | Streaming | kubectl apply -f https://raw.githubusercontent.com/bubustack/openai-tts-engram/main/Engram.yaml |
| silero-vad-engram | Streaming | kubectl apply -f https://raw.githubusercontent.com/bubustack/silero-vad-engram/main/Engram.yaml |
| livekit-bridge-engram | Streaming | kubectl apply -f https://raw.githubusercontent.com/bubustack/livekit-bridge-engram/main/Engram.yaml |
| livekit-turn-detector-engram | Streaming | kubectl apply -f https://raw.githubusercontent.com/bubustack/livekit-turn-detector-engram/main/Engram.yaml |
| text-emitter-engram | Batch | kubectl apply -f https://raw.githubusercontent.com/bubustack/text-emitter-engram/main/Engram.yaml |
Impulses
| Component | Trigger | Install |
|---|---|---|
| cron-impulse | Cron schedule | kubectl apply -f https://raw.githubusercontent.com/bubustack/cron-impulse/main/Impulse.yaml |
| github-webhook-impulse | GitHub events | kubectl apply -f https://raw.githubusercontent.com/bubustack/github-webhook-impulse/main/Impulse.yaml |
| kubernetes-impulse | K8s events | kubectl apply -f https://raw.githubusercontent.com/bubustack/kubernetes-impulse/main/Impulse.yaml |
| livekit-webhook-impulse | LiveKit events | kubectl apply -f https://raw.githubusercontent.com/bubustack/livekit-webhook-impulse/main/Impulse.yaml |
Bulk install (all components)
To install every available template at once:
# Engrams
for repo in conversation-memory-engram http-request-engram json-filter-engram \
map-reduce-adapter-engram materialize-engram mcp-adapter-engram \
openai-chat-engram openai-stt-engram openai-tts-engram \
silero-vad-engram livekit-bridge-engram livekit-turn-detector-engram \
text-emitter-engram; do
kubectl apply -f "https://raw.githubusercontent.com/bubustack/$repo/main/Engram.yaml"
done
# Impulses
for repo in cron-impulse github-webhook-impulse kubernetes-impulse \
livekit-webhook-impulse; do
kubectl apply -f "https://raw.githubusercontent.com/bubustack/$repo/main/Impulse.yaml"
done
Configuring secrets
Components that connect to external services (OpenAI, LiveKit, GitHub) require Kubernetes Secrets. Each component's README documents the expected secret keys.
# Example: OpenAI credentials for openai-chat-engram
kubectl create secret generic openai-credentials \
-n my-app \
--from-literal=OPENAI_API_KEY=sk-...
Reference the secret in your Engram instance:
spec:
secretRefs:
- name: openai-credentials
Verifying installations
# List all registered templates
kubectl get engramtemplates
kubectl get impulsetemplates
# List all instances
kubectl get engrams -A
kubectl get impulses -A
# Describe a specific template for schema details
kubectl describe engramtemplate openai-chat
Upgrading components
To upgrade a component to a newer version, re-apply the template from the target release tag:
kubectl apply -f https://raw.githubusercontent.com/bubustack/openai-chat-engram/v0.2.0/Engram.yaml
Existing Engram instances referencing the template will pick up the new image on their next reconciliation cycle.
What's next
bubu-registryand thebubuCLI already cover Git-backed search, install, and publishing workflows. The public catalog breadth, SemVer-aware resolution, and supply-chain metadata remain active roadmap work.- Until then, browse all components on GitHub: Engrams | Impulses
- To build your own, see Building Engrams.
Related docs
- Quickstart — Install BubuStack on a local cluster.
- Component Ecosystem — SDK contracts and catalog overview.
- Building Engrams — Author custom components.
- CRD Cheatsheet — Quick reference for all BubuStack resources.
- Roadmap — What's next for the registry, Bubuilder, and the wider platform.