name: kagenti:weather-demo description: Deploy the weather agent and MCP tool demo via CLI (no UI required). Uses pre-built ghcr.io images, deploys to team1. Optimized for speed (~15s).
Weather Agent Demo (CLI)
Deploy the Weather Service agent and Weather Tool without the Kagenti UI. Uses existing CI scripts and Kubernetes manifests for a fully CLI-driven workflow. Optimized for speed: pre-built images from ghcr.io, all commands in parallel, no waits.
When to Use
- User wants to run the weather agent demo without the UI
- User asks "deploy weather demo", "deploy weather agent", or "run weather demo via CLI"
- User wants a quick end-to-end test of agent + tool deployment
Prerequisites
- Kagenti platform deployed (via
scripts/kind/setup-kagenti.shor equivalent) kubectlconfigured and pointing at the target cluster- Ollama running locally with
llama3.2:3b-instruct-fp16model, OR an OpenAI API key
Context-Safe Execution (MANDATORY)
Deploy/build commands produce large output. Use run_in_background: true on the Bash
tool to keep output out of context. Do NOT use shell redirects (> file 2>&1) as they
break permission matching.
Before running any commands, record the start time:
date +%s
Remember this value as the start timestamp. Do NOT redirect to a file.
Workflow
flowchart TD
START(["/kagenti:weather-demo"]) --> ALL["Step 1: Deploy all in parallel"]:::build
ALL --> PATCH["Step 2: Fix Ollama connectivity"]:::debug
PATCH --> DONE([Demo Running])
classDef build fill:#795548,stroke:#333,color:white
classDef debug fill:#FF9800,stroke:#333,color:white
Follow this diagram as the workflow. Do NOT add verification or testing steps beyond Step 2.
Step 1: Deploy All in Parallel
Both images are pre-built on ghcr.io/kagenti/agent-examples/. The namespace setup
is a no-op if team1 already exists. Launch all three as parallel Bash tool calls:
Bash call 1 — Setup team1 namespace:
./.github/scripts/kagenti-operator/70-setup-team1-namespace.sh
Bash call 2 — Deploy weather-service agent:
./.github/scripts/kagenti-operator/74-deploy-weather-agent.sh
Bash call 3 — Deploy weather-tool:
./.github/scripts/kagenti-operator/72-deploy-weather-tool.sh
IMPORTANT: All three commands MUST be run as parallel Bash tool calls with
run_in_background: trueandtimeout: 600000(three separate Bash invocations in the same response). Then wait for all to complete using TaskOutput.
Step 2: Fix Ollama Connectivity (REQUIRED on Kind)
The deployment manifest defaults to LLM_API_BASE=http://dockerhost:11434/v1 which
does not resolve inside Kind. Patch directly with host.docker.internal:
kubectl patch deployment weather-service -n team1 --type=strategic -p '{"spec":{"template":{"spec":{"containers":[{"name":"agent","env":[{"name":"LLM_API_BASE","value":"http://host.docker.internal:11434/v1"},{"name":"LLM_MODEL","value":"llama3.2:3b-instruct-fp16"}]}]}}}}'
On Docker Desktop (macOS/Windows), use
host.docker.internal. On Podman, usehost.containers.internal. Do NOT wait for rollout — skipkubectl rollout statusto save time.
Then report elapsed time:
date +%s
Compute elapsed seconds by subtracting this value from the start timestamp recorded earlier. Report the difference in the completion message.
Done
Report the elapsed time. Do NOT run any additional verification, pod checks, log checks, or end-to-end curl tests.
LLM Configuration
Switch to OpenAI
kubectl create secret generic openai-secret -n team1 \
--from-literal=apikey="<YOUR_OPENAI_API_KEY>"
kubectl set env deployment/weather-service -n team1 -c agent \
LLM_API_BASE="https://api.openai.com/v1" \
LLM_MODEL="gpt-4o-mini-2024-07-18"
kubectl patch deployment weather-service -n team1 --type=json -p='[
{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{
"name":"LLM_API_KEY",
"valueFrom":{"secretKeyRef":{"name":"openai-secret","key":"apikey"}}
}},
{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{
"name":"OPENAI_API_KEY",
"valueFrom":{"secretKeyRef":{"name":"openai-secret","key":"apikey"}}
}}
]'
Cleanup
Since both images are pulled from ghcr.io (no Shipwright builds), cleanup is just deleting the deployments and services:
kubectl delete deployment weather-service weather-tool -n team1 --ignore-not-found
kubectl delete svc weather-service weather-tool-mcp -n team1 --ignore-not-found
Or delete the entire namespace:
kubectl delete namespace team1
Troubleshooting
Agent Can't Reach Ollama
See Step 2: Fix Ollama Connectivity above.
| Container runtime | Hostname |
|---|---|
| Docker Desktop | host.docker.internal |
| Podman (macOS) | host.containers.internal |
| Kind default | dockerhost (usually doesn't resolve) |
Agent Can't Reach Weather Tool
kubectl get svc -n team1 | grep weather-tool
# Should show: weather-tool-mcp ClusterIP ... 8000/TCP
The default MCP_URL is http://weather-tool-mcp.team1.svc.cluster.local:8000/mcp.
Related Skills
kagenti:agent- Create custom A2A agents from scratchkagenti:operator- Deploy Kagenti platform and demo agentskagenti:deploy- Deploy Kind clusterk8s:pods- Debug pod issuesk8s:logs- Query component logs