Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
ad1fd55
feat: add ai-operators
CasLubbers Oct 9, 2025
443d705
feat: add ai-operators
CasLubbers Oct 9, 2025
c659ff0
feat: add ai-operators defaults
CasLubbers Oct 9, 2025
1aff938
feat: move crds
CasLubbers Oct 9, 2025
b5dfad5
Merge branch 'main' into APL-1189
CasLubbers Oct 9, 2025
e40d173
feat: set versions
CasLubbers Oct 9, 2025
bd89f71
feat: add ai-operators to core.yaml
CasLubbers Oct 9, 2025
64fca11
fix: add templates directory
CasLubbers Oct 9, 2025
5092150
fix: update user
CasLubbers Oct 9, 2025
8efd1ff
fix: update gotmpl
CasLubbers Oct 9, 2025
a87491b
fix: update kboperator chart
CasLubbers Oct 9, 2025
b63e355
Merge branch 'main' into APL-1189
svcAPLBot Oct 9, 2025
dcbea59
Merge branch 'main' into APL-1189
svcAPLBot Oct 10, 2025
2441839
Merge branch 'main' into APL-1189
svcAPLBot Oct 13, 2025
85e8128
Merge branch 'main' into APL-1189
svcAPLBot Oct 13, 2025
6fe0b08
Merge branch 'main' into APL-1189
svcAPLBot Oct 14, 2025
b684e5c
feat: update chart
CasLubbers Oct 14, 2025
53c9800
fix: defaults for the operators
CasLubbers Oct 14, 2025
3ba7d34
fix: kb-operator chart
CasLubbers Oct 14, 2025
d5c5faf
fix: kb-operator chart
CasLubbers Oct 14, 2025
f6eaccb
fix: kb-operator chart role
CasLubbers Oct 14, 2025
877dc4c
fix: agent- and kb-operator
CasLubbers Oct 14, 2025
5b50255
fix: agent- and kb-operator
CasLubbers Oct 14, 2025
57688e8
fix: set versions to main
CasLubbers Oct 14, 2025
d3f6ef8
Merge branch 'main' into APL-1189
svcAPLBot Oct 14, 2025
a46d402
Merge branch 'main' into APL-1189
svcAPLBot Oct 14, 2025
1b72fef
Merge branch 'main' into APL-1189
svcAPLBot Oct 15, 2025
0762eea
fix: update CRD
CasLubbers Oct 15, 2025
3f67c30
Merge branch 'main' into APL-1189
svcAPLBot Oct 16, 2025
4056e40
Merge branch 'main' into APL-1189
svcAPLBot Oct 16, 2025
214081a
Merge branch 'main' into APL-1189
svcAPLBot Oct 16, 2025
6960ca2
Merge branch 'main' into APL-1189
svcAPLBot Oct 16, 2025
6335fc4
Merge branch 'main' into APL-1189
svcAPLBot Oct 20, 2025
971da4f
Merge branch 'main' into APL-1189
svcAPLBot Oct 21, 2025
472121c
Merge branch 'main' into APL-1189
svcAPLBot Oct 22, 2025
c5d3fb6
Merge branch 'main' into APL-1189
svcAPLBot Oct 22, 2025
04d526a
fix: update charts
CasLubbers Oct 22, 2025
933a5b8
feat: update kb crd
CasLubbers Oct 24, 2025
578dc83
Merge branch 'main' into APL-1189
svcAPLBot Oct 24, 2025
74c5baa
Merge branch 'main' into APL-1189
svcAPLBot Oct 24, 2025
f2b1de0
Merge branch 'main' into APL-1189
svcAPLBot Oct 24, 2025
2d44ff9
Merge branch 'main' into APL-1189
svcAPLBot Oct 24, 2025
d7e1c55
Merge branch 'main' into APL-1189
svcAPLBot Oct 24, 2025
3888542
Merge branch 'main' into APL-1189
svcAPLBot Oct 27, 2025
e68a6cd
Merge branch 'main' into APL-1189
svcAPLBot Oct 27, 2025
674cbd4
Merge branch 'main' into APL-1189
svcAPLBot Oct 27, 2025
3d34be8
Merge branch 'main' into APL-1189
svcAPLBot Oct 27, 2025
207cf1a
Merge branch 'main' into APL-1189
svcAPLBot Oct 27, 2025
f2517c9
Merge branch 'main' into APL-1189
svcAPLBot Oct 28, 2025
75d238f
Merge branch 'main' into APL-1189
svcAPLBot Oct 28, 2025
c02eb7d
Merge branch 'main' into APL-1189
svcAPLBot Oct 28, 2025
666c7b9
Merge branch 'main' into APL-1189
svcAPLBot Oct 28, 2025
b56085c
Merge branch 'main' into APL-1189
svcAPLBot Oct 29, 2025
4b9e844
Merge branch 'main' into APL-1189
svcAPLBot Oct 29, 2025
c531daa
Merge branch 'main' into APL-1189
svcAPLBot Oct 29, 2025
42e7fea
Merge branch 'main' into APL-1189
svcAPLBot Oct 29, 2025
5fd59ad
Merge branch 'main' into APL-1189
svcAPLBot Oct 29, 2025
911ed95
Merge branch 'main' into APL-1189
svcAPLBot Oct 29, 2025
3957d70
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
1051071
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
f643109
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
2a9695c
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
31268a1
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
b47b044
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
30ee77e
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
b806798
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
9e25e94
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
9a2576a
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
877dd20
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
d5f5e70
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
8813225
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
76c7f33
Merge branch 'main' into APL-1189
svcAPLBot Oct 31, 2025
93e9774
Merge branch 'main' into APL-1189
svcAPLBot Nov 3, 2025
bacc0c4
Merge branch 'main' into APL-1189
svcAPLBot Nov 3, 2025
6468250
Merge branch 'main' into APL-1189
svcAPLBot Nov 3, 2025
025af29
Merge branch 'main' into APL-1189
svcAPLBot Nov 3, 2025
61c6480
Merge branch 'main' into APL-1189
svcAPLBot Nov 4, 2025
809964b
Merge branch 'main' into APL-1189
svcAPLBot Nov 4, 2025
f400158
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
4192dc6
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
cb496cf
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
f910f03
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
00f086e
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
d07bc6d
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
e007d06
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
2583741
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
7973064
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
f070fe4
Merge branch 'main' into APL-1189
svcAPLBot Nov 5, 2025
c20a0c3
Merge branch 'main' into APL-1189
svcAPLBot Nov 6, 2025
0c4ad50
Merge branch 'main' into APL-1189
svcAPLBot Nov 6, 2025
2341f6e
Merge branch 'main' into APL-1189
svcAPLBot Nov 6, 2025
207c9bb
Merge branch 'main' into APL-1189
svcAPLBot Nov 10, 2025
8dbd2ed
Merge branch 'main' into APL-1189
svcAPLBot Nov 11, 2025
f33c72b
Merge branch 'main' into APL-1189
svcAPLBot Nov 11, 2025
1988d80
Merge branch 'main' into APL-1189
svcAPLBot Nov 11, 2025
8ace4c7
Merge branch 'main' into APL-1189
svcAPLBot Nov 12, 2025
d194d0d
Merge branch 'main' into APL-1189
svcAPLBot Nov 12, 2025
e4bfc71
Merge branch 'main' into APL-1189
svcAPLBot Nov 12, 2025
9fab64b
Merge branch 'main' into APL-1189
svcAPLBot Nov 12, 2025
6359782
Merge branch 'main' into APL-1189
svcAPLBot Nov 12, 2025
1858808
Merge branch 'main' into APL-1189
svcAPLBot Nov 12, 2025
4dcdb1c
Merge branch 'main' into APL-1189
svcAPLBot Nov 13, 2025
53bd8c4
Merge branch 'main' into APL-1189
svcAPLBot Nov 13, 2025
2d52038
Merge branch 'main' into APL-1189
svcAPLBot Nov 13, 2025
320242b
Merge branch 'main' into APL-1189
svcAPLBot Nov 13, 2025
4e5baa9
Merge branch 'main' into APL-1189
svcAPLBot Nov 13, 2025
d404b76
Merge branch 'main' into APL-1189
svcAPLBot Nov 14, 2025
fb7da3f
Merge branch 'main' into APL-1189
svcAPLBot Nov 14, 2025
22ae519
Merge branch 'main' into APL-1189
svcAPLBot Nov 14, 2025
449812c
Merge branch 'main' into APL-1189
svcAPLBot Nov 14, 2025
47a4e01
Merge branch 'main' into APL-1189
svcAPLBot Nov 14, 2025
c33f428
Merge branch 'main' into APL-1189
svcAPLBot Nov 14, 2025
f578cea
Merge branch 'main' into APL-1189
svcAPLBot Nov 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions charts/agent-operator/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: v2
name: agent-operator
description: A Helm chart for Agent Operator
type: application
version: 0.1.0
appVersion: "0.1.0"
home: https://github.com/linode/ai-operators
sources:
- https://github.com/linode/ai-operators
186 changes: 186 additions & 0 deletions charts/agent-operator/crds/crd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: akamaiagents.akamai.io
spec:
group: akamai.io
versions:
- name: v1alpha1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
description: AkamaiAgent is a custom resource for managing AI agents with foundation models
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation of an object.'
type: string
kind:
description: 'Kind is a string value representing the REST resource this object represents.'
type: string
metadata:
type: object
properties:
name:
type: string
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
maxLength: 253
spec:
type: object
required:
- foundationModel
- agentInstructions
properties:
foundationModel:
description: The foundation model to use for the agent
type: string
minLength: 1
example: llama
foundationModelEndpoint:
description: The foundation model endpoint to use for the agent
type: string
minLength: 1
example: http://llama-service.default.svc.cluster.local:8080/openai/v1
agentInstructions:
description: Instructions that define the agent's behavior and personality
type: string
minLength: 1
maxLength: 4096
maxTokens:
description: Maximum number of tokens for model responses
type: integer
default: 512
minimum: 1
temperature:
description: Controls randomness in model responses (0.0 = deterministic, 1.0 = creative)
type: number
default: 0.7
minimum: 0.0
maximum: 2.0
topP:
description: Nucleus sampling - limits token selection to top cumulative probability (0.1 = focused, 1.0 = all tokens)
type: number
default: 1.0
minimum: 0.0
maximum: 1.0
routes:
description: Routes to other agents for conditional delegation
type: array
items:
type: object
properties:
agent:
description: Name of the target agent
type: string
condition:
description: Condition for routing to this agent
type: string
apiUrl:
description: API URL of the target agent
type: string
apiKey:
description: API key for authentication
type: string
required:
- agent
- condition
tools:
description: Tools available to the agent
type: array
items:
type: object
properties:
type:
description: Type of tool (knowledgeBase, function, mcpServer, subWorkflow)
type: string
enum:
- knowledgeBase
- function
- mcpServer
- subWorkflow
name:
description: Name of the tool
type: string
description:
description: Description of how the agent can use this tool
type: string
apiUrl:
description: API URL for the tool (for mcpServer, function, subWorkflow)
type: string
apiKey:
description: API key for authentication
type: string
endpoint:
description: Deprecated - use apiUrl instead
type: string
required:
- type
status:
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
phase:
description: Current phase of the agent (Deployed, Failed, Running)
type: string
conditions:
description: Current conditions of the agent
type: array
items:
description: Condition represents the current condition of the agent
type: object
required:
- type
- status
properties:
type:
description: Type of condition
type: string
enum:
- AgentDeployed
- AgentReady
- AgentFailed
status:
description: Status of the condition
type: string
enum:
- "True"
- "False"
- "Unknown"
reason:
description: Reason for the condition status
type: string
message:
description: Human readable message describing the condition
type: string
maxLength: 1024
lastTransitionTime:
description: Last time the condition transitioned from one status to another
type: string
format: date-time
lastUpdateTime:
description: Last time the condition was updated
type: string
format: date-time
additionalPrinterColumns:
- name: Model
type: string
description: Foundation model
jsonPath: .spec.foundationModel
- name: Status
type: string
description: Agent deployment status
jsonPath: .status.conditions[?(@.type=="AgentDeployed")].status
- name: Created
type: string
format: date-time
jsonPath: .metadata.creationTimestamp
scope: Namespaced
names:
plural: akamaiagents
singular: akamaiagent
kind: AkamaiAgent
shortNames:
- aag
categories:
- apl
67 changes: 67 additions & 0 deletions charts/agent-operator/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "agent-operator.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Create a default fully qualified app name.
*/}}
{{- define "agent-operator.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "agent-operator.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Common labels
*/}}
{{- define "agent-operator.labels" -}}
helm.sh/chart: {{ include "agent-operator.chart" . }}
{{ include "agent-operator.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Selector labels
*/}}
{{- define "agent-operator.selectorLabels" -}}
app.kubernetes.io/name: {{ include "agent-operator.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

{{/*
Create the name of the service account to use
*/}}
{{- define "agent-operator.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "agent-operator.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

{{/*
Parse watch namespaces list - returns comma-separated list (required for agent-operator)
*/}}
{{- define "agent-operator.watchNamespacesList" -}}
{{- .Values.watchNamespaces }}
{{- end }}
44 changes: 44 additions & 0 deletions charts/agent-operator/templates/clusterrole.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ include "agent-operator.fullname" . }}
labels:
{{- include "agent-operator.labels" . | nindent 4 }}
rules:
# Framework: Kopf requires CRD access
- apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"]
verbs: ["list", "watch"]

# Framework: Posting events about handler progress/errors
- apiGroups: [""]
resources: ["events"]
verbs: ["create", "patch"]

# AkamaiAgent custom resources
- apiGroups: ["akamai.io"]
resources: ["akamaiagents"]
verbs: ["get", "list", "watch", "patch"]
- apiGroups: ["akamai.io"]
resources: ["akamaiagents/status"]
verbs: ["get", "update", "patch"]
- apiGroups: ["akamai.io"]
resources: ["akamaiagents/finalizers"]
verbs: ["update"]

# AkamaiKnowledgeBase custom resources
- apiGroups: ["akamai.io"]
resources: ["akamaiknowledgebases"]
verbs: ["get", "list", "watch"]

# Deployments access
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list", "watch"]

{{- if eq (.Values.provider | default "") "apl" }}
- apiGroups: ["argoproj.io"]
resources: ["applications"]
verbs: ["get", "list", "create", "update", "patch", "delete"]
{{- end }}
15 changes: 15 additions & 0 deletions charts/agent-operator/templates/clusterrolebinding.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ include "agent-operator.fullname" . }}
labels:
{{- include "agent-operator.labels" . | nindent 4 }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ include "agent-operator.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ include "agent-operator.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
Loading
Loading