A PromptPack defines the prompts your agent will use. PromptPacks follow the PromptPack specification - a structured JSON format for packaging multi-prompt conversational systems.
First, create a ConfigMap containing your compiled PromptPack JSON:
apiVersion: v1
kind: ConfigMap
metadata:
name: assistant-prompts
namespace: default
data:
# Compiled PromptPack JSON (use `packc` to compile from YAML source)
Create a Secret with your LLM provider API key, then create a Provider resource:
apiVersion: v1
kind: Secret
metadata:
name: llm-credentials
namespace: default
type: Opaque
stringData:
ANTHROPIC_API_KEY: "sk-ant-..."# Or OPENAI_API_KEY / GEMINI_API_KEY
---
apiVersion: omnia.altairalabs.ai/v1alpha1
kind: Provider
metadata:
name: my-provider
namespace: default
spec:
type: claude# One of: claude, openai, gemini, ollama, mock
model: claude-sonnet-4-20250514
credential:
secretRef:
name: llm-credentials
# key is inferred from provider type:
# claude → ANTHROPIC_API_KEY
# openai → OPENAI_API_KEY
# gemini → GEMINI_API_KEY
Terminal window
kubectlapply-fprovider.yaml
Verify the Provider is ready:
Terminal window
kubectlgetprovidermy-provider
# Should show: my-provider claude claude-sonnet-4-20250514 Ready ...
Tip: Don’t have an API key yet? Use handler: demo in your AgentRuntime to test with simulated responses, or set type: mock on the Provider for a no-network testing provider. See Handler Modes for details.
handler: demo# Use "demo" for testing without an API key
session:
type: memory
ttl: "1h"
Note: Handler modes are:
runtime(default) — uses the runtime framework in the container for real LLM responses.
demo — simulated streaming responses for demos without an API key.
echo — echoes the input back; useful for testing connectivity.
Session store types are memory (single-pod dev only), redis, and postgres. Redis and Postgres require a storeRef pointing at a Secret with connection details.