kube-noob

io.github.aashishmahajanPublished by GitHub account aashishmahajanv0.7.1Updated Nov 7, 2026

Kubernetes, OpenShift, ROSA HCP, Helm and RHACS audit, debugging and cited docs. No AI inside.

Overview

AI-generated overview

Offline-first Kubernetes, OpenShift, ROSA HCP, Helm and RHACS audit, debugging and cited-docs tools for an assistant, with no model of its own.

What you can do
  • Validate, audit, red-team and fix Kubernetes/OpenShift manifests, and generate manifests or Helm charts from a blueprint
  • Search and read cited local knowledge chunks, rule explanations, API deprecation history and OpenShift upgrade risks
  • Diagnose pasted events, logs, alerts and admission denials, and check whether an error is a known issue or ticket
  • Generate admission policies, compare RHACS policies, triage vulnerability and build logs, and model threats or exposure paths
  • Evaluate NetworkPolicies offline and keep a local incident ledger with confirmed fixes
  • Run learning tracks, lessons, exercises, quizzes and grade answers
When to use it
Useful when you work with Kubernetes, OpenShift, ROSA HCP, Helm or RHACS and want deterministic, cited audits and troubleshooting that stay on your machine. It suits design reviews, manifest hardening, denial and upgrade questions, and training, rather than general cloud work.
Requirements
Runs locally over stdio, installed with uvx from the kube-noob PyPI package (Python 3.11.4+). Optional live cluster access uses your existing kubectl/oc context and is off by default (KUBE_NOOB_CLUSTER_ENABLED); web lookups are off by default (KUBE_NOOB_WEB_ENABLED). No accounts or API keys are declared.
Before you install
Live cluster tools are read-only and never read Secrets, but they act on whatever context kubectl/oc currently points at, so check that context first. Web lookups and any model use are opt-in; an admin lock (KUBE_NOOB_OFFLINE) overrides them. Fix and policy tools return YAML and diffs rather than applying anything, so review output before using it. Pasted logs and manifests go to your MCP client's model.

Installation

In SourceWeft

  1. Open kube-noob in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[kube-noob - No AI inside. Works with yours.]

kube-noob

[ci] [OpenSSF Scorecard] [PyPI] [License]

No AI inside. Works with yours. kube-noob is a Kubernetes, OpenShift, ROSA HCP, Helm and RHACS/StackRox expert in a box: audit rules, read-only-first playbooks, cited docs and graded exercises. Claude, OpenShift Lightspeed or any MCP client calls it as tools; the CLI runs it with no AI at all. No network calls unless enabled. Browse the rules, the demos and the recordings at kube-noob.com.

Two questions it answers that other tools do not, offline, from files you already have:

bash
kube-noob policy reach --from web/frontend --to shop/payments --port 9090 -f examples/netpol-admin-tiers.yamlkube-noob policy explain -f examples/denial-multi.txt

Which policy governs this traffic? AdminNetworkPolicy → NetworkPolicy → BaselineAdminNetworkPolicy, in cluster order, naming the tier, policy and rule that decided. A checker reading NetworkPolicy alone gives a wrong answer wherever a platform team set cluster-wide guardrails, not a narrower one. Which system denied this pod? One pass across Pod Security, SCC, Kyverno, Gatekeeper, VAP and RHACS, with the smallest fix. reach exits 1 when denied; both say what they could not determine.

Also: 93 rules with strict schemas and 9 red-team scenarios; 67 offline playbooks, read-only steps first; must-gathers triaged into a case draft that says what could not be read; OpenShift bugs with fix versions; hardened manifests and admission policies; 5 tracks, 16 lessons. kube-noob gate puts any of it in CI with SARIF and one exception list, and a design request runs the 7-step protocol (Clarify, Validate, Research, Audit, Calibrate, Generate, Red Team). Answers cite local knowledge as [kn:<doc>#<n>]. All of it: use-cases.md.

Who does the thinking

You useWho answersWhat leaves your machine
The Claude plugin, or any MCP clientThat client's model, calling kube-noob's toolsWhat you send that client; kube-noob sends nothing
The CLIkube-noob's rules, no modelNothing
kube-noob ask (optional)A model you configureYour question, to that model only

Quick start

bash
brew tap aashishmahajan/kube-noob https://github.com/aashishmahajan/kube-noobbrew trust --formula aashishmahajan/kube-noob/kube-noobbrew install kube-noobkube-noob demo --listkube-noob audit -f your-manifests/ --platform openshift --version 4.22kube-noob insight 'paste anything'kube-noob doctor

No Homebrew: uv tool install kube-noob (Python 3.11.4+); install help.

Use with Claude or any MCP client

Claude plugin, in Claude Code (needs uv):

/plugin marketplace add aashishmahajan/kube-noob/plugin install kube-noob@kube-noob

Desktop app, claude.ai chat and the Agent Skill: install.md. Any MCP client:

json
{"mcpServers": {"kube-noob": {"command": "uvx", "args": ["--from", "kube-noob==0.9.0", "kube-noob", "mcp"]}}}

Run on OpenShift

As a token-protected service, loopback-only sidecar or Lightspeed tool: docs/openshift.md. The chart ships NetworkPolicies, written for restricted-v2.

Safe by default

Off until you turn it on: web lookups, live cluster access (read-only, never Secrets), and any model at all. An admin offline: true lock overrides every one of them and nothing later in the config chain can lift it. Config never comes from the current directory. kube-noob doctor shows what the process can reach and exits 1 if the configuration contradicts the lock; every key is in kube-noob.example.yaml, and the generated safety contract lists what each capability tier can do.

Docs

Everything is at kube-noob.com, and in docs/: use cases, architecture, accuracy, guidance, learning, privacy, security, contributing, limits, roadmap, maintenance, governance.

Credits

Notices: THIRD_PARTY_NOTICES.md. Kubernetes, Helm, OpenShift, ROSA, RHACS, StackRox, OpenShift Lightspeed, Claude, Anthropic, GitHub and AWS are trademarks of their respective owners; kube-noob is independent and not endorsed by them. License: Apache-2.0.

Source: README.md at commit 4a926b4

Tools

47

kubenoob_run_protocol

Run the 7-step engineering protocol

Clarify -> Validate -> Research -> Audit -> Calibrate -> Generate -> Red Team for a request with existing manifests or a generator blueprint. Returns the Audit & Validation Brief, the production manifest, and Red Team findings with safeguards. Use this first for any design/review request.

Parametersrequestrequiredversionplatformblueprintmanifestsapply_fixes

kubenoob_validate_manifests

Validate manifests

Strict schema validation (Kubernetes 1.35 + OpenShift/OVN-K/StackRox/Gateway API CRDs), apiVersion vs kind, OpenShift-only APIs on vanilla Kubernetes, removed/deprecated APIs, selector wiring.

Parametersversionplatformmanifestsrequired

kubenoob_audit_manifests

Audit manifests

Full deterministic audit: security, network exposure, storage access modes, reliability and red-team scenarios. Findings carry rule ids, line numbers, fixes, citations and matching RHACS policy names.

Parametersstagesversionplatformmanifestsrequiredexceptionsmin_severity

kubenoob_red_team

Red-team manifests

Hostile-auditor scenarios: node crash, zone outage, RWX split-brain, exposure, privilege escalation, upgrade blocking, secret leaks, resource starvation, supply chain.

Parametersversionplatformmanifestsrequired

kubenoob_fix_manifests

Apply safe mechanical fixes

Migrates removed APIs, fixes wrong API groups, hardens securityContext, adds Route TLS, unblocks PDBs, reorders EgressFirewall rules, swaps RWO-only classes for RWX claims. Returns the diff log and manual follow-ups. Does not touch any cluster.

Parametershardenversionplatformmanifestsrequired

kubenoob_clarify_requirements

Clarify requirements

Check a (partial) generator blueprint and return blocking questions and stated assumptions.

Parametersblueprintrequired

kubenoob_generate_manifests

Generate production manifests

Deterministic, audited manifests for kubernetes / openshift / rosa-classic / rosa-hcp from a blueprint (name, namespace, image, replicas, port, probes, storage, exposure, egress).

Parametersblueprintrequired

kubenoob_generate_helm_chart

Generate a Helm chart

Same as generate_manifests but packaged as a Helm chart (Chart.yaml v2, values.yaml, values.schema.json, templates). Returns file contents.

Parametersblueprintrequired

kubenoob_search_knowledge

Search local knowledge

BM25 search over the built-in curated knowledge and the ingested corpus (Kubernetes/OpenShift/ROSA/Helm/StackRox docs, Terraform modules, public RHACS Jira insights). Results include chunk ids to cite as [kn:...] plus source URL and license.

Parameterslimitqueryrequiredsource

kubenoob_get_knowledge

Read a knowledge chunk or document

Fetch the full text of a chunk id (kn:<doc>#<n>) or every chunk of a document id.

Parametersidrequired

kubenoob_api_history

API removal history and version map

Removed/deprecated Kubernetes APIs relevant to a target version, and the OpenShift->Kubernetes version map.

Parameterskindversionplatform

kubenoob_explain_rule

Explain an audit rule

Rationale, remediation, citations for a rule id.

Parametersrule_idrequired

kubenoob_list_rules

List audit rules

All rule ids with stage, category and default severity.

Takes no parameters.

kubenoob_diagnose

Diagnose symptoms offline

Match pasted events / describe output / logs / CLI errors or an Alertmanager webhook payload against troubleshooting playbooks, ranked by matching patterns and by the signals the text carries (alert names, reasons); returns the signals, ranked root causes, read-only checks with names filled in, fixes, reported issues for the version and policy denials.

Parameterstextrequiredlimitversionplatform

kubenoob_extract_signals

Extract signals

Read the canonical names in an error: Alertmanager alert names (webhook payload or text), event and ClusterOperator condition reasons, container reasons, admission rules, components and normalised error templates, plus the alerts its words imply. Returns each signal with where it was found, the catalogue entry (components, playbooks, upstream source) and the playbooks it points at. Read-only and offline.

Parameterstextrequired

kubenoob_insight

What is this, and what does it say?

Start here for anything the user pastes. Names what the input is (events, pod status, logs, an Alertmanager payload, a policy denial, a ticket, manifests, a Helm template, a build log, a Containerfile, an SBOM or scanner report, a packet trace, must-gather paths, a question; several at once) and runs every analyser that applies: diagnosis with reported issues and team memory, the denial explainer, the audit, the documentation. Returns every finding with its source, read-only next steps and what was not analysed and why. Read-only, local.

Parameterstextrequiredversionplatform

kubenoob_ticket_changes

What changed in Red Hat Jira

Reconcile the local copy of Red Hat's public Jira: tickets fixed (with fix versions), closed as not a bug, won't fix or duplicate, reopened, given a fix version or opened since a date, with links, and the open tickets per project and verdict. Read-only and local; each sync records the changes.

Parameterskindslimitsinceproject

kubenoob_known_issues

Is this a reported issue?

Match an error or symptom against the issues listed in the OpenShift release notes (known issues and issues fixed in each update) and, when this install keeps a local copy of Red Hat's public Jira, against those tickets too. Returns the issue id and link, what became of it (fixed and in which version, still open, closed as not a bug, won't fix or a duplicate), the workaround and Red Hat's remarks from the comments; with `version`, only issues that can affect that version.

Parameterstextrequiredlimitversionplatform

kubenoob_upgrade_risks

Known risks for an OpenShift update

Before updating OpenShift from one x.y.z version to another: the risks Red Hat declares for that update in the public update graph (conditional updates, as an OpenShift Update Service serves them), from a bundled snapshot, offline. Each risk has its name, message, link, the version that fixes it and a verdict: applies (declared for every cluster), check (one fact decides it, with the read-only command or must-gather file that shows it) or cannot evaluate offline (its PromQL, as written). Whether the update is in your channel is not checked.

Parametersarchtargetrequiredcurrentrequired

kubenoob_ticket

Look up a Red Hat Jira ticket

One ticket from this install's local copy of Red Hat's public Jira (OCPBUGS, ROX, HOSTEDCP...): its status, what became of it, fix versions and whether `version` already has the fix, the workaround and remarks from the comments, and linked tickets. Local data only; nothing is fetched.

Parameterskeyrequiredversion

kubenoob_explain_denial

Why was this denied?

Explain an admission denial policy by policy: Kyverno, OPA Gatekeeper, ValidatingAdmissionPolicy, Pod Security Admission, OpenShift SCC, RHACS, ResourceQuota, LimitRange or RBAC. Returns the policy and rule, the failing field, read-only commands with names filled in, the fix (with a patch for Pod Security and RBAC) and the audit rules that catch it before deploy.

Parameterstextrequiredplatform

kubenoob_policy_generate

Turn audit rules into admission policies

Generate ValidatingAdmissionPolicy (with binding) and/or Kyverno ValidatingPolicy YAML from kube-noob's audit rules, in audit (warn and record) or enforce mode, for a platform. One policy per rule decidable from one object; each names its rule, fix and source. Rules that need other objects or that the API server already enforces are listed with the reason. Nothing is applied.

Parametersmoderulesenginesversionplatformexceptionsexclude_namespaces

kubenoob_policy_migrate_check

Check legacy Kyverno policies for their CEL form

Kyverno 1.20 removes the kyverno.io ClusterPolicy, Policy, CleanupPolicy and legacy PolicyException. Lint them rule by rule against the policies.kyverno.io types: direct, inverted (a deny or a negated pattern: the CEL validation must state what is allowed), manual (JMESPath, API calls, anchors, strategic merge patches) or blocked (no documented CEL equivalent), each with the field path, the target kind, the reason and the Kyverno documentation section (pinned commit). Rules that map directly get a draft CEL policy and a kyverno test fixture skeleton to prove it. Nothing is applied or rewritten.

Parametersdraftspoliciesrequired

kubenoob_posture_scan

Attack paths in manifests

Rank the paths from an exposure (Route, Ingress, LoadBalancer or NodePort Service) to what a compromised pod could do: node access (privileged, hostPath, host namespaces) or Kubernetes API rights through its ServiceAccount token (read Secrets, exec, create workloads, escalate). Score = exposure x blast radius; every step names the field that proves it, with a fix. Secret objects are dropped unread.

Parameterstopmanifestsrequired

kubenoob_build_diagnose

Diagnose a failed build log

Read a failed GitHub Actions, Jenkins, Tekton or OpenShift build log: the failing step (and why it is that step), the error line and its template, the cause class (dependency fetch, compile, test, image push, registry auth, quota, timeout, out of memory, permissions) with its evidence, reported issues, team memory and the fix for that CI system. Read-only.

Parameterslogrequiredversionplatform

kubenoob_rhacs_compare

Compare RHACS policies with kube-noob's rules

Map every policy in an RHACS (StackRox) export to kube-noob rules by name and criteria: overlap (same setting, with severity and scope differences), related (the same risk seen through image, runtime or API-event data), gap (a deploy-time setting kube-noob has no rule for), outside (image contents, runtime behaviour, API events, label conventions) or unexplained (criteria kube-noob does not know). Lists disagreements and the rules no policy covers. Local only.

Parametersoutcomespoliciesrequired

kubenoob_vuln_report

Assess scanner output: VEX, exploitation, reachability

Read Trivy or Grype JSON, CycloneDX or SPDX SBOMs, or an RHACS image scan into one finding per package, version and CVE (with the fix version); apply Red Hat VEX (a not-affected or already-fixed finding drops out, citing the statement); mark CISA KEV entries; and, with the manifests, rank by exposure, privileges and RBAC reach with each finding's attack path. SBOM packages are matched against Red Hat VEX. Local only.

Parameterskevtopveximagereportsrequiredproductsmanifeststrust_report_vex

kubenoob_threat_model

STRIDE threat model of an application

From manifests: entry points, trust boundaries, data stores and identities, and per element the STRIDE threats with status (open, mitigated, not assessed), the evidence, the kube-noob rules, generated admission policies and RHACS policies that mitigate each, and MITRE ATT&CK for Containers technique ids. Deterministic; Secrets are dropped unread.

Parametersreportsversionplatformmanifestsrequired

kubenoob_posture_report

Latest drift and policy report

The newest daily report in this install's data folder: objects added, removed and changed since the previous snapshot (with the fields that changed), findings new and fixed, and open findings by namespace, owner and rule. Local data only.

Takes no parameters.

kubenoob_check_network_policy

Would this traffic be allowed?

Evaluate NetworkPolicies offline: can the source reach the destination on this port? Checks egress from the source and ingress to the destination, names the policy and rule that decide each, says why the other rules did not match, and proposes the smallest NetworkPolicy that would allow it.

Parametersportrequiredsourcerequiredplatformprotocolmanifestsrequireddestinationrequireddefault_namespace

kubenoob_incidents

Incidents the watch has seen

Open (or resolved) incidents from the local incident ledger: workload, signal, how often it came back, the diagnosis and what changed before it started. Read this first when asked what is wrong.

Parameterslimitstatusnamespace

kubenoob_incident

One incident in full

An incident with its evidence (redacted), diagnosis, policy denials, reported issues, rollout change, every occurrence, the fixes a person confirmed, and confirmed fixes for the same problem elsewhere.

Parametersidrequired

kubenoob_incident_confirm

Remember the fix for an incident

AFTER the user confirms it worked: store the cause and fix on the incident (and as a learning note), so the next occurrence comes with it. Summaries only; never leaves the machine.

Parametersidrequiredfixrequiredcauserequiredconfirmed_by_userrequired

kubenoob_learn_tracks

List learning tracks

Tracks, lessons, exercises and the learner's progress.

Parameterslearner

kubenoob_learn_lesson

Open a lesson

Lesson content with objectives, key points and citations. A shared HTTP server records no progress, so the learner id only selects whose tally to show when one is kept.

Parameterslearnerlesson_idrequired

kubenoob_learn_exercise

Get an exercise

Exercise prompt, starter YAML, hints and points.

Parametersexercise_idrequired

kubenoob_learn_submit

Submit an exercise answer

Grade YAML offline with the audit engine; awards credits and returns feedback. A shared HTTP server grades the same way but records nothing, and says so in the result.

Parametersanswerrequiredlearnerexercise_idrequired

kubenoob_learn_quiz

Quiz

Fetch a quiz question (no choice) or answer it (choice index). A shared HTTP server marks the answer the same way but records nothing, and says so in the result.

Parameterschoicelearnerquestion_idrequired

kubenoob_learn_progress

Learner progress

Credits earned and completed items.

Parameterslearner

kubenoob_grade_answer

Grade a model answer (enforcer + credit system)

Deterministic reward for a completion against a benchmark task: task correctness (audit engine or QA rules), source-attribution credit for valid [kn:...] citations, format, penalties.

Parameterstasktask_idcompletionrequired

kubenoob_learning_summary

Show what kube-noob has learned locally

The user's environment profile (platform, versions, conventions), confirmed troubleshooting notes (cite as [kn:local-N#0]) and the most frequent playbooks/rules. Read this before tailoring advice.

Takes no parameters.

kubenoob_learning_note_add

Remember a confirmed fix

Save a short symptom -> cause -> fix note to the local learning file AFTER the user confirms it worked. Summaries only: credentials, manifests and raw logs are rejected. Never leaves the machine.

Parametersfixrequiredtagscauserequiredsymptomrequiredplatformconfirmed_by_userrequired

kubenoob_learning_profile_set

Remember the user's environment

Save platform, versions and team conventions the user stated, so later answers fit their setup.

Parametersplatformversionsconventions

kubenoob_config_status

Show configuration

Effective configuration (webEnabled, cluster access, model), version and knowledge stats.

Takes no parameters.

kubenoob_code_report

Assess SAST findings: where the code ships and who runs it

Read the SARIF that Semgrep, Bandit, SpotBugs/FindSecBugs, ESLint or CodeQL wrote (kube-noob has no analysis engine of its own): one finding per file, line and CWE across tools, suppressed and fixed results excluded with the reason, lint kept apart. With Containerfiles, each file is followed into the images that ship it (copied or built; tests and tools are not shipped); with manifests, findings rank by exposure and privileges with the attack path. With scanner reports and dependency files, each language-package vulnerability points at the file and line to change. Local only.

Parameterstopsarifreportsmanifestssource_rootscontainerfilesinclude_qualitydependency_files

kubenoob_containerfile_audit

Audit a Containerfile

Static checks of a Containerfile or Dockerfile: base images pinned by digest, a non-root USER, no credentials in ENV, ARG, LABEL, RUN or copied files, no download piped into a shell, package caches cleaned, a health check or probes, a multi-stage build. Each finding names its fix and source. The CLI (kube-noob build audit) also reads the build context and the built image's layers.

Parametersmanifestscontainerfilerequired

kubenoob_analyze_must_gather

Analyse a must-gather

Open an OpenShift must-gather (or oc adm inspect output) safely and say what is wrong, most severe first: the cluster version and update, cluster operators, nodes, machine config pools, OLM operators, pods, warning events and etcd log hints. Each finding has its evidence file, its signals, read-only commands to confirm it, and the known OpenShift bugs and team memory entries that match it for the version the cluster runs. Nothing is extracted or run and Secrets are never read. Local: reads the path you give on this machine.

Parameterstoppathrequiredcase_draft

Version history

3
  1. v0.7.1LatestOct 31, 2026
  2. v0.7.0Oct 30, 2026
  3. v0.6.0Oct 29, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts