{
  "$schema": "https://cendor.ai/releases.json",
  "asOf": "2026-07-28",
  "docs": "https://cendor.ai/releases",
  "note": "Versions are INDEPENDENT across languages; the parity matrix (https://cendor.ai/docs/languages), not matching numbers, is the contract. Cendor never auto-upgrades and never checks for updates at runtime — this feed is for tools you invoke deliberately.",
  "libraries": [
    {
      "name": "core",
      "pypi": "cendor-core",
      "pypiVer": "1.14.2",
      "npm": "core",
      "npmVer": "3.0.1"
    },
    {
      "name": "tokenguard",
      "pypi": "cendor-tokenguard",
      "pypiVer": "1.6.1",
      "npm": "tokenguard",
      "npmVer": "3.0.0"
    },
    {
      "name": "guardrails",
      "pypi": "cendor-guardrails",
      "pypiVer": "1.6.1",
      "npm": "guardrails",
      "npmVer": "3.0.0"
    },
    {
      "name": "contextkit",
      "pypi": "cendor-contextkit",
      "pypiVer": "1.0.3",
      "npm": "contextkit",
      "npmVer": "3.0.1"
    },
    {
      "name": "squeeze",
      "pypi": "cendor-squeeze",
      "pypiVer": "1.1.1",
      "npm": "squeeze",
      "npmVer": "3.0.0"
    },
    {
      "name": "cassette",
      "pypi": "cendor-cassette",
      "pypiVer": "1.1.1",
      "npm": "cassette",
      "npmVer": "3.0.0"
    },
    {
      "name": "acttrace",
      "pypi": "cendor-acttrace",
      "pypiVer": "1.14.0",
      "npm": "acttrace",
      "npmVer": "3.1.0"
    },
    {
      "name": "libs (umbrella)",
      "pypi": "cendor-libs",
      "pypiVer": "1.2.0",
      "npm": "libs",
      "npmVer": "3.0.0"
    },
    {
      "name": "cendor (alias)",
      "pypi": "cendor",
      "pypiVer": "1.1.0",
      "npm": "",
      "npmVer": ""
    }
  ],
  "sdk": [
    {
      "name": "sdk",
      "pypi": "cendor-sdk",
      "pypiVer": "1.20.0",
      "npm": "sdk",
      "npmVer": "3.0.3"
    }
  ],
  "devtooling": [
    {
      "name": "mcp",
      "pypi": "cendor-mcp",
      "pypiVer": "0.1.7",
      "npm": "mcp",
      "npmVer": "0.1.7"
    },
    {
      "name": "init",
      "pypi": "cendor-init",
      "pypiVer": "0.3.0",
      "npm": "init",
      "npmVer": "0.4.1"
    }
  ],
  "container": [
    {
      "name": "monitor",
      "image": "ghcr.io/cendorhq/cendor-monitor",
      "tag": "0.15.0",
      "note": "optional self-hosted observability container; the image is PUBLIC on ghcr (multi-arch amd64 + arm64, no login), even though its source repo stays private. 0.15.0 adds the downgrade guard — an image that opens a store written by a NEWER image refuses to start (naming door/stored/supported) instead of stamping schema_version backwards; the check runs before any DDL, so a refusal leaves the store as found. Startup behaviour changed, hence a minor. The operations docs gain the upgrade contract: your audit evidence was never in this container, upgrading is additive and lossless, retention (7 days per door) is what removes data, and :latest moves — pin a tag."
    }
  ]
}
