diff --git a/next.config.mjs b/next.config.mjs
index 77c436e5..186cd731 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -4,6 +4,7 @@ import createMDX from "@next/mdx";
import rehypeUnwrapImages from 'rehype-unwrap-images'
import remarkFrontmatter from 'remark-frontmatter'
import remarkGfm from 'remark-gfm'
+import { remarkVersionSubstitution } from './scripts/remark-version-substitution.mjs'
const nextConfig = {
pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'],
@@ -41,7 +42,7 @@ const nextConfig = {
const withMDX = createMDX({
options: {
- remarkPlugins: [remarkFrontmatter, remarkGfm],
+ remarkPlugins: [remarkFrontmatter, remarkGfm, remarkVersionSubstitution],
rehypePlugins: [rehypeUnwrapImages],
},
})
diff --git a/package.json b/package.json
index 4f843e0d..f26744ee 100644
--- a/package.json
+++ b/package.json
@@ -47,6 +47,7 @@
"rehype-unwrap-images": "^1.0.0",
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.1",
+ "unist-util-visit": "^5.0.0",
"tailwind-merge": "^3.3.1",
"tailwindcss-animate": "^1.0.7"
},
diff --git a/public/sitemap.xml b/public/sitemap.xml
index b444ff2f..7ee496c6 100644
--- a/public/sitemap.xml
+++ b/public/sitemap.xml
@@ -2,840 +2,847 @@
https://kagent.dev/agents
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/blog
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/community
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/concepts/agent-harness
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/concepts/agent-memory
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/concepts/agent-substrate
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/concepts/agents
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/concepts/architecture
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/concepts
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/concepts/tools
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/a2a-agents
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/a2a-byo
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/agent-harness
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/agent-sandbox
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/agent-substrate
- 2026-06-12
+ 2026-06-18
+ weekly
+ 0.8
+
+
+
+ https://kagent.dev/docs/kagent/examples/agentgateway
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/agents-mcp
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/crewai-byo
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/discord-a2a
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/documentation
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/human-in-the-loop
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/langchain-byo
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/skills
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/slack-a2a
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/examples/telegram-bot
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/getting-started/first-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/getting-started/first-mcp-tool
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/getting-started/local-development
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/getting-started
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/getting-started/quickstart
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/getting-started/system-prompts
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/introduction/features
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/introduction/installation
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/introduction
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/introduction/what-is-kagent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/observability/audit-prompts
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/observability/launch-ui
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/observability
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/observability/tracing
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/operations/debug
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/operations/operational-considerations
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/operations
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/operations/uninstall
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/operations/upgrade
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/api-ref
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-add-mcp
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-bug-report
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-build
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-completion
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-dashboard
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-deploy
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-get
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-help
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-init
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-install
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-invoke
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-mcp
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-run
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-uninstall
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli/kagent-version
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/cli
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/faq
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/helm
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/release-notes
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/resources/tools-ecosystem
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/amazon-bedrock
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/anthropic
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/azure-openai
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/byo-openai
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/gemini
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/google-vertexai
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/ollama
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/openai
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/sap-ai-core
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kagent/supported-providers/xai
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/deploy/install-controller
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/deploy
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/deploy/server
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/develop/fastmcp-python
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/develop/mcp-go
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/develop
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/introduction
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/quickstart
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/api-ref
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-add-tool
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-build
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-completion
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-deploy
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-help
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-init
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-install
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-run
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference/kmcp-secrets
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/reference
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs/kmcp/secrets
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/docs
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/enterprise
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/page.tsx
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/agents/argo-rollouts-conversion-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/agents/cilium-crd-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/agents/helm-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/agents/istio-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/agents/k8s-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/agents/kgateway-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/agents/observability-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/agents/promql-agent
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/istio
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/kubernetes
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/prometheus
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/documentation
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/helm
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/argo
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/grafana
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/other
- 2026-06-12
+ 2026-06-18weekly0.8https://kagent.dev/tools/cilium
- 2026-06-12
+ 2026-06-18weekly0.8
diff --git a/scripts/remark-version-substitution.mjs b/scripts/remark-version-substitution.mjs
new file mode 100644
index 00000000..5e9cdefb
--- /dev/null
+++ b/scripts/remark-version-substitution.mjs
@@ -0,0 +1,33 @@
+import { createRequire } from "node:module";
+import { dirname, join } from "node:path";
+import { fileURLToPath } from "node:url";
+import { visit } from "unist-util-visit";
+
+const require = createRequire(import.meta.url);
+const __dirname = dirname(fileURLToPath(import.meta.url));
+const jiti = require("jiti")(join(__dirname, ".."));
+const { VERSIONS } = jiti(join(__dirname, "../src/app/docs/_constants.ts"));
+
+const VERSION_PATTERN = /\{VERSIONS\.(\w+)\}/g;
+
+function substituteVersions(value) {
+ return value.replace(VERSION_PATTERN, (match, key) => {
+ if (Object.hasOwn(VERSIONS, key)) {
+ return VERSIONS[key];
+ }
+
+ return match;
+ });
+}
+
+/**
+ * Replace {VERSIONS.key} placeholders inside fenced and inline code blocks.
+ * MDX evaluates the same syntax in prose, but treats code fences as literal text.
+ */
+export function remarkVersionSubstitution() {
+ return (tree) => {
+ visit(tree, "code", (node) => {
+ node.value = substituteVersions(node.value);
+ });
+ };
+}
diff --git a/src/app/docs/_constants.ts b/src/app/docs/_constants.ts
index f523d458..80b0dce0 100644
--- a/src/app/docs/_constants.ts
+++ b/src/app/docs/_constants.ts
@@ -5,8 +5,8 @@
export const VERSIONS = {
// Core kagent version requirements
- kagent: "0.9.1",
- kmcp: "0.2.8",
+ kagent: "0.9.9",
+ kmcp: "0.3.0",
// External dependencies
agentSandbox: "0.3.10",
diff --git a/src/app/docs/kagent/examples/agent-substrate/page.mdx b/src/app/docs/kagent/examples/agent-substrate/page.mdx
index 4cdd7bc8..b853a305 100644
--- a/src/app/docs/kagent/examples/agent-substrate/page.mdx
+++ b/src/app/docs/kagent/examples/agent-substrate/page.mdx
@@ -14,19 +14,19 @@ export const metadata = {
# Agent Substrate
-This example walks from an empty machine to a declarative agent running inside a gVisor actor on [Agent Substrate](/docs/kagent/concepts/agent-substrate). Everything pulls from published OCI charts — no source builds, no repo clones.
+In this guide, you install Agent Substrate and kagent on a local kind cluster, then deploy a declarative `SandboxAgent` that runs inside a gVisor actor. All components come from published OCI charts — no source builds or repo clones required.
-By the end you'll have:
+By the end, you will have:
-- A kind cluster running Agent Substrate {VERSIONS.agentSubstrate} in `ate-system`.
-- kagent 0.9.7 or later installed with the substrate integration enabled. **kagent 0.9.7 is the minimum version** — earlier releases do not include the controller wiring that lets a `SandboxAgent` target substrate.
+- Agent Substrate v{VERSIONS.agentSubstrate} running in the `ate-system` namespace.
+- kagent v{VERSIONS.kagent} or later installed with the substrate integration enabled. **kagent v{VERSIONS.kagent} is the minimum version** — earlier releases do not include the controller wiring that lets a `SandboxAgent` target substrate.
- A `SandboxAgent` running on substrate, reachable from the kagent UI.
For background on what substrate is and how it differs from a per-pod agent runtime, see the [Agent Substrate concept page](/docs/kagent/concepts/agent-substrate). This guide does not cover the `AgentHarness` path on substrate.
## Before you begin
-You will need:
+You need:
- `kind`, `kubectl`, and `helm` on your `PATH`.
- A running Docker daemon (Docker Desktop or equivalent).
@@ -42,7 +42,7 @@ export OPENAI_API_KEY="sk-..."
kind create cluster --name kagent-substrate
```
-The substrate {VERSIONS.agentSubstrate} chart defaults to JWT auth backed by Kubernetes ServiceAccount tokens, so a vanilla kind cluster works — no feature gates or custom kind config are required.
+The substrate v{VERSIONS.agentSubstrate} chart defaults to JWT auth backed by Kubernetes ServiceAccount tokens, so a vanilla kind cluster works — no feature gates or custom kind config are required.
## Step 2: Install Agent Substrate
@@ -70,27 +70,31 @@ You should see `ate-api-server`, `ate-controller`, `atelet-*`, `atenet-router`,
## Step 3: Install kagent with substrate enabled
-> Pin the chart to `0.9.7` or later. The `controller.substrate.*` and `substrateWorkerPool.*` values used below were introduced in 0.9.7; against an older chart they will be silently ignored and the controller will start without the substrate integration.
+
-Confirm the OpenAI key is set in this shell before running helm. If it's empty, the install will run silently with no `kagent-openai` Secret and the default agent pods will land in `CreateContainerConfigError`.
+Confirm the OpenAI key is set in this shell before you run Helm. If the key is empty, the install runs silently with no `kagent-openai` Secret and the default agent pods land in `CreateContainerConfigError`.
```bash
[[ -n "${OPENAI_API_KEY:-}" ]] && echo "key is set (len=${#OPENAI_API_KEY})" || echo "OPENAI_API_KEY is empty — export it first"
```
-> Don't combine the export and the helm command on one line — `OPENAI_API_KEY="$(cat ...)" helm ... --set providers.openAI.apiKey="${OPENAI_API_KEY}"` evaluates `${OPENAI_API_KEY}` before the inline assignment runs and passes an empty string. Either `export` on its own line first, or splice the value directly with `--set providers.openAI.apiKey="$(cat ~/path/to/key)"`.
+
Install the CRDs, then kagent with the substrate flags.
```bash
helm upgrade --install kagent-crds \
oci://ghcr.io/kagent-dev/kagent/helm/kagent-crds \
- --version 0.9.7 \
+ --version {VERSIONS.kagent} \
--namespace kagent --create-namespace --wait
helm upgrade --install kagent \
oci://ghcr.io/kagent-dev/kagent/helm/kagent \
- --version 0.9.7 \
+ --version {VERSIONS.kagent} \
--namespace kagent --timeout 10m --wait \
--set providers.openAI.apiKey="${OPENAI_API_KEY}" \
--set providers.default=openAI \
@@ -102,9 +106,9 @@ helm upgrade --install kagent \
--set substrateWorkerPool.ateomImage=ghcr.io/kagent-dev/substrate/ateom-gvisor:v{VERSIONS.agentSubstrate}
```
-The `controller.substrate.*` and `substrateWorkerPool.*` flags are what turn on the substrate integration. The rest is a standard kagent install.
+The `controller.substrate.*` and `substrateWorkerPool.*` flags turn on the substrate integration. The rest is a standard kagent install.
-If helm hits its `--timeout 10m` while waiting on the cold-start pod startup race (the controller restarts a couple of times waiting on postgres), wait for the controller manually and continue.
+If Helm hits its `--timeout 10m` while waiting on the cold-start pod startup race (the controller restarts a couple of times waiting on postgres), wait for the controller manually and continue.
```bash
kubectl wait deploy/kagent-controller -n kagent --for=condition=Available --timeout=10m
@@ -117,16 +121,16 @@ kubectl get secret kagent-openai -n kagent # should exist with 1 data en
kubectl get pods -n kagent | grep -v Running # only header + Completed jobs expected
```
-If you see `CreateContainerConfigError` on the default agent pods, the secret didn't get created — re-run the kagent helm command with `--reuse-values --set providers.openAI.apiKey="$(cat ~/path/to/key)"` to patch it in. The deployments will roll to new pods automatically.
+If you see `CreateContainerConfigError` on the default agent pods, the secret did not get created — re-run the kagent Helm command with `--reuse-values --set providers.openAI.apiKey="$(cat ~/path/to/key)"` to patch it in. The deployments roll to new pods automatically.
-### Tuning the WorkerPool size
+### Tune the WorkerPool size
-`substrateWorkerPool.replicas=1` is the chart default. One worker is enough for a declarative-only walkthrough: session actors release their slot the moment they snapshot back to object storage, so a single worker can serve many sequential sessions. Bump it when:
+`substrateWorkerPool.replicas=1` is the chart default. One worker is enough for a declarative-only walkthrough: session actors release their slot the moment they snapshot back to object storage, so a single worker can serve many sequential sessions. Increase the replica count when:
- You add a long-lived `AgentHarness`. The `ahr-<...>` actor pins a slot for the lifetime of the CR, so you need at least `1 + (number of harnesses)`.
- You want simultaneous, overlapping declarative sessions.
-You can change the size three ways, depending on how permanent you want it.
+You can change the size three ways, depending on how permanent you want the change.
```bash
# 1) Quick, ephemeral — scale the live CR. Reverts on the next helm upgrade.
@@ -134,7 +138,7 @@ kubectl scale workerpool kagent-default -n kagent --replicas=3
# 2) Stick it into the helm release — survives upgrades.
helm upgrade kagent oci://ghcr.io/kagent-dev/kagent/helm/kagent \
- --version 0.9.7 --namespace kagent --reuse-values \
+ --version {VERSIONS.kagent} --namespace kagent --reuse-values \
--set substrateWorkerPool.replicas=3
# 3) Fresh install — change the value on the Step 3 install command above.
@@ -159,7 +163,7 @@ A `SandboxAgent` with `platform: substrate` and a `substrate.workerPoolRef` runs
- **Name**: `hello-substrate`
- **Namespace**: `kagent`
- **Model config**: `default-model-config`
- - **Runtime**: `Go` (required — the Python ADK isn't supported on substrate today)
+ - **Runtime**: `Go` (required — the Python ADK is not supported on substrate today)
- **System message**:
```
You are a friendly assistant living inside an Agent Substrate sandbox.
@@ -211,7 +215,7 @@ Expected reply:
> *I am hello-substrate, a Go ADK declarative agent running inside a gVisor actor.*
-Behind the scenes, a per-session gVisor actor was restored from the golden snapshot, ran the LLM call, and snapshotted itself back to object storage. Open **View → Substrate** to see the actor in the inventory — between requests it will sit `Suspended`.
+Behind the scenes, a per-session gVisor actor was restored from the golden snapshot, ran the LLM call, and snapshotted itself back to object storage. Open **View → Substrate** to see the actor in the inventory — between requests it sits `Suspended`.
## Cleanup