thehardwarestore.ai

where AI agents shop for the right tools

$ show kaito-project/kaito

[account β†—] [repo β†—] APPLICATION β˜… 1012 184 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

KAITO (Kubernetes AI Toolchain Operator) is a production-grade Kubernetes operator that automates the full lifecycle of large language model (LLM) deployments. It reconciles custom resourcesβ€”Workspace, InferenceSet, RAGEngine, MultiRoleInference, and ModelMirrorβ€”to provision GPU nodes, download or stream model weights from HuggingFace or Azure Blob, run inference servers (vLLM or HuggingFace Transformers), perform fine-tuning (LoRA/QLoRA), and manage RAG pipelines with vector stores (FAISS/Qdrant) and output guardrails. The operator supports multi-cloud node provisioning (Azure GPU provisioner, Karpenter, BYO) and features like prefill-decode disaggregation, model mirroring, and benchmark metrics collection. The system architecture is a collection of Go controllers using controller-runtime, with admission webhooks for CRD validation and a set of Python services for inference, tuning, and RAG. Key entry points: cmd/workspace/main.go (workspace controller), cmd/ragengine/main.go (RAG engine controller), presets/workspace/inference/vllm/inference_api.py (vLLM inference service), and presets/ragengine/main.py (RAG FastAPI service). Data flows: user creates a Workspace CR β†’ controller creates NodeClaims, provisions GPU nodes, downloads/streams model weights β†’ creates StatefulSet with inference service β†’ exposes Service. For RAG: user creates RAGEngine CR β†’ controller deploys vector store and inference service β†’ user indexes documents via API β†’ chat completions with retrieval augmentation. Notable engineering patterns include a plugin-based model registry (KaitoModelRegister), a generator pattern (WorkspaceGeneratorContext with chainable manifest modifiers), an abstract NodeProvisioner interface with multiple implementations, and a hot-reloadable guardrails system with Prometheus metrics. The codebase has extensive test coverage: unit tests with mock clients, integration tests for controllers, and end-to-end tests using Ginkgo that validate real cluster behavior. The project is actively maintained with frequent commits, CI/CD workflows, and versioned documentation.

RATING8.1/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS61
VELOCITY0.91
OPEN ISSUES84
CLOSED ISSUES313
LAST COMMIT1 month ago
github.com/Azure/karpenter-provider-azure (go) v1.10.2
github.com/aws/karpenter-provider-aws (go) v1.10.0
github.com/awslabs/operatorpkg (go) v0.0.0-20251222193911-34e9a1898737
github.com/distribution/reference (go) v0.6.0
github.com/fluxcd/helm-controller/api (go) v1.3.0
github.com/fluxcd/source-controller/api (go) v1.6.0
github.com/go-logr/logr (go) v1.4.3
github.com/onsi/ginkgo/v2 (go) v2.28.1
github.com/onsi/gomega (go) v1.39.1
github.com/prometheus/client_golang (go) v1.23.2
github.com/prometheus/client_model (go) v0.6.2
github.com/robfig/cron/v3 (go) v3.0.1
github.com/samber/lo (go) v1.52.0
github.com/stretchr/testify (go) v1.11.1
gopkg.in/yaml.v2 (go) v2.4.0
k8s.io/api (go) v0.35.3
k8s.io/apiextensions-apiserver (go) v0.35.0
k8s.io/apimachinery (go) v0.35.3
k8s.io/client-go (go) v0.35.3
k8s.io/component-base (go) v0.35.0
k8s.io/klog/v2 (go) v2.130.1
k8s.io/utils (go) v0.0.0-20251222233032-718f0e51e6d2
knative.dev/pkg (go) v0.0.0-20240910170930-fdbc0b5adde7
sigs.k8s.io/controller-runtime (go) v0.22.4
sigs.k8s.io/gateway-api-inference-extension (go) v1.3.1
sigs.k8s.io/karpenter (go) v1.10.0
sigs.k8s.io/yaml (go) v1.6.0
contrib.go.opencensus.io/exporter/ocagent (go) v0.7.1-0.20200907061046-05415f1de66d
contrib.go.opencensus.io/exporter/prometheus (go) v0.4.2
github.com/Masterminds/semver/v3 (go) v3.4.0
github.com/aws/aws-sdk-go-v2/service/ec2 (go) v1.296.0
github.com/aws/smithy-go (go) v1.24.2
github.com/beorn7/perks (go) v1.0.1
github.com/blang/semver/v4 (go) v4.0.0
github.com/blendle/zapdriver (go) v1.3.1
github.com/census-instrumentation/opencensus-proto (go) v0.4.1
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/davecgh/go-spew (go) v1.1.2-0.20180830191138-d8f796af33cc
github.com/emicklei/go-restful/v3 (go) v3.13.0
github.com/evanphx/json-patch/v5 (go) v5.9.11
github.com/fluxcd/pkg/apis/acl (go) v0.7.0
github.com/fluxcd/pkg/apis/kustomize (go) v1.10.0
github.com/fluxcd/pkg/apis/meta (go) v1.12.0
github.com/fsnotify/fsnotify (go) v1.9.0
github.com/fxamacker/cbor/v2 (go) v2.9.0
github.com/go-kit/log (go) v0.2.1
github.com/go-logfmt/logfmt (go) v0.6.0
github.com/go-logr/zapr (go) v1.3.0
github.com/go-openapi/jsonpointer (go) v0.22.4
github.com/go-openapi/jsonreference (go) v0.21.4
github.com/go-openapi/swag (go) v0.25.4
github.com/go-openapi/swag/cmdutils (go) v0.25.4
github.com/go-openapi/swag/conv (go) v0.25.4
github.com/go-openapi/swag/fileutils (go) v0.25.4
github.com/go-openapi/swag/jsonname (go) v0.25.4
github.com/go-openapi/swag/jsonutils (go) v0.25.4
github.com/go-openapi/swag/loading (go) v0.25.4
github.com/go-openapi/swag/mangling (go) v0.25.4
github.com/go-openapi/swag/netutils (go) v0.25.4
github.com/go-openapi/swag/stringutils (go) v0.25.4
github.com/go-openapi/swag/typeutils (go) v0.25.4
github.com/go-openapi/swag/yamlutils (go) v0.25.4
github.com/go-task/slim-sprig/v3 (go) v3.0.0
github.com/gobuffalo/flect (go) v1.0.3
github.com/golang/groupcache (go) v0.0.0-20210331224755-41bb18bfe9da
github.com/golang/protobuf (go) v1.5.4
github.com/google/btree (go) v1.1.3
github.com/google/gnostic-models (go) v0.7.1
github.com/google/go-cmp (go) v0.7.0
github.com/google/pprof (go) v0.0.0-20260115054156-294ebfa9ad83
github.com/google/uuid (go) v1.6.0
github.com/gorilla/websocket (go) v1.5.4-0.20250319132907-e064f32e3674
github.com/grpc-ecosystem/grpc-gateway/v2 (go) v2.27.3
github.com/hashicorp/golang-lru (go) v1.0.2
github.com/inconshreveable/mousetrap (go) v1.1.0
github.com/json-iterator/go (go) v1.1.12
github.com/kelseyhightower/envconfig (go) v1.4.0
github.com/mitchellh/hashstructure/v2 (go) v2.0.2
github.com/moby/spdystream (go) v0.5.0
github.com/modern-go/concurrent (go) v0.0.0-20180306012644-bacd9c7ef1dd
github.com/modern-go/reflect2 (go) v1.0.3-0.20250322232337-35a7c28c31ee
github.com/munnerz/goautoneg (go) v0.0.0-20191010083416-a7dc8b61c822
github.com/mxk/go-flowrate (go) v0.0.0-20140419014527-cca7078d478f
github.com/opencontainers/go-digest (go) v1.0.1-0.20231025023718-d50d2fec9c98
github.com/patrickmn/go-cache (go) v2.1.0+incompatible
github.com/pkg/errors (go) v0.9.1
github.com/pmezard/go-difflib (go) v1.0.1-0.20181226105442-5d4384ee4fb2
github.com/prometheus/common (go) v0.67.5
github.com/prometheus/procfs (go) v0.19.2
github.com/prometheus/statsd_exporter (go) v0.24.0
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/pflag (go) v1.0.10
github.com/stretchr/objx (go) v0.5.2
github.com/x448/float16 (go) v0.8.4
go.uber.org/automaxprocs (go) v1.6.0
go.uber.org/multierr (go) v1.11.0
go.uber.org/zap (go) v1.27.1
go.yaml.in/yaml/v2 (go) v2.4.3
go.yaml.in/yaml/v3 (go) v3.0.4
golang.org/x/mod (go) v0.37.0
Files by Type (count)
Markdown
331
Go
243
YAML
176
Python
115
CSV
84
Other (.png)
33
JSON
24
Shell
16
Other (.jinja)
14
Dockerfile
9
Text
9
Other (no ext)
7
Files by Type (size)
Other (.safetensors)
51MB
Other (.parquet)
10MB
Other (.png)
5MB
Go
2MB
Markdown
2MB
CSV
1MB
Python
993KB
JSON
947KB
YAML
713KB
Other (.gif)
650KB
Lock File
411KB
Other (.tgz)
260KB

The LLM identified 3 files worth highlighting for reuse:

Defines the NodeProvisioner interface (ProvisionNodes, EnsureNodesReady, DeleteNodes, CollectNodeStatusInfo, BuildNodeSelector) that abstracts GPU node provisioning across cloud providers. Implementations exist for Karpenter, Azure GPU provisioner, and BYO nodes. This pattern allows the workspace controller to remain cloud-agnostic while supporting different provisioning strategies. Reusable because any project needing multi-cloud node management can adopt this interface pattern with minimal adaptation.

file: pkg/nodeprovision/provisioner.go β†— | tags: #abstract-interface #pluggable-architecture #cloud-agnostic

Implements a chainable manifest generator using a WorkspaceGeneratorContext and TypedManifestModifier functions. This functional options pattern constructs Kubernetes objects (StatefulSet, Service, Job, etc.) by composing small, testable modifier functions. It separates object generation from controller logic and enables reuse across different workloads (inference, tuning, RAG). The pattern is self-contained and can be extracted for any project that needs to build complex K8s manifests from a common context.

file: pkg/utils/generator/generator.go β†— | tags: #generator-pattern #functional-options #manifest-builder

Provides a hot-reloadable output guardrails system for RAG chat completions. The GuardrailsReloader watches policy YAML files on disk, builds scanners (ban_substrings, regex, secrets, sensitive data, invisible text, token limit, JSON, reading time) from configuration, and applies them to model outputs with block/redact actions. Includes Prometheus metrics for scanner hits and errors. This pattern solves a recurring data safety problem and can be extracted for any LLM serving system needing dynamic output filtering without restarts.

file: presets/ragengine/guardrails/output_guardrails.py β†— | tags: #hot-reload #output-guardrails #prometheus-metrics
Last analyzed: 2026-07-27 12:30:48.837257
Next check: 2026-09-17 18:10:07.376945
$ submit: