Skip to content

Commit 785fa5d

Browse files
authored
Merge branch 'main' into feat/substrate-python-byo
2 parents b682d6f + 79cab39 commit 785fa5d

17 files changed

Lines changed: 274 additions & 160 deletions

File tree

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ It's difficult to cover all the possible scenarios that you might encounter when
123123

124124
DCO, short for Developer Certificate of Origin, is a per-commit signoff that you, the contributor, agree to the terms published at [https://developercertificate.org](https://developercertificate.org) for that particular commit. This will appear as a `Signed-off-by: Your Name <your.email>` trailer at the end of each commit message. The kagent project requires that every commit contains this DCO signoff.
125125

126-
The easiest way to make sure each of your commits contains the signoff is to run make `init-git-hooks` in the repo to which you are contributing. This will configure your repo to use a Git hook which will automatically add the required trailer to all of your commit messages.
126+
The easiest way to make sure each of your commits contains the signoff is to run `make init-git-hooks` in the repo to which you are contributing. This will configure your repo to use a Git hook which will automatically add the required trailer to all of your commit messages.
127127

128128
```shell
129129
make init-git-hooks
@@ -229,7 +229,7 @@ All code must be reviewed by at least one [maintainer](https://github.com/kagent
229229

230230
## Documentation
231231

232-
The kagent documentation lives at [kagent.dev/docs](https://kagent.dev/docs/kagent). The code lives at [kagent website](https://github.com/kagent-dev/website).
232+
The kagent documentation lives at [kagent.dev/docs/kagent](https://kagent.dev/docs/kagent). The code lives at [kagent website](https://github.com/kagent-dev/website).
233233

234234
## Get in touch
235235

DEVELOPMENT.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Development
22

3-
To understand how to develop for kagent, It's important to understand the architecture of the project. Please refer to the [README.md](README.md#architecture) file for an overview of the project.
3+
To understand how to develop for kagent, it's important to understand the architecture of the project. Please refer to the [README.md](README.md#architecture) file for an overview of the project.
44

55
When making changes to `kagent`, the most important thing is to figure out which piece of the project is affected by the change, and then make the change in the appropriate folder. Each piece of the project has its own README with more information about how to setup the development environment and run that piece of the project.
66

7-
- [python](python): Contains the code for the ADK engine.
7+
- [python](python): Contains the code for the ADK engine.
88
- [go](go): Contains the code for the kubernetes controller, and the CLI.
99
- [ui](ui): Contains the code for the web UI.
1010

README.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
</td>
5656
</tr>
5757
</table>
58-
<!-- markdownlint-disable MD033 -->
58+
<!-- markdownlint-enable MD033 -->
5959

6060
---
6161

@@ -69,13 +69,13 @@
6969
### Core Concepts
7070

7171
- **Agents**: Agents are the main building block of kagent. They are a system prompt, a set of tools and agents, and an LLM configuration represented with a Kubernetes custom resource called "Agent".
72-
- **LLM Providers**: Kagent supports multiple LLM providers, including [OpenAI](https://kagent.dev/docs/kagent/supported-providers/openai), [Azure OpenAI](https://kagent.dev/docs/kagent/supported-providers/azure-openai), [Anthropic](https://kagent.dev/docs/kagent/supported-providers/anthropic), [Google Vertex AI](https://kagent.dev/docs/kagent/supported-providers/google-vertexai), [Ollama](https://kagent.dev/docs/kagent/supported-providers/ollama) and any other [custom providers and models](https://kagent.dev/docs/kagent/supported-providers/custom-models) accessible via AI gateways. Providers are represented by the ModelConfig resource.
72+
- **LLM Providers**: Kagent supports multiple LLM providers, including [OpenAI](https://kagent.dev/docs/kagent/supported-providers/openai), [Azure OpenAI](https://kagent.dev/docs/kagent/supported-providers/azure-openai), [Anthropic](https://kagent.dev/docs/kagent/supported-providers/anthropic), [Google Vertex AI](https://kagent.dev/docs/kagent/supported-providers/google-vertexai), [Ollama](https://kagent.dev/docs/kagent/supported-providers/ollama) and any other custom providers and models accessible via AI gateways. Providers are represented by the ModelConfig resource.
7373
- **MCP Tools**: Agents can connect to any MCP server that provides tools. Kagent comes with an MCP server with tools for Kubernetes, Istio, Helm, Argo, Prometheus, Grafana, Cilium, and others. All tools are Kubernetes custom resources (ToolServers) and can be used by multiple agents.
7474
- **Observability**: Kagent supports [OpenTelemetry tracing](https://kagent.dev/docs/kagent/getting-started/tracing), which allows you to monitor what's happening with your agents and tools.
7575

7676
### Core Principles
7777

78-
- **Kubernetes Native**: Kagent is designed to be easy to understand and use, and to provide a flexible and powerful way to build and manage AI agents.
78+
- **Kubernetes Native**: Agents and tools are managed as Kubernetes custom resources using familiar `kubectl` workflows.
7979
- **Extensible**: Kagent is designed to be extensible, so you can add your own agents and tools.
8080
- **Flexible**: Kagent is designed to be flexible, to suit any AI agent use case.
8181
- **Observable**: Kagent is designed to be observable, so you can monitor the agents and tools using all common monitoring frameworks.
@@ -84,8 +84,6 @@
8484

8585
### Architecture
8686

87-
The kagent framework is designed to be easy to understand and use, and to provide a flexible and powerful way to build and manage AI agents.
88-
8987
<div align="center">
9088
<img src="img/arch.png" alt="kagent" width="500">
9189
</div>

SECURITY.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,31 @@ To report a security vulnerability, email the private Google group kagent-vulner
1010

1111
Send a report when:
1212

13-
You discover that a kagent component has a potential security vulnerability.
14-
You are unsure whether or how a vulnerability affects kagent.
13+
- You discover that a kagent component has a potential security vulnerability.
14+
- You are unsure whether or how a vulnerability affects kagent.
1515

1616
### 🔔 Check before sending
1717

1818
If in doubt, send a private message about potential vulnerabilities such as:
1919

20-
Any crash, especially in kagent.
21-
Any potential Denial of Service (DoS) attack.
20+
- Any crash, especially in kagent.
21+
- Any potential Denial of Service (DoS) attack.
2222

2323
### ❌ When NOT to send a report
2424

2525
Do not send a report for vulnerabilities that are not part of the kagent project, such as:
2626

27-
You want help configuring kagent components for security purposes.
28-
You want help applying security related updates to your kagent configuration or environment.
29-
Your issue is not related to security vulnerabilities.
30-
Your issue is related to base image dependencies, such as AutoGen.
27+
- You want help configuring kagent components for security purposes.
28+
- You want help applying security related updates to your kagent configuration or environment.
29+
- Your issue is not related to security vulnerabilities.
30+
- Your issue is related to base image dependencies, such as AutoGen.
3131

3232
### Evaluation
3333

3434
The kagent team evaluates vulnerability reports for:
3535

36-
Severity level, which can affect the priority of the fix
37-
Impact of the vulnerability on kagent code as opposed to backend code
38-
Potential dependencies on third-party or backend code that might delay the remediation process
36+
- Severity level, which can affect the priority of the fix
37+
- Impact of the vulnerability on kagent code as opposed to backend code
38+
- Potential dependencies on third-party or backend code that might delay the remediation process
3939

4040
The kagent team strives to keep private any vulnerability information with us as part of the remediation process. We only share information on a need-to-know basis to address the issue.

contrib/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ To add your own contribution:
1818
3. Include a README.md in your subdirectory describing your contribution.
1919
4. Submit a pull request with a clear description of your changes.
2020

21-
For more details, see the main `CONTRIBUTION.md` in the project root.
21+
For more details, see the main `CONTRIBUTING.md` in the project root.
2222

2323
---
2424

helm/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Kagent Helm Chart
22

3-
These Helm charts install kagent-crds,kagent, it is required that the Kagent CRDs chart to be installed first.
3+
These Helm charts install kagent-crds and kagent. The kagent-crds chart must be installed first.
44

55
## Installation
66

@@ -10,8 +10,8 @@ These Helm charts install kagent-crds,kagent, it is required that the Kagent CRD
1010
# First, install the required CRDs
1111
helm install kagent-crds ./helm/kagent-crds/ --namespace kagent
1212

13-
# Then install Kagent with default provider
14-
# --set providers.default=openAI enabled by default, but you need to provide your openAI apikey
13+
# Then install kagent with default provider
14+
# --set providers.default=openAI is enabled by default, but you need to provide your OpenAI API key
1515
helm install kagent ./helm/kagent/ --namespace kagent --set providers.openAI.apiKey=your-openai-api-key
1616

1717
# Or with optional providers if you prefer local ollama provider or anthropic
@@ -35,7 +35,7 @@ make KAGENT_DEFAULT_MODEL_PROVIDER=openAI helm-install
3535
# install charts with anthropic provider
3636
make KAGENT_DEFAULT_MODEL_PROVIDER=anthropic helm-install
3737

38-
# install charts with anthropic provider
38+
# install charts with azureOpenAI provider
3939
make KAGENT_DEFAULT_MODEL_PROVIDER=azureOpenAI helm-install
4040

4141
# install charts with ollama provider

helm/kagent/files/nginx.conf

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ http {
4747
proxy_set_header X-Forwarded-Proto $scheme;
4848
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
4949
proxy_set_header Origin $scheme://$host;
50-
proxy_read_timeout 600s;
51-
proxy_send_timeout 600s;
50+
proxy_read_timeout {{ .Values.ui.nginx.proxyReadTimeout }};
51+
proxy_send_timeout {{ .Values.ui.nginx.proxySendTimeout }};
5252
proxy_buffering off;
5353
}
5454

@@ -63,6 +63,10 @@ http {
6363
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
6464
proxy_set_header Origin $scheme://$host;
6565
proxy_cache_bypass $http_upgrade;
66+
# Increased timeouts for streaming endpoints
67+
proxy_read_timeout {{ .Values.ui.nginx.proxyReadTimeout }};
68+
proxy_send_timeout {{ .Values.ui.nginx.proxySendTimeout }};
69+
proxy_buffering off;
6670
}
6771

6872
location /health {
@@ -80,8 +84,8 @@ http {
8084
proxy_set_header X-Forwarded-Proto $scheme;
8185
proxy_set_header X-Forwarded-Host $server_name;
8286
proxy_cache_bypass $http_upgrade;
83-
proxy_read_timeout 3600s;
84-
proxy_send_timeout 3600s;
87+
proxy_read_timeout {{ .Values.ui.nginx.proxyReadTimeout }};
88+
proxy_send_timeout {{ .Values.ui.nginx.proxySendTimeout }};
8589
proxy_buffering off;
8690
}
8791
}

helm/kagent/templates/openshift-route.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ kind: Route
66
metadata:
77
name: {{ include "kagent.fullname" . }}-ui
88
namespace: {{ include "kagent.namespace" . }}
9+
{{- with .Values.ui.openshiftRoute.annotations }}
10+
annotations:
11+
{{- toYaml . | nindent 6 }}
12+
{{- end }}
913
spec:
1014
to:
1115
kind: Service

helm/kagent/templates/ui-deployment.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ spec:
6464
- name: SSO_REDIRECT_PATH
6565
value: {{ .Values.ui.auth.ssoRedirectPath | default "/oauth2/start" | quote }}
6666
{{- end }}
67+
{{- if .Values.ui.streamTimeoutSeconds }}
68+
- name: KAGENT_STREAM_TIMEOUT_MS
69+
value: {{ mul (int .Values.ui.streamTimeoutSeconds) 1000 | quote }}
70+
{{- end }}
6771
{{- with .Values.ui.additionalForwardedHeaders }}
6872
- name: KAGENT_ADDITIONAL_FORWARDED_HEADERS
6973
value: {{ join "," . | quote }}

helm/kagent/values.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,17 @@ ui:
351351
# Path to redirect users to when they click "Sign in with SSO" on the login page
352352
# Default: /oauth2/start (oauth2-proxy's authentication start endpoint)
353353
ssoRedirectPath: "/oauth2/start"
354+
# -- Client-side chat stream inactivity timeout (seconds). The browser aborts a
355+
# streaming response if no event is received within this window. Should be >=
356+
# ui.nginx.proxyReadTimeout so nginx isn't the silent limit. Default 1800 (30m).
357+
streamTimeoutSeconds: 1800
358+
# -- Nginx proxy timeout configuration for the UI sidecar (values are passed
359+
# directly to the corresponding nginx directives, e.g. "1800s").
360+
nginx:
361+
# -- proxy_read_timeout: max time between two successive reads from the upstream.
362+
proxyReadTimeout: 1800s
363+
# -- proxy_send_timeout: max time between two successive writes to the upstream.
364+
proxySendTimeout: 1800s
354365
env: {} # Additional configuration key-value pairs for the ui ConfigMap
355366
# -- Additional request headers (beyond Authorization) the UI proxy will forward
356367
# to the backend. Names are case-insensitive. Hop-by-hop headers (Connection,
@@ -419,6 +430,13 @@ ui:
419430
# oauth2-proxy instead of the chart's edge-terminated Route.
420431
route:
421432
enabled: true
433+
434+
# OpenShift Route only (when route.openshift.io/v1 exists). Long timeouts are required
435+
# for A2A/SSE streaming through the cluster router; defaults are often ~60s and cause
436+
# net::ERR_INCOMPLETE_CHUNKED_ENCODING in the browser.
437+
openshiftRoute:
438+
annotations:
439+
haproxy.router.openshift.io/timeout: 120m
422440
# ==============================================================================
423441
# LLM PROVIDERS CONFIGURATION
424442
# ==============================================================================

0 commit comments

Comments
 (0)