Skip to main content

LLMOps Stack Assessment

How the minicloud LLMOps stack maps to the reference 8-layer LLMOps framework, which layers are covered (with which reference tools), and the remaining gaps. Backlog: epic #311 (close red-teaming + annotation gaps).

Scorecard β€” 8-layer reference framework​

#LayerWhat we runVerdict
1Orchestration & FrameworksLangGraph (minicloud-agent), CrewAI (crew-agent), LangChain, Flowiseβœ… Covered
2Gateways & RoutingLiteLLM β€” multi-cloud, least-busy routing, fallback, Valkey cache, budgets, tier RBACβœ… Strong (reference tool)
3Observability & TracingLangfuse v3 + ClickHouse + Prometheus + Grafana + residency recording rulesβœ… Strong
4Evaluation & Red-teamingRagas (faithfulness CI gate) + online drift CronJob + red-team gate (adversarial suite, #312)βœ… Covered
5Security & GuardrailsPresidio (PII) + LlamaGuard + detect-secrets + prompt-injection detectionβœ… Strong
6Vector DatabasesQdrant (hybrid BM25 + HNSW + cross-encoder)βœ… Covered (reference tool)
7Data Management & AlignmentMLflow (β‰ˆ W&B) + Langfuse annotation (queues/scores/datasets, #313)βœ… Annotation covered Β· fine-tuning out of scope
8Inference EnginesvLLM (CPU on-cluster) β€” the on-cluster engine (Ollama retired)βœ… Covered Β· CPU-constrained (see Compute Constraints)

8/8 layers covered (LiteLLM Β· Langfuse Β· Ragas Β· LlamaGuard Β· Qdrant Β· vLLM Β· MLflow), with red-teaming (#312) and annotation (#313) closed; fine-tuning delegated to managed cloud.

Gaps​

βœ… Gap 1 β€” Systematic red-teaming (layer 4) β€” CLOSED (#312)​

Runtime guardrails exist (LlamaGuard, injection detection, Presidio) but there is no adversarial test suite in CI β€” attacks are reacted to at runtime, not tested offensively before merge. Fix: add Promptfoo / DeepEval as a CI gate (injections, jailbreaks, PII-leak, prompt-extraction) β€” like the Ragas eval gate. Delivered as a PostSync red-team gate (8 attacks: injection/jailbreak/extraction/PII/toxicity), verified run 8/8 PASS.

βœ… Gap 2 β€” Annotation & data curation (layer 7) β€” CLOSED (#313)​

No human-annotation tool (Argilla / Label Studio). Golden sets (Ragas eval, RAG) and dataset quality depend on hand-built sets with no human-in-the-loop. Fix: delivered via Langfuse (Annotation Queues + Scores + Datasets β€” already deployed) instead of Argilla, which needs ElasticSearch (too heavy for the CPU-only cluster). See the annotation workflow.

βšͺ Gap 3 β€” Fine-tuning / alignment (layer 7) β€” accepted, out of scope​

Unsloth/Axolotl require a GPU β†’ blocked by the infra (see Compute Constraints).

Decision: fine-tuning is left to managed cloud providers (AWS Bedrock / Azure OpenAI), and used only:

  1. if no other option suffices (prompt-engineering + RAG + few-shot exhausted), and
  2. depending on the problem β€” a genuine domain-specialisation need that RAG/prompting cannot meet.

By default the strategy stays prompt-engineering + RAG (the platform's real operating field, GPU-free). Managed fine-tuning is a case-by-case last resort, not a standing objective β€” no on-cluster GPU, no self-hosted Unsloth/Axolotl, no permanent training pipeline.

Summary​

The stack is complete at 6/8 with reference tools; the two real gaps (red-teaming + annotation) are CPU-free and addressable (epic #311); the third (fine-tuning) is correctly out of scope given the no-GPU infra, deferred to managed cloud only when a specific problem demands it.