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).
Scanned 9/20/2026
Install to Claude Code
npx -y skills add rossoctl/rossoctl --skill rossoctl:weather-demo --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Rossoctl:Weather Demo?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/rossoctl-rossoctl-weather-demo)More formats (shields.io, HTML) on the badges page.
---
name: rossoctl: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 Rossoctl 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
- Rossoctl platform deployed (via `scripts/kind/setup-rossoctl.sh` or equivalent)
- `kubectl` configured and pointing at the target cluster
- Ollama running locally with `llama3.2:3b-instruct-fp16` model, 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:
```bash
date +%s
```
> Remember this value as the start timestamp. Do NOT redirect to a file.
## Workflow
```mermaid
flowchart TD
START(["/rossoctl: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/rossoctl/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:
```bash
./.github/scripts/operator/70-setup-team1-namespace.sh
```
**Bash call 2** — Deploy weather-service agent:
```bash
./.github/scripts/operator/74-deploy-weather-agent.sh
```
**Bash call 3** — Deploy weather-tool:
```bash
./.github/scripts/operator/72-deploy-weather-tool.sh
```
> IMPORTANT: All three commands MUST be run as parallel Bash tool calls with
> `run_in_background: true` and `timeout: 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`:
```bash
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, use `host.containers.internal`.
> Do NOT wait for rollout — skip `kubectl rollout status` to save time.
Then report elapsed time:
```bash
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
```bash
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:
```bash
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:
```bash
kubectl delete namespace team1
```
## Troubleshooting
### Agent Can't Reach Ollama
See [Step 2: Fix Ollama Connectivity](#step-2-fix-ollama-connectivity-required-on-kind) 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
```bash
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
- `rossoctl:agent` - Create custom A2A agents from scratch
- `rossoctl:operator` - Deploy Rossoctl platform and demo agents
- `rossoctl:deploy` - Deploy Kind cluster
- `k8s:pods` - Debug pod issues
- `k8s:logs` - Query component logs
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!