Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
41 changes: 1 addition & 40 deletions .github/workflows/update-ref-docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -303,9 +303,6 @@ jobs:
# read none of the 1.x-only conrefs.
WITH_RUNTIME_IMAGES=false
WITH_KMCP=false
# 0.x predates the environment variable registry: docs/env.md
# does not exist at v0.10.1, and no 0.x page documents env vars.
WITH_ENV_DOCS=false
;;
1.x)
SECTION=reference
Expand All @@ -326,7 +323,6 @@ jobs:
KAGENT_CLI_LINK_PREFIX=reference/cli
WITH_RUNTIME_IMAGES=true
WITH_KMCP=true
WITH_ENV_DOCS=true
;;
*)
echo "Error: unknown line '$LINE'."
Expand All @@ -353,8 +349,6 @@ jobs:
echo "CLI_WEIGHT=$CLI_WEIGHT"
echo "WITH_RUNTIME_IMAGES=$WITH_RUNTIME_IMAGES"
echo "WITH_KMCP=$WITH_KMCP"
echo "WITH_ENV_DOCS=$WITH_ENV_DOCS"
echo "KAGENT_ENV_PAGE=docs-site/content/kagent/$LINE/$SECTION/env-vars.md"
} >> $GITHUB_ENV

echo "Line $LINE -> content/kagent/$LINE/$SECTION/, $API_DIR"
Expand Down Expand Up @@ -761,12 +755,6 @@ jobs:
} >> $GITHUB_ENV
fi

if [ "$WITH_ENV_DOCS" = "true" ]; then
echo "ENV_DOCS_NOTE=The environment variable reference is regenerated from \`docs/env.md\` in the kagent checkout, which upstream generates from the registry in \`go/core/pkg/env\` and holds to it in CI. The \`testing\` section is dropped as repository-facing; pass \`--include-section testing\` to publish it." >> $GITHUB_ENV
else
echo "ENV_DOCS_NOTE=No environment variable reference is generated on a $LINE run: \`docs/env.md\` does not exist at that line's releases." >> $GITHUB_ENV
fi

- name: Flag whether the conrefs moved
run: |
set -euo pipefail
Expand Down Expand Up @@ -1200,31 +1188,6 @@ jobs:
--out-dir "$KMCP_CLI_DIR" \
--url-prefix "$KMCP_CLI_URL_PREFIX"

- name: Generate environment variable reference

@Rachael-Graham Rachael-Graham Oct 30, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed because kagent#3434 deleted docs/env.md at v1.0.0-rc1 and declared env vars internal wiring, not a supported interface. This step exits 1 when that file is missing, so the env-vars page and generate-env-docs.py are retired with it.

if: env.WITH_ENV_DOCS == 'true'
# kagent generates docs/env.md from the registry in go/core/pkg/env,
# and its own CI fails the build when the two drift (make
# env-docs-check). So the checked-out file is authoritative and this
# step only reshapes it into a page; it does not re-derive anything
# from Go source, and needs no build.
run: |
set -euo pipefail
cd "$GITHUB_WORKSPACE/website"
SOURCE="$GITHUB_WORKSPACE/kagent/docs/env.md"
# Fail loudly rather than skipping. A missing file here means the
# release being documented dropped or moved the registry output,
# which is a change this job must not paper over by silently
# leaving the published page on its previous contents.
if [ ! -f "$SOURCE" ]; then
echo "Error: $SOURCE not found in the kagent checkout at $KAGENT_VERSION."
echo "kagent generates it with 'make env-docs'. If upstream moved or"
echo "removed it, update this step and scripts/generate-env-docs.py."
exit 1
fi
python3 scripts/generate-env-docs.py \
--source "$SOURCE" \
--out "$KAGENT_ENV_PAGE"

- name: Audit generated CLI docs
run: |
cd "$GITHUB_WORKSPACE/website"
Expand All @@ -1244,16 +1207,14 @@ jobs:
signoff: true
title: "Update kagent ${{ env.LINE }} reference docs at ${{ env.KAGENT_TAG }}${{ env.CONREFS_CHANGED && ' (version conrefs changed)' || '' }}"
body: |
Regenerates the kagent **${{ env.LINE }}** API and Helm references, its CLI and environment variable pages, and the version conrefs at a released tag. Nothing here was read from either repository's `main`:
Regenerates the kagent **${{ env.LINE }}** API and Helm references, its CLI pages, and the version conrefs at a released tag. Nothing here was read from either repository's `main`:
- **kagent**: [`${{ env.KAGENT_TAG }}`](https://github.com/${{ github.repository_owner }}/kagent/releases/tag/${{ env.KAGENT_TAG }}) (`${{ env.KAGENT_COMMIT }}`)
${{ env.KMCP_SOURCE_LINE }}

The `${{ env.LINE }}` span of `versions/kagent.md` moves to `${{ env.KAGENT_VERSION }}`, so the `helm install --version` lines on those pages and the reference content beside them describe the same release. Only this line's spans were written; the other line's are asserted unchanged.

${{ env.LINE_SCOPE_NOTE }}

${{ env.ENV_DOCS_NOTE }}

${{ env.CONREF_NOTE }}

${{ env.RUNTIME_IMAGE_NOTE }}
Expand Down
5 changes: 5 additions & 0 deletions docs-site/assets/kagent-docs/snippets/install-cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Download the kagent CLI. The `--version` flag matches the CLI to the release that these docs cover.

```bash
curl https://raw.githubusercontent.com/kagent-dev/kagent/refs/heads/main/scripts/get-kagent | bash -s -- --version v{{< reuse "kagent-docs/versions/kagent.md" >}}
```
2 changes: 1 addition & 1 deletion docs-site/content/kagent/1.x/about/architecture/kagent.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ Follow the **Kubernetes plane** first. An operator applies a Harness, an AgentTe

The **kagent control plane** starts once that ActorTemplate exists. A caller, who might be the same person as the operator, calls `CreateSession` through kagent's gRPC API. This call is governed by kagent's own authentication and authorization, not by Kubernetes RBAC. kagent creates the Session from the Agent's latest successful revision. That Session runs on an {{< gloss "Actor" >}}Actor{{< /gloss >}}.

From there, the caller holds a conversation over the {{< gloss "A2A" >}}A2A{{< /gloss >}} (Agent-to-Agent) protocol. A caller addresses the Agent, and names the conversation with the Session's ID as the A2A `contextId`. The A2A gateway routes each request to the Actor running behind that Session. This means that the caller only ever needs to know the Agent's name and the Session's ID, never which Actor or {{< gloss "Worker" >}}Worker{{< /gloss >}} is behind it.
From there, the caller holds a conversation over the {{< gloss "A2A" >}}A2A{{< /gloss >}} (Agent2Agent) protocol. A caller addresses the Agent, and names the conversation with the Session's ID as the A2A `contextId`. The A2A gateway routes each request to the Actor running behind that Session. This means that the caller only ever needs to know the Agent's name and the Session's ID, never which Actor or {{< gloss "Worker" >}}Worker{{< /gloss >}} is behind it.

## Why two planes

Expand Down
2 changes: 1 addition & 1 deletion docs-site/content/kagent/1.x/about/core-concepts.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ You can create a Session with the following command:
kagent agent session create --agent assistant -n kagent
```

After it is created, a Session talks to callers over the {{< gloss "A2A" >}}A2A{{< /gloss >}} (Agent-to-Agent) protocol, through kagent's A2A gateway. Callers address the Agent rather than the Session. The HTTP endpoint is `/agents/{namespace}/{name}` and gRPC carries the same `namespace/name` in the standard A2A `tenant` field. The Session's ID is the A2A `contextId`, so a message that does not include a context identifier starts a new conversation, and a message that repeats one continues that conversation.
After it is created, a Session talks to callers over the {{< gloss "A2A" >}}A2A{{< /gloss >}} (Agent2Agent) protocol, through kagent's A2A gateway. Callers address the Agent rather than the Session. The HTTP endpoint is `/agents/{namespace}/{name}` and gRPC carries the same `namespace/name` in the standard A2A `tenant` field. The Session's ID is the A2A `contextId`, so a message that does not include a context identifier starts a new conversation, and a message that repeats one continues that conversation.

An expiration worker deletes a Session that does not record task activity for seven days. The `config.sessions.idleTtl` Helm value sets that window. A value of `0s` turns the expiration worker off. For more information about what the deletion retains, see [Expire idle Sessions]({{< link path="operations/operational-considerations#expire-idle-sessions" >}}).

Expand Down
Loading
Loading