Open Source LLMOps tool for AI teams
KitchenAI is a control plane for AI implementations — designed to bridge the gap between application developers and AI teams. Our platform simplifies AI integration with a loosely coupled, modular architecture that delivers production-grade reliability while letting your teams focus on what they do best.
KitchenAI’s three-layer architecture makes it easy to manage your AI workflows:
Application Layer:
Your business applications call a simple, unified API (just like using OpenAI’s Chat Completions).
NATS Messaging Layer:
This is our high-performance backbone for routing messages and discovering services dynamically.
Bento Boxes Layer:
Modular AI implementations where your AI team builds the complex logic (be it LLM logic, RAG, agents, or custom workflows).
Your code remains clean and simple:
# Simple integration using OpenAI's Chat Completions
response = await openai_client.chat.completions.create(
model="@llama-index-agents/query", #your bento box client id
messages=[{"role": "user", "content": data.query}]
)
Focus on building powerful AI code:
@kitchen.query.handler("query")
async def query_handler(data: WhiskQuerySchema) -> WhiskQueryBaseResponseSchema:
# Advanced RAG implementation with best practices built-in
index = VectorStoreIndex.from_vector_store(vector_store)
query_engine = index.as_query_engine(
chat_mode="best",
filters=filters,
llm=llm,
verbose=True
)
KitchenAI is designed to be self-hosted. You can deploy the control plane and the bento boxes separately.
git clone https://github.com/epuerta9/kitchenai.git
docker compose up -d
you will need to login to the minio container and create a bucket called kitchenai
.
endpoint: http://localhost:9001
username: minioadmin
password: minioadmin
bucket name: kitchenai
available environment variables
OPENAI_API_KEY: ${OPENAI_API_KEY}
DEBUG: "False"
KITCHENAI_LOCAL: "False"
KITCHENAI_LICENSE: "oss"
ALLOWED_HOSTS: "*"
CSRF_TRUSTED_ORIGINS: ""
CACHE_LOCATION: ""
KITCHENAI_REDIS_CACHE: "False"
REDIS_LOCATION: "redis://127.0.0.1:6379/1"
DATABASE_URL: "postgres://postgres:postgres@postgres:5432/postgres"
CONN_MAX_AGE: "60"
DEFAULT_FROM_EMAIL: "[email protected]"
SECRET_KEY: "django-insecure-ef6nIh7LcUjPtixFdz0_aXyUwlKqvBdJEcycRR6RvRY"
MEDIA_ROOT: "./media"
SECURE_HSTS_SECONDS: "120"
SECURE_HSTS_INCLUDE_SUBDOMAINS: "True"
SECURE_HSTS_PRELOAD: "True"
SESSION_COOKIE_SECURE: "True"
SERVER_EMAIL: "[email protected]"
AWS_ACCESS_KEY_ID: "minioadmin"
AWS_SECRET_ACCESS_KEY: "minioadmin"
AWS_STORAGE_BUCKET_NAME: "kitchenai"
AWS_S3_ENDPOINT_URL: "http://minio:9000"
AWS_DEFAULT_REGION: "us-east-1"
AWS_S3_ADDRESSING_STYLE: "path"
AWS_S3_USE_SSL: "True"
AWS_S3_VERIFY: "True"
USE_S3: "False"
DJANGO_ALLOW_REGISTRATION: "True"
RESEND_API_KEY: ""
ADMIN_URL: "kitchenai-admin/"
KITCHENAI_LLM_PROVIDER: "openai"
KITCHENAI_LLM_MODEL: "gpt-4o"
KITCHENAI_AUTH: "False"
KITCHENAI_JWT_SECRET: ""
WHISK_USER: "kitchenai"
WHISK_PASSWORD: "kitchenai_admin"
NATS_URL: "nats://nats:4222"
KITCHENAI_THEME: "winter"
MEDIA_BASE_URL: "http://localhost:8080"
KitchenAI is still in beta—we’re excited to have early adopters help shape the platform.
KitchenAI is released under the Apache 2.0 License.
Built with ❤️ by the KitchenAI Team