{
  "slug": "io-github-adelinamart-robrain",
  "name": "robrain",
  "auditedAt": "2026-10-24T00:13:05Z",
  "version": "2.4.10",
  "ecosystem": "npm",
  "package": "robrain",
  "disclaimer": "Automated smoke test, not a security guarantee.",
  "complete": true,
  "checks": {
    "versionPin": {
      "status": "pass",
      "detail": "Pinned npm robrain@2.4.10",
      "version": "2.4.10"
    },
    "vulnerabilities": {
      "status": "pass",
      "detail": "No critical, high, or medium advisories were returned.",
      "critical": 0,
      "high": 0,
      "medium": 0,
      "low": 0,
      "packagesScanned": 23
    },
    "license": {
      "status": "pass",
      "detail": "Apache-2.0",
      "spdx": "Apache-2.0"
    },
    "installScripts": {
      "status": "warn",
      "detail": "Install-time scripts: postinstall",
      "scripts": [
        "postinstall"
      ]
    },
    "secrets": {
      "status": "pass",
      "detail": "No credential patterns in the published artifact.",
      "findings": []
    },
    "packageSize": {
      "status": "pass",
      "detail": "548734 bytes",
      "bytes": 548734
    },
    "activity": {
      "status": "pass",
      "detail": "Active 0 days ago.",
      "ageDays": 0
    },
    "sandbox": {
      "status": "warn",
      "detail": "Requires credentials. Started with none.",
      "starts": true,
      "handshake": false,
      "timeToReadyMs": null,
      "tools": [],
      "toolCount": 0,
      "resourceCount": null,
      "promptCount": null,
      "stderrExcerpt": " git reverts against stored decisions\n    npx robrain export --format interchange         Dump memories as portable JSONL (robrain-memory/v1)\n    npx robrain check \"switch tests to Vitest\"      Pre-commit veto scan \u2014 did we already reject this? (exit 1 on match)\n    npx robrain synth --dry-run                     Run Synthesis (no clone needed after `robrain up`; needs the classifier LLM key)\n\n  From a robrain clone instead (dev): pnpm install && pnpm build, pnpm docker:up,\n  then npx robrain install --self-hosted --repo-root <robrain-clone>.\n\n  Cloud quick start (automatic injection, no paste):\n    npx robrain install --token YOUR_TOKEN      Authenticate with Rory Plans\n    npx robrain init-project                    Warm-start memory\n    \u2192 Context injects automatically at task boundaries",
      "requiresCredentials": true,
      "network": "disabled",
      "networkAttemptedWhileOffline": false,
      "outboundHosts": []
    }
  },
  "tier": "listed",
  "tierReason": "Requires credentials, so the sandbox handshake was not completed.",
  "logExcerpt": " git reverts against stored decisions\n    npx robrain export --format interchange         Dump memories as portable JSONL (robrain-memory/v1)\n    npx robrain check \"switch tests to Vitest\"      Pre-commit veto scan \u2014 did we already reject this? (exit 1 on match)\n    npx robrain synth --dry-run                     Run Synthesis (no clone needed after `robrain up`; needs the classifier LLM key)\n\n  From a robrain clone instead (dev): pnpm install && pnpm build, pnpm docker:up,\n  then npx robrain install --self-hosted --repo-root <robrain-clone>.\n\n  Cloud quick start (automatic injection, no paste):\n    npx robrain install --token YOUR_TOKEN      Authenticate with Rory Plans\n    npx robrain init-project                    Warm-start memory\n    \u2192 Context injects automatically at task boundaries"
}
