Skip to content

CLI Command Reference ​

Complete reference for all KAOS CLI commands.

Command Structure ​

kaos <subcommand> <action> [OPTIONS]

Subcommands:

  • system - Operator and cluster management
  • mcp - MCPServer management
  • agent - Agent management
  • modelapi - ModelAPI management
  • memory - MemoryStore recall and erasure
  • memorystore - MemoryStore creation
  • samples - Example deployment management
  • ui - Web UI

kaos system ​

Operator installation and cluster management.

kaos system install ​

Install the KAOS operator.

bash
kaos system install [OPTIONS]
OptionShortDefaultDescription
--namespace-nkaos-systemInstallation namespace
--release-namekaosHelm release name
--versionlatestChart version
--setHelm values
--waitfalseWait for ready
--monitoring-enabledInstall monitoring stack (signoz or jaeger)
--gateway-enabledfalseInstall Gateway API (Envoy Gateway) and configure routing
--metallb-enabledfalseInstall MetalLB for LoadBalancer support (KIND/bare-metal)
--chart-pathPath to local Helm chart directory (for development)

kaos system uninstall ​

Uninstall the KAOS operator.

bash
kaos system uninstall [OPTIONS]
OptionDefaultDescription
--namespacekaos-systemNamespace to uninstall from
--release-namekaosHelm release name
--monitoring-enabledAlso uninstall monitoring (signoz or jaeger)
--gateway-enabledfalseAlso uninstall Gateway API (Envoy Gateway)
--metallb-enabledfalseAlso uninstall MetalLB

kaos system status ​

Show cluster status.

bash
kaos system status

Shows operator health, CRDs, resources, and gateway status.

kaos system runtimes ​

List registered MCP runtimes.

bash
kaos system runtimes [OPTIONS]
OptionShortDefaultDescription
--namespace-nkaos-systemOperator namespace

kaos system create-rbac ​

Generate RBAC YAML for MCPServer ServiceAccounts.

bash
kaos system create-rbac [OPTIONS]
OptionShortDescription
--name-nServiceAccount name (required)
--namespace-nsNamespace(s) to access
--read-onlyRead-only permissions
--cluster-wideClusterRole instead of Role
--output-oOutput file (default: stdout)

Example:

bash
kaos system create-rbac --name k8s-mcp-sa --namespace my-ns > rbac.yaml
kubectl apply -f rbac.yaml

kaos mcp ​

MCPServer lifecycle management.

kaos mcp init ​

Scaffold a new FastMCP server project.

bash
kaos mcp init [DIRECTORY] [OPTIONS]
OptionDescription
--forceOverwrite existing files

Creates: server.py, requirements.txt, README.md

kaos mcp build ​

Build a Docker image from FastMCP server.

bash
kaos mcp build [OPTIONS]
OptionShortDefaultDescription
--name-n(required)Image name
--tag-tlatestImage tag
--dir-d.Source directory
--entry-eserver.pyEntry point
--kind-loadLoad to KIND cluster
--create-dockerfileGenerate Dockerfile
--platformDocker platform

Example:

bash
kaos mcp build --name my-mcp --tag v1 --kind-load

kaos mcp deploy ​

Deploy an MCPServer.

bash
kaos mcp deploy [NAME] [OPTIONS]
OptionShortDescription
NAMEMCPServer name (auto-inferred from pyproject.toml)
--image-iCustom image
--runtime-rRegistered runtime
--namespace-nTarget namespace
--params-pRuntime parameters
--saServiceAccount name

Examples:

bash
# From custom image
kaos mcp deploy my-mcp --image my-image:v1

# From registered runtime
kaos mcp deploy slack-mcp --runtime slack

# Auto-infer from pyproject.toml
kaos mcp deploy

kaos mcp list ​

List MCPServers.

bash
kaos mcp list [OPTIONS]
OptionShortDefaultDescription
--namespace-nallFilter by namespace
--output-owideOutput format

kaos mcp get ​

Get MCPServer details.

bash
kaos mcp get NAME [OPTIONS]

kaos mcp logs ​

View MCPServer logs.

bash
kaos mcp logs NAME [OPTIONS]
OptionShortDescription
--follow-fStream logs
--tailNumber of lines

kaos mcp invoke ​

Invoke an MCP tool.

bash
kaos mcp invoke NAME [OPTIONS]
OptionShortDescription
--tool-tTool name (required)
--args-aJSON arguments
--port-pLocal port (default: 9000)

Example:

bash
kaos mcp invoke echo-mcp --tool echo --args '{"message": "hello"}'

kaos mcp delete ​

Delete an MCPServer.

bash
kaos mcp delete NAME [OPTIONS]

kaos agent ​

Agent lifecycle management.

kaos agent deploy ​

Deploy an Agent.

bash
kaos agent deploy NAME --modelapi MODELAPI --model MODEL [OPTIONS]
OptionShortDescription
NAMEAgent name (required)
--modelapi-aModelAPI reference (required)
--model-mModel name (required)
--namespace-nTarget namespace
--instructions-iAgent instructions
--mcpMCP server references (multiple)
--sub-agentSub-agent references (multiple)
--memory-storeMemoryStore reference; enables remote memory
--memory-default-read-scopeDefault read scope (requires --memory-store)
--memory-read-scopesComma-separated allowed read scopes (requires --memory-store)
--memory-toolsMemory tools to expose: read, write, or all (requires --memory-store)

Examples:

bash
# Basic agent
kaos agent deploy my-agent --modelapi my-api --model gpt-4o

# With instructions and MCP tools
kaos agent deploy my-agent -a my-api -m gpt-4o -i "You are a helpful assistant" --mcp calculator

# With scoped remote memory
kaos agent deploy my-agent -a my-api -m gpt-4o --memory-store support-memory --memory-default-read-scope user --memory-read-scopes session,agent,user,group --memory-tools read

kaos agent list ​

List Agents.

bash
kaos agent list [OPTIONS]

kaos agent get ​

Get Agent details.

bash
kaos agent get NAME [OPTIONS]

kaos agent logs ​

View Agent logs.

bash
kaos agent logs NAME [OPTIONS]

kaos agent invoke ​

Send a message to an Agent.

bash
kaos agent invoke NAME [OPTIONS]
OptionShortDescription
--message-mMessage (required)
--namespace-nNamespace of the Agent
--port-pLocal port (default: 9001)
--stream-sStream response
--sessionConversation session ID, sent as X-Session-ID

Example:

bash
kaos agent invoke my-agent -n my-namespace --session ticket-42 --message "Hello, how are you?"

User identity is not selectable with an invoke flag. On OIDC-enabled clusters it comes from the verified bearer token presented through the gateway.

kaos agent delete ​

Delete an Agent.

bash
kaos agent delete NAME [OPTIONS]

kaos agent tools ​

Show the tool names and JSON schemas an Agent presents to its model. This includes the entitled level enum on search_memory.

bash
kaos agent tools NAME [-n NAMESPACE] [--json]

kaos agent a2a send ​

Send a message to an Agent via A2A JSON-RPC protocol.

bash
kaos agent a2a send NAME --message "Hello" [OPTIONS]
OptionShortDescription
NAMEAgent name (required)
--message-mMessage to send (required)
--asyncExecute as async task (returns task ID for polling)
--session-id-sSession/context ID
--namespace-nNamespace of the Agent
--port-pLocal port for port-forwarding (default: 9004)
--jsonOutput raw JSON response
bash
# Sync message (waits for response)
kaos agent a2a send my-agent --message "Check status"

# Async task (returns task ID immediately)
kaos agent a2a send my-agent --message "Analyze logs" --async --json

kaos agent a2a get ​

Get task status from an Agent via A2A GetTask.

bash
kaos agent a2a get NAME --task-id TASK_ID [OPTIONS]
OptionShortDescription
NAMEAgent name (required)
--task-id-tTask ID to retrieve (required)
--namespace-nNamespace of the Agent
--port-pLocal port for port-forwarding (default: 9004)
--jsonOutput raw JSON response

kaos agent a2a cancel ​

Cancel a task on an Agent via A2A CancelTask.

bash
kaos agent a2a cancel NAME --task-id TASK_ID [OPTIONS]
OptionShortDescription
NAMEAgent name (required)
--task-id-tTask ID to cancel (required)
--namespace-nNamespace of the Agent
--port-pLocal port for port-forwarding (default: 9004)
--jsonOutput raw JSON response

kaos memory ​

Inspect or erase a central MemoryStore through a temporary Kubernetes port-forward. --store can be omitted when the namespace contains exactly one MemoryStore.

kaos memory recall ​

Without a query the command lists the selected tiers. Add --long-term-query/-q for semantic long-term recall. --include is repeatable and comma-separated, defaults to all tiers, and accepts a|all|s|short-term|m|medium-term|l|long-term.

bash
kaos memory recall --store support-memory --scope session --session SESSION_ID -q TEXT [OPTIONS]
kaos memory recall --store support-memory --scope store --include l [OPTIONS]
OptionShortDescription
--storeMemoryStore name; optional when exactly one exists
--scopesession, agent, user, or store (required)
--sessionSession ID; required only for session scope
--agentAgent name; required only for agent scope
--userUser principal; required only for user scope. A username with a cached kaos auth login session resolves to its verified subject; anything else passes through verbatim
--long-term-query-qSemantic query; without it the command uses the list endpoint
--includeSelected tiers; repeat or comma-separate aliases. Defaults to all
--top-kMaximum semantic results (default: 10)
--namespace-nKubernetes namespace
--jsonOutput JSON

Agent names are expanded to the stable kaos://agent/<namespace>/<name> identity before the service call.

kaos memory forget ​

Erase every long-term record and attributed conversational session at a scope. The command prints the resolved scope and prompts for confirmation unless --yes is passed.

bash
kaos memory forget --store support-memory --scope user --user alice [-n NAMESPACE]
kaos memory forget --store support-memory --scope store --yes

kaos memorystore ​

MemoryStore creation commands.

kaos memorystore create ​

Create a local, Chroma-backed MemoryStore with a 1Gi persistent volume.

bash
kaos memorystore create NAME --modelapi MODELAPI [OPTIONS]
OptionShortDefaultDescription
NAMEMemoryStore name (required)
--modelapiModelAPI reference used by both models (required)
--summarization-modelgpt-4o-miniSummarization model
--embedding-modeltext-embedding-3-smallEmbedding model
--short-term-token-budgetToken budget, rendered as KAOS_MEMORY_TOKEN_BUDGET on this CRD version
--medium-term-enabledfalseEnable rolling summaries through KAOS_MEMORY_ROLLING_SUMMARY
--max-read-scopeStore read-scope ceiling: session, agent, or user
--failure-modeDefault failure mode: soft or strict
--namespace-ncurrentTarget namespace
--dry-runfalsePrint YAML instead of creating

Example:

bash
kaos memorystore create support-memory --modelapi support-modelapi --short-term-token-budget 64 --medium-term-enabled -n support-demo

kaos modelapi ​

ModelAPI lifecycle management.

kaos modelapi deploy ​

Deploy a ModelAPI.

bash
kaos modelapi deploy NAME [OPTIONS]
OptionShortDescription
NAMEModelAPI name (required)
--mode-mMode: Proxy (LiteLLM) or Hosted (Ollama). Default: Proxy
--modelModel name (required for Hosted mode)
--namespace-nTarget namespace

Examples:

bash
# Deploy Proxy mode (LiteLLM)
kaos modelapi deploy my-api

# Deploy Hosted mode (Ollama)
kaos modelapi deploy my-api --mode Hosted --model smollm2:135m

kaos modelapi list ​

List ModelAPIs.

bash
kaos modelapi list [OPTIONS]

kaos modelapi get ​

Get ModelAPI details.

bash
kaos modelapi get NAME [OPTIONS]

kaos modelapi logs ​

View ModelAPI logs.

bash
kaos modelapi logs NAME [OPTIONS]

kaos modelapi invoke ​

Send a chat completion request.

bash
kaos modelapi invoke NAME [OPTIONS]
OptionShortDescription
--message-mMessage (required)
--modelModel name (required)
--port-pLocal port (default: 9002)

Example:

bash
kaos modelapi invoke my-api --model gpt-4 --message "Hello"

kaos modelapi delete ​

Delete a ModelAPI.

bash
kaos modelapi delete NAME [OPTIONS]

kaos ui ​

Start the KAOS web UI.

bash
kaos ui [OPTIONS]
OptionDefaultDescription
--k8s-urlautoKubernetes API URL
--expose-port8010Local proxy port
--no-browserfalseDon't open browser
--monitoring-enabledEnable monitoring UI (signoz or jaeger)
--system-namespacekaos-systemNamespace where KAOS system and monitoring are installed

kaos samples ​

Deploy and manage example configurations from operator/config/samples/.

Samples install into the current kubectl context namespace by default. Use -n to specify a target namespace. Namespace resources are never created or deleted — the namespace must already exist.

kaos samples list ​

List available sample configurations.

bash
kaos samples list

kaos samples deploy ​

Deploy a sample configuration with optional overrides.

bash
kaos samples deploy NAME [OPTIONS]
OptionShortDescription
--namespace-nTarget namespace (default: current kubectl context)
--waitWait for deployments to be available
--wait-timeoutTimeout in seconds (default: 120)
--dry-runPrint YAML instead of deploying
--modelapiUse existing ModelAPI instead of sample's built-in one
--modeOverride ModelAPI mode (Proxy/Hosted)
--model-mOverride model name
--api-secretOverride API secret (secretname:key)
--providerOverride LiteLLM provider (e.g., openai, nebius)

When --modelapi is used, the sample's ModelAPI resource is skipped (not deployed). Agents reference the specified existing ModelAPI instead.

Examples:

bash
kaos samples deploy 1-simple-echo-agent -n my-ns
kaos samples deploy 3-hierarchical-agents --namespace my-ns
kaos samples deploy 1-simple-echo-agent --model "llama3:8b" --dry-run
kaos samples deploy 1-simple-echo-agent --api-secret nebius-secrets:api-key
kaos samples deploy 1-simple-echo-agent -n my-ns --modelapi my-existing-api
kaos samples deploy 7-memory-agent -n support-demo --model gpt-4o-mini

kaos samples delete ​

Delete a sample's resources. Does not delete namespaces.

bash
kaos samples delete NAME [OPTIONS]
OptionShortDescription
--namespace-nNamespace override (must match namespace used during deploy)
--modelapiSkip deleting ModelAPI (use when deployed with --modelapi)

Environment Variables ​

VariableDescription
KUBECONFIGPath to kubeconfig
KUBERNETES_SERVICE_HOSTIn-cluster API host

Exit Codes ​

CodeMeaning
0Success
1Error

Common Workflows ​

Create and deploy custom MCP server ​

bash
# 1. Scaffold project
kaos mcp init my-tools
cd my-tools

# 2. Edit server.py with your tools

# 3. Build and load to KIND
kaos mcp build --name my-tools --tag v1 --kind-load

# 4. Deploy
kaos mcp deploy my-tools --image my-tools:v1

Deploy Kubernetes MCP with RBAC ​

bash
# 1. Generate RBAC
kaos system create-rbac --name k8s-sa --namespace default > rbac.yaml
kubectl apply -f rbac.yaml

# 2. Deploy
kaos mcp deploy k8s-tools --runtime kubernetes --sa k8s-sa

Released under the Apache 2.0 License.