LangBot Deployment Guide
langbot-app/LangBot
Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.
Build unpublished sha-... An agent skill from carverauto/serviceradar.
$ npx skills add carverauto/serviceradar --skill demo-local-rollout -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install carverauto/serviceradar demo-local-rollout --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/carverauto/serviceradar.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/demo-local-rollout .claude/skills/demo-local-rollout && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "demo-local-rollout" agent skill from https://github.com/carverauto/serviceradar/tree/staging/.agents/skills/demo-local-rollout into .claude/skills/demo-local-rollout/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "demo-local-rollout", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/carverauto/serviceradar/tree/staging/.agents/skills/demo-local-rolloutType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add carverauto/serviceradar --skill demo-local-rollout -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install carverauto/serviceradar demo-local-rollout --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/carverauto/serviceradar.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/demo-local-rollout .agents/skills/demo-local-rollout && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "demo-local-rollout" agent skill from https://github.com/carverauto/serviceradar/tree/staging/.agents/skills/demo-local-rollout into .agents/skills/demo-local-rollout/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "demo-local-rollout", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add carverauto/serviceradar --skill demo-local-rollout -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install carverauto/serviceradar demo-local-rollout --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/carverauto/serviceradar.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/demo-local-rollout .cursor/skills/demo-local-rollout && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "demo-local-rollout" agent skill from https://github.com/carverauto/serviceradar/tree/staging/.agents/skills/demo-local-rollout into .cursor/skills/demo-local-rollout/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "demo-local-rollout", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/carverauto/serviceradar.git --path .agents/skills/demo-local-rollout--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add carverauto/serviceradar --skill demo-local-rollout -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install carverauto/serviceradar demo-local-rollout --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/carverauto/serviceradar.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/demo-local-rollout .gemini/skills/demo-local-rollout && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "demo-local-rollout" agent skill from https://github.com/carverauto/serviceradar/tree/staging/.agents/skills/demo-local-rollout into .gemini/skills/demo-local-rollout/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "demo-local-rollout", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install carverauto/serviceradar demo-local-rolloutInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add carverauto/serviceradar --skill demo-local-rollout -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/carverauto/serviceradar.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/demo-local-rollout .github/skills/demo-local-rollout && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "demo-local-rollout" agent skill from https://github.com/carverauto/serviceradar/tree/staging/.agents/skills/demo-local-rollout into .github/skills/demo-local-rollout/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "demo-local-rollout", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add carverauto/serviceradar --skill demo-local-rollout -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install carverauto/serviceradar demo-local-rollout --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/carverauto/serviceradar.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/demo-local-rollout .opencode/skills/demo-local-rollout && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "demo-local-rollout" agent skill from https://github.com/carverauto/serviceradar/tree/staging/.agents/skills/demo-local-rollout into .opencode/skills/demo-local-rollout/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "demo-local-rollout", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
demo-local-rolloutBuild unpublished sha-... An agent skill from carverauto/serviceradar.
Demo Local Rollout is an agent skill from carverauto/serviceradar. Build unpublished sha-... images and roll them to farm01 or the carverauto demo cluster. Use when the user asks to deploy, refresh, roll, patch, or test code in demo, farm01, or "the farm cluster" before a release. Pick the cluster first. Carverauto/demo requires OpenBao cosign and Argo. farm01 is a helm --reuse-values roll with no signing. Do not use for release cuts or Docker Compose.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in DevOps & Cloud, covering Container orchestration, Containers and Deployment. It works with Docker and Git. The repository describes itself as: Open-Source Network Management, Monitoring, ITOM, and Security Analytics. The licence is Apache-2.0.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2563b3f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
kubectlgithelmbazelmakejqrsynccurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use kubectl, git, helm, rsync and curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
VAULT_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Demo Local Rollout loads about 4.2k tokens when it runs. Until then it costs about 102 tokens; SKILL.md has 1,487 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from carverauto/serviceradar at commit 2563b3f, republished under its Apache-2.0 licence (© carverauto). 1,487 words, ~4,219 tokens.
.claude/skills/demo-local-rollout/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use this skill for unpublished sha-<git-sha> test tags. Formal releases use semver and $release-cut-and-demo-roll.
Do this before Harbor auth, Bazel, signing, or any cluster write.
carverauto demo | farm01 | |
|---|---|---|
| When | User says demo, carverauto, or does not name a cluster | User says farm01, farm cluster, or is already on the farm01 kubeconfig |
| Kubeconfig | default / carverauto control plane | export KUBECONFIG="$HOME/.kube/farm01.yaml" |
| Namespace | demo | serviceradar |
| How it rolls | Argo app serviceradar-demo-prod | helm upgrade --reuse-values |
| Admission | Kyverno: images must be signed with OpenBao cosign-release | No Kyverno. Do not OpenBao-sign or port-forward the signer |
| Registry | Harbor registry.carverauto.dev/serviceradar | Same Harbor project (public; no pull secret) |
| Live tag source | Deployments in demo, plus git override on demo/prod-release | helm get values serviceradar -n serviceradar (global.imageTag) |
Never apply the OpenBao / Kyverno / Argo path to farm01. Never helm-upgrade farm01 thinking it is demo.
If only elixir/web-ng/** changed and the target is demo, prefer $demo-web-ng-fastpath. That fast path is demo-only.
sha-$(git rev-parse HEAD) (full 40-char SHA; that is what --stamp emits).git diff --name-only <deployed>..HEAD to images. Rebuild only what changed../buildbuddy_setup_docker_auth.shDo not cut a release, edit VERSION, or create git tags. Do not roll demo-staging, production, or Docker Compose unless the user changes scope. Never push to staging.
.bazelrc try-imports %workspace%/.bazelrc.remote and .bazelrc.local. Both are gitignored (BuildBuddy API key). git worktree add does not copy them. Without them, --config=remote_base / --config=ci fails with PERMISSION_DENIED: Missing API key.
From the primary clone that already has the files:
PRIMARY=/Users/mfreeman/src/serviceradar
WT="$(pwd)"
ln -sfn "$PRIMARY/.bazelrc.remote" "$WT/.bazelrc.remote"
test -e "$PRIMARY/.bazelrc.local" && ln -sfn "$PRIMARY/.bazelrc.local" "$WT/.bazelrc.local"
test -f "$WT/.bazelrc.remote"git diff --name-only <currently-deployed-sha-or-tag>..HEADgo/cmd/agent/**, go/pkg/agent/**, go/pkg/mtr/** -> serviceradar-agentelixir/serviceradar_agent_gateway/**, shared agent control/proto -> serviceradar-agent-gatewayelixir/serviceradar_core/**, rust/srql/** (NIF) -> serviceradar-core-elx (and usually serviceradar-web-ng)elixir/web-ng/** -> serviceradar-web-ngproto/** -> every image that consumes the changed generated codeWhen in doubt, rebuild slightly too much. Phoenix / mix.lock / MODULE.bazel / rules_elixir changes mean rebuild every Elixir image you will roll.
global.imageTagCopy or rebuild every first-party image the target cluster will pull at the new tag. Inspect live deployments; do not copy demo-only images onto farm01.
Typical demo set: arancini, serviceradar-agent, serviceradar-agent-gateway, serviceradar-core-elx, serviceradar-datasvc, serviceradar-db-event-writer, serviceradar-faker, serviceradar-flow-collector, serviceradar-log-collector, serviceradar-rperf-client, serviceradar-tools, serviceradar-trapd, serviceradar-trivy-sidecar, serviceradar-web-ng, serviceradar-zen.
Typical farm01 set: serviceradar-agent, serviceradar-agent-gateway, serviceradar-core-elx, serviceradar-datasvc, serviceradar-flow-collector, serviceradar-log-collector, serviceradar-rperf-client, serviceradar-tools, serviceradar-trapd, serviceradar-trivy-sidecar, serviceradar-web-ng. farm01 usually has no faker, zen, bmp/arancini, or k8s-inventory.
serviceradar-log-collector-tcp shares the log-collector image. Do not invent a separate tag for it.
crane is on PATH (Homebrew). Do not assume /tmp/gobin/crane.
Staging no longer defines the legacy remote / remote_push profiles; the
surviving ones are remote_base, cache_only, and ci.
On a Darwin workstation, running an oci_push target through Bazel builds
linux/amd64 on RBE and then tries to execute linux jq/crane from
runfiles (Exec format error). On macOS use make push_all, which routes
through scripts/push_all_images.sh and pushes with host crane.
Build the OCI layouts remotely, then push with host crane:
bazel build \
--config=remote_base \
--noenable_platform_specific_config \
--remote_download_outputs=all \
--compilation_mode=opt \
--stamp \
//docker/images:agent_image_amd64 \
//docker/images:agent_gateway_image_amd64 \
//docker/images:core_elx_image_amd64 \
//docker/images:web_ng_image_amd64Layouts land under bazel-out/rbe_platform-opt/bin/docker/images/<name>_image_amd64. Bazel blob files are often symlinks and mode 0444; crane push of the layout fails with layout blob ... is a symlink. Materialize, push by digest, tag only sha-<commit> (do not retag latest):
BIN="$(bazel info output_path)/rbe_platform-opt/bin/docker/images"
# or the execroot path printed by the build
SRC="$BIN/agent_image_amd64"
DEST=/tmp/sr-oci-agent
rm -rf "$DEST"
mkdir -p "$DEST"
rsync -aL "$SRC/" "$DEST/"
chmod -R u+w "$DEST"
DIGEST=$(jq -r '.manifests[0].digest' "$DEST/index.json")
REPO=registry.carverauto.dev/serviceradar/serviceradar-agent
crane push "$DEST" "$REPO@$DIGEST"
crane tag "$REPO@$DIGEST" "sha-<commit>"
rm -rf "$DEST"Repeat for each rebuilt image. Capture every digest.
On a Linux host the push targets can be run directly, since the runfiles
jq/crane are the right architecture there. Use remote_base for the build;
the remote_push profile referenced by older runbooks no longer exists.
crane copy \
registry.carverauto.dev/serviceradar/<image>:<old-tag> \
registry.carverauto.dev/serviceradar/<image>:sha-<new><old-tag> is whatever the cluster is running (v1.4.31, sha-<old>, etc.). If crane digest of old and new match, the copy is a retag and existing signatures (if any) still apply.
export KUBECONFIG="$HOME/.kube/farm01.yaml"
helm get values serviceradar -n serviceradar
helm upgrade serviceradar "$CHECKOUT/helm/serviceradar" \
-n serviceradar \
--reuse-values \
--set image.digests.<service>=sha256:<digest> \
--rollback-on-failure \
--timeout 15mUse global.imageTag=sha-<new> ONLY when every first-party image should move.
For a change touching one or two services, pin those with
image.digests.<service> (see "Move only the services you changed") -- farm01
already carries digest pins for core and webNg, so you are updating an
existing pin, not introducing a new mechanism.
--reuse-values keeps farm01-only settings (MetalLB VIPs, Gateway API attach, Trivy sidecar, empty registryPullSecret, local-path storage). Do not replace the live values file unless the user wants those template/value changes applied.
Use the local chart when helm/ matches the live chart version (helm get metadata serviceradar -n serviceradar). If helm/ diverged and the user only asked for new images, keep the live chart and only change global.imageTag (OCI oci://registry.carverauto.dev/serviceradar/charts/serviceradar --version <live> plus --reuse-values --set global.imageTag=...).
Update ~/src/gitops/clusters/farm01/serviceradar/values.yaml global.imageTag so GitOps matches live. Do not commit or push the gitops repo unless the user asks.
Verify:
for d in serviceradar-web-ng serviceradar-core serviceradar-agent serviceradar-agent-gateway; do
kubectl rollout status deploy/"$d" -n serviceradar --timeout=180s
done
kubectl get deploy -n serviceradar \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.template.spec.containers[*]}{.image}{" "}{end}{"\n"}{end}'
kubectl get pods -n serviceradarDone when key deployments show sha-<new> and pods are Ready. Report the tag, rebuilt vs copied images, digests, helm revision, and any non-Ready pods. Do not mention signing.
demo roll (sign, then Argo)demo admission is Kyverno-enforced. Sign every rebuilt digest with OpenBao cosign-release before changing the Argo app. Copied-forward images whose digest is unchanged keep their existing signatures.
OpenBao on the control plane is HTTPS. A plaintext http://127.0.0.1:18200 health check returns Client sent an HTTP request to an HTTPS server.
kubectl port-forward -n openbao-system svc/openbao-active 18200:8200OPENBAO_ADDR=https://127.0.0.1:18200
OPENBAO_K8S_ROLE=forgejo-signing-runner
sa_jwt="$(kubectl create token -n forgejo-actions forgejo-signing-runner)"
vault_token="$(curl -skS \
-H 'Content-Type: application/json' \
-d "{\"role\":\"${OPENBAO_K8S_ROLE}\",\"jwt\":\"${sa_jwt}\"}" \
"${OPENBAO_ADDR}/v1/auth/kubernetes/login" | jq -er '.auth.client_token')"
export VAULT_ADDR="$OPENBAO_ADDR"
export VAULT_TOKEN="$vault_token"
export VAULT_SKIP_VERIFY=true
export COSIGN_KEY_REF=hashivault://cosign-release
export COSIGN_YES=true
export COSIGN_DOCKER_MEDIA_TYPES=1
export COSIGN_REFERRERS_MODE=legacy
export COSIGN_TLOG_UPLOAD=truecosign sign --key "$COSIGN_KEY_REF" \
registry.carverauto.dev/serviceradar/<image>@sha256:<digest>Re-mint the Vault token on 403 permission denied. Tear down the port-forward when signing is done.
serviceradar-demo-prod tracks helm/serviceradar on the demo/prod-release
branch of the serviceradar repo itself, and that path contains
.argocd-source-serviceradar-demo-prod.yaml, whose helm.parameters OVERRIDE
the Application's own spec.source.helm.parameters.
Verified 2026-08-23: the Application spec said
image.digests.webNg=sha256:457a2b5c... while the running pod was
sha256:94bf165f..., and Argo still reported Synced. A
kubectl patch application ... spec.source.helm.parameters is reverted on the
next sync. Edit the file on demo/prod-release and push, then sync:
git worktree add --no-track -b <tmp> /tmp/wt-demo-release github/demo/prod-release
# edit helm/serviceradar/.argocd-source-serviceradar-demo-prod.yaml
git push github HEAD:refs/heads/demo/prod-release
kubectl patch application -n argocd serviceradar-demo-prod --type merge \
-p '{"operation":{"sync":{"revision":"demo/prod-release"}}}'If the Application parameter and the running image disagree while Argo says
Synced, that file is why -- do not "fix" it by patching the Application.
Work in a worktree so concurrent agents do not share a checkout. Two things bite on a fresh one, both verified 2026-08-23:
Symlink the gitignored Bazel rc files before any bazel command (repo Hard
Rules). Without them RBE fails with PERMISSION_DENIED: Missing API key.
Build once before make push_all. scripts/push_all_images.sh resolves
bazel info bazel-bin and then checks ! -d on the result before it builds
anything. On a fresh worktree that directory does not exist yet, so the script
dies with:
error: unable to resolve bazel-binwhich reads like a credentials or config problem and is not. bazel info
alone succeeds, which makes it more confusing. Prime the output tree first:
bazel build -c opt --config=remote --remote_download_outputs=toplevel //docker/images:images
make push_all PUSH_TAG="sha-$(git rev-parse HEAD)"Use image.digests.<service>, not global.imageTag, unless every first-party
image really should move. global.imageTag rolls the whole set for a
two-service change; image.digests.<service> short-circuits ahead of it in
serviceradar.imageRefSuffix, so everything else stays on the release tag and
only the changed services need signing. Service keys are the image.tags names
(core, webNg, agent, agentGateway, ...).
kubectl set image poisons later Helm upgradesA hand-run kubectl set image takes server-side-apply ownership of
.spec.template.spec.containers[].image under the kubectl-set field manager,
and every later helm upgrade then fails with:
Apply failed with 1 conflict: conflict with "kubectl-set" using apps/v1Resetting metadata.managedFields to [{}] does NOT fix it on its own -- the
fields are re-attributed to a synthetic before-first-apply manager and the
conflict count goes UP. The fix is Helm 4's --force-conflicts, which takes
ownership in place (unlike --force-replace, which recreates the resource):
helm upgrade serviceradar ./helm/serviceradar -n <ns> --reuse-values --force-conflicts \
--set image.digests.core=sha256:...Oban-scheduled maintenance can trickle. Drive it directly over the release RPC rather than waiting for the next tick:
kubectl exec -n <ns> <core-pod> -- /app/bin/serviceradar_core_elx rpc \
'ServiceRadar.Inventory.Identity.DuplicateSweep.reconcile_duplicates() |> inspect() |> IO.puts()'
kubectl exec -n <ns> <core-pod> -- /app/bin/serviceradar_core_elx rpc \
'ServiceRadar.Observability.NetflowExporterCacheRefreshWorker.perform(%Oban.Job{args: %{}}) |> inspect() |> IO.puts()'Measured difference: the scheduled duplicate sweep was merging ~1 device per run; the direct call merged all 11 outstanding in 1.5s.
serviceradar-demo-prod uses argocd-image-updater with write-back-method: git to demo/prod-release.
A live kubectl patch of spec.source.helm.parameters is INERT, not merely racy. Verified
2026-08-22: helm/serviceradar/.argocd-source-serviceradar-demo-prod.yaml on demo/prod-release
REPLACES the parameter list at render time. A patched parameter persists in the Application spec
and the app reports Synced|Healthy|Succeeded, while the workload keeps the old image, because
only the parameters in that file reach Helm. Every parameter you need — global.imageTag, and
image.digests.<service> if you are moving a single service — must be committed to that file on
demo/prod-release. Do not diagnose this as a slow rollout; check the rendered image, not the
sync status.
Contention-free sha-... flow:
demo/prod-release so chart content matches the images, and in the same commit set global.imageTag: sha-<commit> in .argocd-source-serviceradar-demo-prod.yaml.spec.source.targetRevision to that commit (and align the live global.imageTag parameter).v* release tag during the test window (allow-tags is ^v[0-9]+\.[0-9]+\.[0-9]+$).$release-cut-and-demo-roll returns demo to the semver / Image Updater path.One-off parameter patch (can lose a race with git write-back):
kubectl patch application -n argocd serviceradar-demo-prod \
--type merge \
-p '{"spec":{"source":{"helm":{"parameters":[{"name":"global.imageTag","value":"sha-<new>"}]}}}}'Wait for Synced|Healthy|Succeeded:
kubectl get application -n argocd serviceradar-demo-prod \
-o jsonpath='{.status.sync.status}{"|"}{.status.health.status}{"|"}{.status.operationState.phase}{"\n"}'
kubectl get deploy -n demo \
serviceradar-web-ng serviceradar-core serviceradar-agent serviceradar-agent-gateway \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.template.spec.containers[*]}{.image}{" "}{end}{"\n"}{end}'Do not call demo finished until new pods are Running and Argo reports Succeeded. Report the tag, rebuilt vs copied, signed digests, and Argo status.
© carverauto, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/demo-local-rollout of carverauto/serviceradar.
Open the folder on GitHubat commit 2563b3f
Demo Local Rollout next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Demo Local Rollout this skillcarverauto/serviceradar | 921 | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| LangBot Deployment Guidelangbot-app/LangBot | 18k | — | ~1.5k | Automated safety check: Notes | Apache-2.0 | |
| Debug Openshell ClusterNVIDIA/OpenShell | 16k | — | ~20k | Automated safety check: Notes | Apache-2.0 | |
| Buzz Self Hostingtonbistudio/buzz-skills | 276 | — | ~2.2k | Automated safety check: Notes | MIT | |
| Releasear-io/ar-io-node | 127 | — | ~4.2k | Automated safety check: Notes | AGPL-3.0 | |
| Deploymentmatrixorigin/memoria | 610 | — | ~1.6k | Automated safety check: Notes | Apache-2.0 |
langbot-app/LangBot
Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.
NVIDIA/OpenShell
Debug why an OpenShell gateway deployment is unhealthy, unreachable, or unable to create sandboxes.
tonbistudio/buzz-skills
A skill your agent uses when helping a user set up, debug, or operate a self-hosted Buzz relay through Docker Compose.
ar-io/ar-io-node
Drive the AR.IO Node release process end-to-end — preflight checks, prepare commit, finalize with image SHAs, test docker compose profiles, tag & publish, and post-release cleanup.
matrixorigin/memoria
Deploy Memoria with Docker Compose or Kubernetes. An agent skill from matrixorigin/memoria.
open-edge-platform/edge-ai-suites
Validate the get-started experience of Open Edge Platform (OEP) software components from the perspective of a first-time user.
carverauto/serviceradar
Run ServiceRadar web-ng locally against the live Kubernetes demo CNPG database for dashboard, SRQL, services, and UI testing.
carverauto/serviceradar
Run ServiceRadar elixir/web-ng locally against the Docker Compose CNPG database with copied mTLS certs and Docker secrets, then verify dashboard UI changes with Playwright.
carverauto/serviceradar
Refresh the Kubernetes demo namespace with a web-ng-only change using the ServiceRadar fast path.
carverauto/serviceradar
Run ServiceRadar web-ng locally against the Kubernetes demo namespace FieldSurvey data, including CNPG NodePort access, NATS Object Store artifact access, authenticated browser checks, and…
carverauto/serviceradar
Cut a ServiceRadar release and roll the Kubernetes demo namespace to the resulting published semver image tag through the guarded ArgoCD release branch.
carverauto/serviceradar
Official daisyUI component library skill. An agent skill from carverauto/serviceradar.
Categories
Build unpublished sha-... An agent skill from carverauto/serviceradar. Demo Local Rollout is an agent skill from carverauto/serviceradar. Build unpublished sha-...
Demo Local Rollout fits situations like: the user asks to deploy; test code in demo; the farm cluster before a release.
Run `npx skills add carverauto/serviceradar --skill demo-local-rollout -a claude-code`. Or copy the skill folder (.agents/skills/demo-local-rollout in carverauto/serviceradar) into .claude/skills/demo-local-rollout in your project. Claude Code loads it when a task matches its description.
Run `npx skills add carverauto/serviceradar --skill demo-local-rollout -a codex`. Or copy the skill folder (.agents/skills/demo-local-rollout in carverauto/serviceradar) into .agents/skills/demo-local-rollout in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add carverauto/serviceradar --skill demo-local-rollout -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/demo-local-rollout, .gemini/skills/demo-local-rollout, .github/skills/demo-local-rollout and .opencode/skills/demo-local-rollout in your project.
Going by SKILL.md and its folder, Demo Local Rollout needs the command-line tools its instructions call (kubectl, git, helm, bazel, make and jq) and credentials named VAULT_TOKEN. Our summary lists: Docker; A credential in VAULT_TOKEN.
SKILL.md contains no URLs. Its commands use git and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Demo Local Rollout is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Demo Local Rollout: LangBot Deployment Guide (langbot-app/LangBot, 18k stars), Debug Openshell Cluster (NVIDIA/OpenShell, 16k stars), Buzz Self Hosting (tonbistudio/buzz-skills, 276 stars) and Release (ar-io/ar-io-node, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
carverauto (a GitHub organization) maintains it in carverauto/serviceradar, which has 921 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 10, 2026.
Source: carverauto/serviceradar on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.