|
|
This repository contains the material for the SAP TechEd 2026 session XP266 - Ship your own sandboxed AI operations agent to Kyma in two hours.
Important
What does an AI agent do when something fails in production? Find out by causing the failure yourself. Deploy a reasoning agent into Kyma, connect it to the SAP AI Core foundation, and give it full observability to diagnose what broke. Leave with practical patterns for cost control and monitoring.
Modern Kubernetes operations need more than dashboards β they need reasoning.
In this hands-on you meet a fully in-cluster, sandboxed AI operations agent running on SAP BTP, Kyma runtime and talking to SAP AI Core.
It's a Goose agent with live kubectl access: it investigates the cluster autonomously and writes its findings as Busola in-cluster health reports.
It also streams its LLM spend to SAP Cloud Logging β all routed through a LiteLLM proxy and deployed declaratively with KRO.
Note
New to the jargon?
- Kyma β SAP's managed Kubernetes runtime on BTP.
- Busola β the Kyma dashboard.
- Goose β an open-source agentic CLI (the reasoning agent).
- LiteLLM proxy β the in-cluster gateway that routes model calls to SAP AI Core.
- SAP AI Core β SAP's model-serving platform (Claude Β· GPT Β· Mistral Β· Nova).
- KRO β Kubernetes Resource Orchestrator; packages the whole stack as one declarative unit.
- CLS β SAP Cloud Logging; SAP's OpenSearch-based observability service.
π The whole premise is in the title: the agent is sandboxed.
- β Giving an AI agent a shell and a kubeconfig normally means a bad prompt β or a prompt-injection β can delete your workloads or leak a token.
- β Here the sandbox itself is the guardrail: each agent runs in a disposable, per-session pod that by construction cannot reach the internet or the API server, and never holds the LLM key β it sends a sentinel, and the gateway injects the real key at the edge.
- β The same container image runs at three trust levels β contained (no cluster access), scoped-ops (read-only), or web terminal (whatever your own account is allowed to do) β pick the level that matches each workload.
- β
It is the 100% stock NVIDIA OpenShell + Kubernetes
agent-sandboxchart on Kyma, no fork.
π The sandbox blocks the agent from the outside
- β Kubernetes RBAC refuses writes
- β there is no network route to the internet
- β and the LLM key never enters the pod.
π A prompt-injected or buggy agent hits the exact same walls as a well-behaved one β it cannot argue its way out, because the walls are not written in the prompt.
π That is why you can let it run unsupervised.
Everything is already deployed and wired up for you on your personal Kyma runtime β the provisioning and bootstrapping are done. Your two hours are spent understanding how the pieces fit and playing with the running system:
- π©Ί experiment with the diagnostics' prompts and watch the Cluster Health Reports change (Exercise 1);
- π¬ chat with the interactive chat agent (Exercise 2);
- π explore OpenShell sandboxes with JupyterHub notebooks (Exercise 3);
- π‘οΈ watch a sandboxed agent hit its guardrails β denied the internet and the API server (Exercise 4);
- βοΈ run the OpenShell-admin and NVIDIA GitHub Actions workflows (Exercise 4 Β· Exercise 5);
- π° and close with the spend dashboards (Exercise 6).
The LLM gateway (calling SAP AI Core through the proxy) and the in-cluster web terminal are covered in the appendices.
|
This is the self-hosted agent layer of the SAP AI landscape β everything below runs inside your Kyma runtime and reaches SAP AI Core through one proxy. flowchart LR
subgraph KYMA["βΈοΈ Your SAP BTP, Kyma runtime β all pre-deployed"]
direction TB
TERM["π₯οΈ Busola web terminal<br/>Goose Β· Claude Code"]
GOOSE["π Goose diagnostic jobs<br/>autonomous kubectl"]
OC["π¬ Chat UI<br/>interactive agent"]
JH["π JupyterHub<br/>Python + notebooks"]
LITELLM["π LiteLLM proxy :4001<br/>tier aliases Β· drop_params"]
CHR["π ClusterHealthReport Β·<br/>AuditLogCatalog Β· FleetStatus<br/>(Busola custom resources)"]
CLS["π Kyma Telemetry β<br/>SAP Cloud Logging<br/>spend dashboards"]
end
AICORE["βοΈ SAP AI Core<br/>Claude Β· GPT Β· Mistral Β· Nova"]
TERM --> LITELLM
GOOSE --> LITELLM
OC --> LITELLM
JH --> LITELLM
LITELLM --> AICORE
GOOSE --> CHR
GOOSE -. hand-off .-> OC
GOOSE -. hand-off .-> JH
LITELLM --> CLS
|
Important
Everything is pre-provisioned and pre-deployed for you β there is no infrastructure to install or configure. You only need:
- β The provided TechEd laptop, with the Chrome browser and a public internet connection.
- β
Your personal SAP BTP, Kyma runtime (
xp266-NNN) β the Busola URL and single sign-on are handed out at the start of the session. - β A GitHub account β several exercises run as GitHub Actions workflows. If you don't have one, sign up before the session (or at the very start).
Important
- β The session content is provided exclusively on the public SAP-samples GitHub. A couple of exercises are implemented as CI/CD GitHub Actions workflows (GHA).
- β To run them you need to fork this repository to your own GitHub account and enable GitHub Actions on your fork.
- β That is the only setup, it is all done in the browser, and it is required for the GHA-based exercises.
π Walk-through: Appendix 0 β Fork this repo & enable GitHub Actions (about 2 minutes).
Important
Security is paramount β you never handle a credential. The GHA exercises use GitHub's OIDC-delegated authentication, so there are no Kubernetes or BTP credentials to copy anywhere (why OIDC):
- β The GitHub Actions workflow acts as the OIDC provider.
- β Every Kyma runtime in the landscape is pre-configured to trust GitHub's token issuer (via the built-in Gardener OIDC shoot extension).
- β SAP Cloud Identity Services (the BTP platform IDP) is federated with the GitHub Actions OIDC provider.
- β As a result, short-lived tokens are fetched and rotated automatically on your behalf, for both Kubernetes and BTP operations.
Note
π Personal devices ought not to be used for this session β please use the provided TechEd laptop.
π Every exercise runs in the browser β Busola, JupyterHub, and GitHub Actions.
π No local kubectl, no IDE, no cloud account, nothing to install.
- π§ Getting Started β access your Kyma runtime and tour the pre-deployed AI-ops stack
- π Exercise 1 - Trigger and shape the Cluster Health Reports β drive and shape diagnostic reports, experiment with your own prompts
- π¬ Exercise 2 - Chat with the interactive agent β the interactive chat UI, and the hand-off from the diagnostic jobs
- π Exercise 3 - Explore OpenShell sandboxes with JupyterHub notebooks β drive the OpenShell sandbox lifecycle from Python and run an agent inside a sandbox
- π οΈ Exercise 4 - Your sandboxed agent: OpenShell practice with Kyma π§ β run the tools image as a runtime-isolated
Sandboxwith a contained LLM provider; watch the egress guardrail deny the apiserver and the internet- 4a (easy path) β run it as a GitHub Action
- 4b (do-it-yourself) β do it by hand in the in-cluster web terminal
- π€ Exercise 5 - External agents: Pi, opencode & Qwen via OpenRouter π§ β add an external provider; run three terminal coding agents against free OpenRouter models in a still-contained sandbox
- 5a (easy path) β run it as a GitHub Action
- 5b (do-it-yourself) β do it by hand in the in-cluster web terminal
- π Exercise 6 - Observability and spend β Kyma Telemetry to SAP Cloud Logging, the LiteLLM spend dashboards; the closing activity of the session
- π¦ Appendix 0 - Fork this repo & enable GitHub Actions (one-time setup β mandatory before GHA exercises)
- π Appendix 1 - The LLM gateway: LiteLLM and SAP AI Core β how the proxy routes to SAP AI Core, and call it yourself
- π₯οΈ Appendix 2 - The Busola web terminal π§ (optional) β run Goose and Claude Code against your cluster, in-browser
- π Appendix 3 - SAP AI Core from Python β the JupyterHub SAP AI Core track: chat, embeddings, tool calling, and the diagnostic hand-off in Python
- π Appendix 4 - OpenShell: concepts & architecture β the why, risks, protection layers, architecture, and glossary behind the sandboxed-agent hands-on
- π Appendix 5 - External agents & the OpenRouter provider model β how an external provider plugs into the OpenShell sandbox model, and OpenRouter vs SAP AI Core
Important
- β Every exercise can be completed entirely in the browser β no laptop terminal is required.
- β A few exercises offer an optional in-cluster web-terminal step, always marked π§ Go deeper (optional).
- β Wherever one appears there is a UI (Busola) or Run workflow (GitHub Actions) way to reach the same result.
- β Whatever your level, you can succeed with clicks alone.
Note
Every step is copy-paste ready β the two hours are short by design. If you fall behind, each exercise is self-contained; jump to whichever interests you most.
XP266 | Ship your own sandboxed AI operations agent to Kyma in two hours.
What does an AI agent do when something fails in production? Find out by causing the failure yourself. Deploy a reasoning agent into Kyma, connect it to the SAP AI Core foundation, and give it full observability to diagnose what broke. Leave with practical patterns for cost control and monitoring.
Please read the CONTRIBUTING.md to understand the contribution guidelines.
Please read the SAP Open Source Code of Conduct.
Support for the content in this repository is available during the actual time of the online session for which this content has been designed. Otherwise, you may request support via the Issues tab.
Copyright 2026 SAP SE or an SAP affiliate company and teched2026-XP266 contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.
