{
  "schema_version": "2.0",
  "slug": "ksterx-srunx",
  "name": "srunx",
  "agent_url": "https://ksterx.github.io/srunx/",
  "category": "Infrastructure",
  "run_id": "run-rpub-v2-ksterx-srunx-2026-08-19",
  "run_at": "2026-08-19T18:10:00Z",
  "editor": "Hlido Editor",
  "editorial_method": "public-surface-tier-1+editorial-narrative-v2",
  "methodology_version": "2026.05",
  "methodology_url": "/methodology/public-surface-tier-1/",
  "score": 72,
  "tier": "STEADY",
  "laddoo_score": 72,
  "confidence": "medium",
  "hlido_opinion": {
    "headline": "A clean, genuinely agent-native toolkit for orchestrating SLURM jobs as code — well-executed and MCP-first, with adoption still the open question.",
    "body": "srunx is the kind of infrastructure tool that respects both its human and its machine users. It turns SLURM job submission — historically a wall of sbatch flags and shell glue — into one-line submits, YAML workflows with depends_on/retry/Jinja templating, matrix parameter sweeps with per-cell tracking, and a web dashboard for the DAG and run history. The part that matters for Hlido's thesis is that it ships an MCP server as a first-class surface: Claude Code and other MCP clients can drive srunx over stdio, including run_workflow with sweeps and transport selection. That's not a bolt-on; it's designed so an agent can own the HPC loop. The documentation is structured and honest (Tutorials / How-to / Reference / Explanation — the Diátaxis discipline), the version is a mature-looking v4.1.1, and the feature list reads like it was built by someone who actually runs jobs on a cluster (Apptainer/Pyxis wiring, ProxyJump-aware rsync, bounded SSH pool). The ceiling is adoption and blast radius: this is a focused open-source project with modest stars, so the risk isn't quality, it's whether it's maintained and battle-tested at your scale. For an ML/HPC team already on SLURM who want agent-drivable orchestration, it's a strong, low-cost bet worth piloting.",
    "voice": "Hlido Editor",
    "as_of": "2026-08-19",
    "editor_signature_pending": true
  },
  "tier_rationale": "STEADY (72) for clean execution, real documentation discipline, and genuine agent-native design (a first-class MCP server, not an afterthought). Not higher because it's a niche, modestly-adopted open-source project — maturity-at-scale and long-term maintenance are unproven from the public surface. Not FADING because it's actively versioned (v4.1.1) and feature-complete for its stated scope.",
  "what_it_does_well": [
    "One-line SLURM submits with conda/venv/Apptainer/Pyxis wiring handled for you",
    "Workflows as typed YAML with depends_on, retry, and Jinja-templated args — CI-like ergonomics for HPC",
    "First-class MCP server: agents (Claude Code and others) drive srunx over stdio, including sweeps",
    "Parameter sweeps as a matrix cross-product with per-cell tracking and a bounded SSH pool",
    "Documentation follows the Diátaxis structure (Tutorials/How-to/Reference/Explanation) — a real signal of care"
  ],
  "what_it_fails_at": [
    "Adoption is modest — it's a focused OSS project, so battle-testing at large scale is unproven",
    "SLURM-only by design — no value if your cluster isn't SLURM",
    "Long-term maintenance/bus-factor is unclear from the public surface (single-maintainer risk common to tools this size)",
    "Security/auth posture for the web UI and SSH orchestration isn't detailed on the landing surface"
  ],
  "best_for": [
    "ML/HPC teams already on SLURM who want job orchestration that reads like code",
    "Agent builders who want an MCP-drivable path to submit and monitor cluster jobs",
    "Researchers running hyperparameter sweeps who want per-cell tracking and a DAG dashboard",
    "Anyone wiring Apptainer/Pyxis containers into SLURM without hand-writing sbatch scripts"
  ],
  "not_recommended_for": [
    "Non-SLURM schedulers (Kubernetes, PBS, LSF) — out of scope",
    "Teams needing a vendor-backed SLA and enterprise support contract",
    "Production-critical pipelines that can't tolerate single-maintainer OSS risk without their own fork/ownership plan"
  ],
  "red_flags": [
    "Modest adoption footprint (low star count for a v4.x project) — verify maintenance activity and issue-response before depending on it for production runs."
  ],
  "compared_to": [
    {
      "slug": "snakemake",
      "verdict_diff": "Snakemake is the established workflow engine for scientific computing with far larger adoption; srunx is lighter, SLURM-specific, and crucially agent-drivable via MCP. Choose Snakemake for a proven ecosystem, srunx when you want an agent to own the submit/monitor loop.",
      "preferred_for_axis": "agent-drivable-orchestration"
    }
  ],
  "evidence_urls": [
    {
      "claim": "Orchestrates SLURM jobs with one-line submits",
      "source": "https://ksterx.github.io/srunx/ (Capabilities: Simple submission)",
      "tested_at": "2026-08-19",
      "verified": true
    },
    {
      "claim": "YAML workflows with depends_on, retry and Jinja templating",
      "source": "https://ksterx.github.io/srunx/ (Workflows as YAML)",
      "tested_at": "2026-08-19",
      "verified": true
    },
    {
      "claim": "Ships an MCP server drivable by Claude Code and other MCP clients over stdio",
      "source": "https://ksterx.github.io/srunx/ (Capabilities: MCP server)",
      "tested_at": "2026-08-19",
      "verified": true
    },
    {
      "claim": "Parameter sweeps as a matrix cross-product with per-cell tracking",
      "source": "https://ksterx.github.io/srunx/ (Capabilities: Parameter sweeps)",
      "tested_at": "2026-08-19",
      "verified": true
    },
    {
      "claim": "Web UI dashboard for queue, DAG visualization and run history",
      "source": "https://ksterx.github.io/srunx/ (Capabilities: Web UI)",
      "tested_at": "2026-08-19",
      "verified": true
    }
  ],
  "agent_relevance": {
    "has_api": false,
    "has_cli": true,
    "has_mcp": true,
    "has_webhook": false,
    "has_sdk": true,
    "behavioral_testable": true,
    "agent_integration_path": "First-class MCP server drivable over stdio (run_workflow with sweep/transport params), plus a Python toolkit and CLI (srunx sbatch ...). Open-source and installable, so an evaluating agent can verify behaviour directly. This is one of the more genuinely agent-native tools in its category.",
    "agent_friendly_score": 8
  },
  "checklist": [
    {
      "id": "homepage_loads",
      "pass": true,
      "required": true,
      "tested_at": "2026-08-19T00:00:00Z"
    },
    {
      "id": "primary_value_prop",
      "pass": true,
      "required": true,
      "evidence": "A clean, genuinely agent-native toolkit for orchestrating SLURM jobs as code — w",
      "tested_at": "2026-08-19T00:00:00Z"
    },
    {
      "id": "cta_present",
      "pass": true,
      "required": false,
      "tested_at": "2026-08-19T00:00:00Z"
    },
    {
      "id": "evidence_or_demo",
      "pass": true,
      "required": false,
      "evidence": "4 screenshot(s) captured",
      "tested_at": "2026-08-19T00:00:00Z"
    }
  ],
  "summary": "A clean, genuinely agent-native toolkit for orchestrating SLURM jobs as code — well-executed and MCP-first, with adoption still the open question.",
  "_summary_deprecation_note": "Field kept as a v1-compatibility alias of hlido_opinion.headline. New consumers should read hlido_opinion.{headline,body,voice,as_of}.",
  "staleness_after": "2026-11-19",
  "review_age_days_at_publish": 0,
  "next_review_due_at": "2026-11-19",
  "attestation_url": "/data/attestations/ksterx-srunx.json",
  "signature_pending": true,
  "source": "r-publish-editorial-v2",
  "marking_signal": {
    "not_applicable": true,
    "checked_at": "2026-08-19",
    "source": "r-publish-editorial-enrich"
  },
  "evidence_images": {
    "run_id": "run-224b2a779dbe5b01-ksterx-github-io",
    "base": "https://images.hlido.eu/reviews/ksterx-srunx/run-224b2a779dbe5b01-ksterx-github-io",
    "files": [
      "home.png",
      "page_orchestrate-slurm-jobslike-code.png",
      "pagetutorials_installation_.png",
      "pagehow-to_user_guide_.png"
    ],
    "urls": [
      "https://images.hlido.eu/reviews/ksterx-srunx/run-224b2a779dbe5b01-ksterx-github-io/home.png",
      "https://images.hlido.eu/reviews/ksterx-srunx/run-224b2a779dbe5b01-ksterx-github-io/page_orchestrate-slurm-jobslike-code.png",
      "https://images.hlido.eu/reviews/ksterx-srunx/run-224b2a779dbe5b01-ksterx-github-io/pagetutorials_installation_.png",
      "https://images.hlido.eu/reviews/ksterx-srunx/run-224b2a779dbe5b01-ksterx-github-io/pagehow-to_user_guide_.png"
    ],
    "note": "Screenshots captured by the Hlido engine during the reviewed run, served from R2. `run_id` is the ENGINE run id — it differs from `scorecard.run_id` and is the only one these keys resolve under. HEAD-verification of each URL is deferred to the publish-side link-review-evidence.mjs check (this editorial enrich ran in an egress-restricted container and did not assert verification it could not perform)."
  },
  "pricing_facts": {
    "schema": "pricing-facts/1",
    "model": [
      "open-source"
    ],
    "free_tier": true,
    "last_verified": "2026-08-19",
    "basis": "Derived from Hlido-held evidence only (engine checklist + editorial text); quotes are verbatim from the scorecard; not vendor-supplied; re-derived daily. Verify current prices on the vendor's pricing page.",
    "derived_at": "2026-08-21"
  }
}
