{
  "data": {
    "a": {
      "slug": "phase",
      "name": "Phase",
      "vendor": "Phi Security Inc.",
      "vendorUrl": "https://phase.dev",
      "kind": "http-api",
      "category": "secrets",
      "summary": "Phase is an open-source secrets manager from Phi Security Inc. with end-to-end encryption, service accounts, secret rotation and audit logs. Agents reach it through a REST API, a CLI and SDKs, on Phase Cloud or self-hosted.",
      "url": "https://www.anchorterminal.com/tools/phase",
      "markdownUrl": "https://www.anchorterminal.com/tools/phase.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/phase.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/phase.json",
      "repo": "https://github.com/phasehq/console",
      "license": "MIT outside the `ee/` directories, which are under the proprietary Phase Console Enterprise licence",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.phase.dev",
      "packages": [
        {
          "registry": "npm",
          "name": "@phase.dev/phase-node"
        },
        {
          "registry": "pypi",
          "name": "phase-dev"
        },
        {
          "registry": "go",
          "name": "github.com/phasehq/golang-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. A person signs in to the console with Google, GitHub or GitLab, creates a service account and a token with an optional expiry, and the agent sends it as `Authorization: Bearer ServiceAccount \u003ctoken\u003e`. Personal access tokens use `Bearer User \u003ctoken\u003e` and inherit the user's role. Tokens can also be created and deleted over the API for service accounts with server-side key management. Workloads on AWS or Azure can log in with an external identity and receive a token with a TTL. Access follows the account's role and its apps and environments, not the individual token.",
      "pricing": "freemium",
      "pricingNotes": "Free plan at $0 with 5 users or service accounts, 3 apps, 3 environments, 24-hour audit logs and 120 API requests a minute. Pro is $10 a user a month ($120 billed yearly) with a 14-day trial, unlimited apps, rotation, custom roles, network access policies, 90-day audit logs and 240 requests a minute. Enterprise is $25 a user a month ($300 yearly) with dynamic secrets, OIDC SSO, SCIM, log forwarding and a 99.99 per cent uptime SLA listed. Only human users are charged, and service accounts are free. The pricing page does not say whether a card is taken. Self-hosting the MIT core is free, and the Pro and Enterprise tiers need a licence (https://phase.dev/pricing/).",
      "priceSummary": "$10 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the API reference or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 928,
        "npmWeekly": 2485,
        "pypiWeekly": 235,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.phase.dev",
      "llmsTxt": "https://docs.phase.dev/llms.txt",
      "capabilities": [
        "secrets.store",
        "secrets.machine-identity",
        "secrets.audit",
        "secrets.self-host",
        "secrets.rotate"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "open-source",
        "freemium",
        "free-tier",
        "cli",
        "llms-txt",
        "go",
        "typescript",
        "python",
        "eu",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-10-04",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68,
        "grade": "B",
        "agentReady": false,
        "rank": 194,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 10,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 56,
          "maintenance": 83,
          "payments": 25,
          "reliability": 91,
          "schema": 58,
          "security": 83,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Service account tokens can be minted with an expiry over the API, every secret read is logged, and the CLI redacts values when it detects an AI agent. No OpenAPI document or pagination was found in the reviewed documentation, and the Free plan keeps audit logs for 24 hours.",
        "bestFor": "Small teams that want an open-source secrets manager hosted in the EU or self-hosted, with coding agents kept away from values through the CLI.",
        "strengths": [
          "Service account tokens take an expiry and can be created and deleted through `/v1/service-accounts/:id/tokens`, and service accounts are free on every plan",
          "The CLI's AI mode redacts `secret` and `sealed` values and blocks `printenv`, `env` and `phase shell` when it detects an agent",
          "Every reveal and every REST fetch of a secret is recorded as a `READ` event with actor and IP address",
          "MIT outside the `ee/` directories, self-hosted with Docker Compose or Kubernetes, with no outbound usage telemetry per the docs",
          "Eleven console versions between 24 July and 8 October 2026, and no incident on the status page since 30 June 2026"
        ],
        "weaknesses": [
          "No OpenAPI document was found. The REST reference is prose with examples, covering 47 operations",
          "No pagination, field selection or idempotency keys were found in the API reference, and errors are a single free-text `error` string",
          "The Free plan keeps audit logs for 24 hours. Rotation, custom roles and network access policies need Pro, and dynamic secrets need Enterprise",
          "The REST API works only on apps with server-side encryption enabled, which gives up end-to-end encryption for that app",
          "The pricing page lists a Phase Agents Relay credential proxy on every plan, but no documentation or CLI command for it was found"
        ],
        "agentNotes": [
          "Enable server-side encryption on the app before calling `/v1/secrets`. Without it the REST API cannot read or write that app's secrets",
          "Send `Authorization: Bearer ServiceAccount \u003ctoken\u003e` for a service account and `Bearer User \u003ctoken\u003e` for a personal access token. The token type is part of the header",
          "Stay under 120 requests a minute per account on Free and 240 on Pro, and wait the seconds in the `retry-after` header on a 429",
          "Treat a 409 on `POST /v1/secrets` as the key already existing at that path, and use `PUT` to change it. Rotating secrets reject `PUT` and `DELETE`",
          "Have a person run `phase ai enable` and choose masked values. The CLI blocks an agent from running `phase ai enable` or `phase ai disable` itself"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68
          }
        ],
        "editorialScores": {
          "ergonomics": 56,
          "maintenance": 83,
          "payments": 25,
          "reliability": 91,
          "schema": 58,
          "security": 83,
          "transparency": 58
        },
        "provenanceScore": 87
      },
      "connect": {
        "install": "curl -fsSL https://pkg.phase.dev/install.sh | sh   # or: brew tap phasehq/cli \u0026\u0026 brew install phase",
        "http": "curl -G https://api.phase.dev/v1/secrets/ -H \"Authorization: Bearer ServiceAccount $PHASE_TOKEN\" \\\n  -d app_id=$PHASE_APP_ID -d env=development",
        "claudeCode": "phase ai enable"
      },
      "letme": {
        "capability": "https://letme.dev/secrets.store",
        "tool": "https://letme.dev/phase"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "seat-month",
          "usd": 10,
          "note": "$120 a user billed yearly. Service accounts free"
        },
        {
          "item": "Enterprise plan",
          "unit": "seat-month",
          "usd": 25,
          "note": "$300 a user billed yearly"
        }
      ],
      "provenance": {
        "legalEntity": "Phi Security Inc.",
        "domain": "phase.dev",
        "domainRegistered": "2023-02-03",
        "endpointOnVendorDomain": true,
        "terms": "https://phase.dev/legal/terms/",
        "privacy": "https://phase.dev/legal/privacy/",
        "statusPage": "https://phase.statuspage.io",
        "changelog": "https://phase.dev/changelog/",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms of service (last updated 6 October 2025) name Phi Security Inc. and cover the website, the Phase Console and the self-hosted version. The site footer gives 8 The Green, Ste A, Dover, DE 19901, United States.",
          "The privacy policy (last updated 11 March 2026) covers phase.dev and the services, gives no retention period in days and refers to the trust centre for the subprocessor list.",
          "security.txt at phase.dev expires on 10 December 2030, lists three contact addresses and points to `SECURITY.md` in the console repository.",
          "trust.phase.dev is drawn by script and gave our reader no text, so the subprocessor list and any DPA were not read.",
          "RDAP for phase.dev gives a registration date of 2023-02-03.",
          "The status page is an Atlassian Statuspage at phase.statuspage.io with components for the console, the API, Cloudflare and AWS eu-central-1."
        ],
        "score": 87
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/phase.json",
      "live": {
        "slug": "phase",
        "probe": {
          "target": "https://api.phase.dev",
          "method": "get",
          "lastAt": "2026-10-08T21:12:18.362967625Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 136,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 126,
          "p95ms24h": 199,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://phase.statuspage.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:21.645663435Z"
        },
        "updatedAt": "2026-10-08T21:12:18.362967625Z"
      }
    },
    "answer": "Pulumi ESC scores 71.1 (BB) on agent readiness against Phase's 68 (B), and leads in 3 of 7 scored categories. Phase leads on reliability and transparency \u0026 trust.",
    "b": {
      "slug": "pulumi-esc",
      "name": "Pulumi ESC",
      "vendor": "Pulumi Corporation",
      "vendorUrl": "https://www.pulumi.com",
      "kind": "http-api",
      "category": "secrets",
      "summary": "Pulumi ESC is the secrets and configuration service in Pulumi Cloud. Environments hold static secrets, pull from other vaults and issue short-lived cloud credentials over OIDC, read through the Pulumi CLI, a REST API and four SDKs.",
      "url": "https://www.anchorterminal.com/tools/pulumi-esc",
      "markdownUrl": "https://www.anchorterminal.com/tools/pulumi-esc.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pulumi-esc.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pulumi-esc.json",
      "repo": "https://github.com/pulumi/esc-sdk",
      "license": "Proprietary service under Pulumi's Terms \u0026 Conditions. The Pulumi CLI, the ESC evaluator and the ESC SDKs are Apache-2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.pulumi.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@pulumi/esc-sdk"
        },
        {
          "registry": "pypi",
          "name": "pulumi-esc-sdk"
        },
        {
          "registry": "go",
          "name": "github.com/pulumi/esc-sdk/sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. Every request sends `Authorization: token \u003ctoken\u003e` to https://api.pulumi.com. A personal token comes from the console and carries all of the user's permissions. Organisation tokens (Essentials and above) and team tokens (Pro and above) are machine tokens that take a role, and custom roles with environment scopes need Pro. A workload on a registered OIDC issuer (GitHub Actions, GitLab CI, EKS, GKE and others) exchanges its ID token for a short-lived Pulumi token with `pulumi login --oidc-token` or POST /api/oauth/token. Under an agent with no credentials the CLI creates an ephemeral account by itself.",
      "pricing": "freemium",
      "pricingNotes": "Free edition with 25 secrets and 10,000 API calls a month for one user, no card. Essentials is $40 a month, Pro $400 and Enterprise $2,000, each including that many credits, with a managed secret at $0.50, $0.75 or $1.00 a month and API calls at $0.10 per 10,000. An agent can start with no contract through the free edition or an agent account (https://www.pulumi.com/pricing/, checked 2026-10-08).",
      "priceSummary": "$0.01 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the ESC docs, the OpenAPI document or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 20661,
        "pypiWeekly": 53903,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.pulumi.com/docs/esc/",
      "llmsTxt": "https://www.pulumi.com/llms.txt",
      "openapi": "https://api.pulumi.com/api/openapi/pulumi-spec.json",
      "capabilities": [
        "secrets.store",
        "secrets.rotate",
        "secrets.machine-identity",
        "secrets.audit"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "freemium",
        "free-tier",
        "no-card",
        "openapi",
        "llms-txt",
        "oidc",
        "cli",
        "typescript",
        "python",
        "go",
        "dotnet",
        "status-page",
        "soc2",
        "enterprise"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 71.1,
        "grade": "BB",
        "agentReady": true,
        "rank": 120,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 75,
          "maintenance": 82,
          "payments": 55,
          "reliability": 60,
          "schema": 82,
          "security": 79,
          "transparency": 65
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "An agent can start without a signup, because the Pulumi CLI creates a free ephemeral account that includes ESC, and the REST API has a public OpenAPI document. Audit logs, custom roles and approvals need the Pro edition at $400 a month, and no API rate limit was found in the reviewed documentation.",
        "bestFor": "Teams already on Pulumi, or anyone who wants one place that composes static secrets, other vaults and short-lived cloud credentials, and agents that need to start with no signup.",
        "strengths": [
          "The Pulumi CLI creates a free ephemeral account for an agent with no signup, with write access for 72 hours and 30 days to claim it",
          "Public OpenAPI 3.0.3 document with 127 ESC operations, an llms.txt and a Markdown copy of every docs page",
          "OIDC issuers exchange a workload's ID token for a short-lived Pulumi token, 25 hours at most by default",
          "Separate read, open and write scopes per environment, with open approvals and update approvals on Pro and Enterprise",
          "Prices published per unit, $0.50 a secret a month on Essentials and $0.10 per 10,000 API calls, with a free edition and no card"
        ],
        "weaknesses": [
          "Audit logs, custom roles, team tokens, approvals and customer-managed keys need Pro ($400 a month) or Enterprise",
          "No API rate limit with numbers was found in the reviewed documentation",
          "No public data processing addendum or subprocessor list was found, and the terms and privacy statement carry no date",
          "The official Pulumi MCP server lists no ESC tools, and the standalone esc CLI was retired at v0.26.0 on 9 July 2026",
          "A 42-minute major incident on 6 October 2026 affected inbound OIDC on the API and ESC, with no detail published",
          "The free edition has personal tokens only, which carry all of the user's permissions"
        ],
        "agentNotes": [
          "Use `pulumi env`, not `esc`. The standalone CLI stopped at v0.26.0 and gets no security fixes",
          "Read one value with `pulumi env open \u003corg\u003e/\u003cproject\u003e/\u003cenv\u003e \u003cproperty path\u003e` so the whole environment doesn't enter context",
          "Run tools with `pulumi env run \u003cenv\u003e -- \u003ccmd\u003e`, which filters secret values from the command's output unless -i is set",
          "Set PULUMI_ACCESS_TOKEN for the SDKs. From 0.14.0 they no longer read the CLI login on disk",
          "Send `Authorization: token \u003ctoken\u003e` and `Accept: application/vnd.pulumi+8` on REST calls, and expect 409 when an environment changed since it was read",
          "Relay the claim link an agent account prints. The account goes read-only after 72 hours and locks after 30 days unclaimed"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 71.1
          }
        ],
        "editorialScores": {
          "ergonomics": 75,
          "maintenance": 82,
          "payments": 55,
          "reliability": 60,
          "schema": 82,
          "security": 79,
          "transparency": 48
        },
        "provenanceScore": 82
      },
      "connect": {
        "install": "curl -fsSL https://get.pulumi.com | sh",
        "http": "curl -H \"Authorization: token $PULUMI_ACCESS_TOKEN\" \\\n     -H \"Accept: application/vnd.pulumi+8\" \\\n     https://api.pulumi.com/api/user"
      },
      "letme": {
        "capability": "https://letme.dev/secrets.store",
        "tool": "https://letme.dev/pulumi-esc"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "ESC API calls",
          "unit": "1k-requests",
          "usd": 0.01,
          "note": "$0.10 per 10,000. First 10,000 a month free on the free edition"
        },
        {
          "item": "Essentials edition",
          "unit": "month",
          "usd": 40,
          "note": "Includes 40 credits. A managed secret is $0.50 a month"
        },
        {
          "item": "Pro edition",
          "unit": "month",
          "usd": 400,
          "note": "Includes 400 credits. A managed secret is $0.75 a month"
        },
        {
          "item": "Enterprise edition",
          "unit": "month",
          "usd": 2000,
          "note": "Includes 2,000 credits. A managed secret is $1.00 a month"
        }
      ],
      "provenance": {
        "legalEntity": "Pulumi Corporation",
        "domain": "pulumi.com",
        "domainRegistered": "2017-02-13",
        "endpointOnVendorDomain": true,
        "terms": "https://www.pulumi.com/terms-and-conditions/",
        "privacy": "https://www.pulumi.com/privacy/",
        "statusPage": "https://status.pulumi.com",
        "changelog": "https://www.pulumi.com/releases/changelog/",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Terms \u0026 Conditions govern use of the Pulumi Services and name Pulumi Corporation, 601 Union St., Suite 1415, Seattle, WA 98101, with Washington law and King County courts. We found no date on the page.",
          "The privacy statement covers customers who register to use the services and gives privacy@pulumi.com as contact. We found no date on the page.",
          "www.pulumi.com/.well-known/security.txt and www.pulumi.com/security.txt both return 404. The security page gives security@pulumi.com and a PGP key.",
          "status.pulumi.com is Atlassian Statuspage with an ESC component. Its incident feed goes back to October 2023.",
          "No data processing addendum or subprocessor list was found on www.pulumi.com. The addresses we tried returned 404 and the sitemap lists neither.",
          "RDAP for pulumi.com gives a registration date of 2017-02-13."
        ],
        "score": 82
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pulumi-esc.json",
      "live": {
        "slug": "pulumi-esc",
        "probe": {
          "target": "https://api.pulumi.com",
          "method": "get",
          "lastAt": "2026-10-08T21:12:19.222407709Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 155,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 159,
          "p95ms24h": 247,
          "samples24h": 41,
          "samples30d": 41,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 41,
              "ok": 41
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.pulumi.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:22.914502628Z"
        },
        "pages": [
          {
            "url": "https://www.pulumi.com/releases/changelog/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:52.955269848Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ddd6467eba9b"
          },
          {
            "url": "https://www.pulumi.com/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:48.804855492Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ba84dc7bc768"
          },
          {
            "url": "https://www.pulumi.com/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:51.056197289Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "96eac852b529"
          },
          {
            "url": "https://www.pulumi.com/terms-and-conditions/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:55.102680068Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "660bfdce2184"
          }
        ],
        "updatedAt": "2026-10-08T21:12:19.222407709Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Phi Security Inc.",
        "b": "Pulumi Corporation",
        "name": "Vendor"
      },
      {
        "a": "https://api.phase.dev",
        "b": "https://api.pulumi.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT outside the `ee/` directories, which are under the proprietary Phase Console Enterprise licence",
        "b": "Proprietary service under Pulumi's Terms \u0026 Conditions. The Pulumi CLI, the ESC evaluator and the ESC SDKs are Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-04",
        "b": "2026-10-07",
        "name": "Last release"
      },
      {
        "a": "2025-10-06",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-03-11",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "928 stars, 2.5k npm/wk, 235 PyPI/wk",
        "b": "21k npm/wk, 54k PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Pulumi ESC scores 71.1 (BB) on agent readiness against Phase's 68 (B), and leads in 3 of 7 scored categories. Phase leads on reliability and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Phase or Pulumi ESC?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Phase and Pulumi ESC need an API key?"
      },
      {
        "answer": "Yes. Phase has a hosted endpoint at https://api.phase.dev and Pulumi ESC at https://api.pulumi.com.",
        "question": "Can an agent call Phase and Pulumi ESC without installing anything?"
      },
      {
        "answer": "Phase is open source (MIT outside the `ee/` directories, which are under the proprietary Phase Console Enterprise licence). No open-source release is listed for Pulumi ESC.",
        "question": "Are Phase and Pulumi ESC open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 91 against 60",
          "Transparency \u0026 trust, 73 against 65"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "Small teams that want an open-source secrets manager hosted in the EU or self-hosted, with coding agents kept away from values through the CLI.",
        "slug": "phase",
        "watchFor": "No OpenAPI document was found. The REST reference is prose with examples, covering 47 operations"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 82 against 58",
          "Agent ergonomics, 75 against 56",
          "Payments \u0026 pricing, 55 against 25"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Free to start without a card"
        ],
        "goodFor": "Teams already on Pulumi, or anyone who wants one place that composes static secrets, other vaults and short-lived cloud credentials, and agents that need to start with no signup.",
        "slug": "pulumi-esc",
        "watchFor": "Audit logs, custom roles, team tokens, approvals and customer-managed keys need Pro ($400 a month) or Enterprise"
      }
    ],
    "job": {
      "capability": "secrets.store",
      "name": "Secrets store"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/1password-vs-phase.json",
        "title": "1Password service accounts, SDKs and Environments MCP vs Phase",
        "url": "https://www.anchorterminal.com/compare/1password-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/1password-vs-pulumi-esc.json",
        "title": "1Password service accounts, SDKs and Environments MCP vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/1password-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/akeyless-vs-phase.json",
        "title": "Akeyless (SecretlessAI and MCP server) vs Phase",
        "url": "https://www.anchorterminal.com/compare/akeyless-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/akeyless-vs-pulumi-esc.json",
        "title": "Akeyless (SecretlessAI and MCP server) vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/akeyless-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aws-secrets-manager-vs-phase.json",
        "title": "AWS Secrets Manager vs Phase",
        "url": "https://www.anchorterminal.com/compare/aws-secrets-manager-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aws-secrets-manager-vs-pulumi-esc.json",
        "title": "AWS Secrets Manager vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/aws-secrets-manager-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-key-vault-vs-phase.json",
        "title": "Azure Key Vault vs Phase",
        "url": "https://www.anchorterminal.com/compare/azure-key-vault-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-key-vault-vs-pulumi-esc.json",
        "title": "Azure Key Vault vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/azure-key-vault-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitwarden-secrets-manager-vs-phase.json",
        "title": "Bitwarden Secrets Manager vs Phase",
        "url": "https://www.anchorterminal.com/compare/bitwarden-secrets-manager-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bitwarden-secrets-manager-vs-pulumi-esc.json",
        "title": "Bitwarden Secrets Manager vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/bitwarden-secrets-manager-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doppler-vs-phase.json",
        "title": "Doppler vs Phase",
        "url": "https://www.anchorterminal.com/compare/doppler-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/doppler-vs-pulumi-esc.json",
        "title": "Doppler vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/doppler-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-secret-manager-vs-phase.json",
        "title": "Google Cloud Secret Manager vs Phase",
        "url": "https://www.anchorterminal.com/compare/google-secret-manager-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-secret-manager-vs-pulumi-esc.json",
        "title": "Google Cloud Secret Manager vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/google-secret-manager-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hashicorp-vault-vs-phase.json",
        "title": "HashiCorp Vault + Vault MCP Server vs Phase",
        "url": "https://www.anchorterminal.com/compare/hashicorp-vault-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hashicorp-vault-vs-pulumi-esc.json",
        "title": "HashiCorp Vault + Vault MCP Server vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/hashicorp-vault-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/infisical-vs-phase.json",
        "title": "Infisical vs Phase",
        "url": "https://www.anchorterminal.com/compare/infisical-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/infisical-vs-pulumi-esc.json",
        "title": "Infisical vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/infisical-vs-pulumi-esc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/keeper-secrets-manager-vs-phase.json",
        "title": "Keeper Secrets Manager vs Phase",
        "url": "https://www.anchorterminal.com/compare/keeper-secrets-manager-vs-phase"
      },
      {
        "json": "https://www.anchorterminal.com/compare/keeper-secrets-manager-vs-pulumi-esc.json",
        "title": "Keeper Secrets Manager vs Pulumi ESC",
        "url": "https://www.anchorterminal.com/compare/keeper-secrets-manager-vs-pulumi-esc"
      }
    ],
    "scores": [
      {
        "by": 31,
        "edge": "phase",
        "key": "reliability",
        "name": "Reliability",
        "phase": 91,
        "pulumi-esc": 60,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 24,
        "edge": "pulumi-esc",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "phase": 58,
        "pulumi-esc": 82,
        "weight": 13
      },
      {
        "by": 19,
        "edge": "pulumi-esc",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "phase": 56,
        "pulumi-esc": 75,
        "weight": 13
      },
      {
        "by": 4,
        "edge": "phase",
        "key": "security",
        "name": "Security \u0026 auth",
        "phase": 83,
        "pulumi-esc": 79,
        "weight": 14
      },
      {
        "by": 30,
        "edge": "pulumi-esc",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "phase": 25,
        "pulumi-esc": 55,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "edge": "phase",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "phase": 83,
        "pulumi-esc": 82,
        "weight": 7
      },
      {
        "by": 8,
        "edge": "phase",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "phase": 73,
        "pulumi-esc": 65,
        "weight": 7
      }
    ],
    "summary": "Pulumi ESC scores 71.1 (BB) on agent readiness against Phase's 68 (B), and leads in 3 of 7 scored categories. Phase leads on reliability and transparency \u0026 trust. Both do secrets store.",
    "verdicts": {
      "phase": "Service account tokens can be minted with an expiry over the API, every secret read is logged, and the CLI redacts values when it detects an AI agent. No OpenAPI document or pagination was found in the reviewed documentation, and the Free plan keeps audit logs for 24 hours.",
      "pulumi-esc": "An agent can start without a signup, because the Pulumi CLI creates a free ephemeral account that includes ESC, and the REST API has a public OpenAPI document. Audit logs, custom roles and approvals need the Pro edition at $400 a month, and no API rate limit was found in the reviewed documentation."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/phase-vs-pulumi-esc",
    "json": "https://www.anchorterminal.com/compare/phase-vs-pulumi-esc.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/phase-vs-pulumi-esc.md",
    "slim": "https://www.anchorterminal.com/compare/phase-vs-pulumi-esc.min.md"
  },
  "markdown": "Pulumi ESC scores 71.1 (BB) on agent readiness against Phase's 68 (B), and leads in 3 of 7 scored categories. Phase leads on reliability and transparency \u0026 trust. Both do secrets store.\n\n- Phase: grade B, 68/100, rank #194 of 722. Markdown https://www.anchorterminal.com/tools/phase.md · JSON https://www.anchorterminal.com/api/v1/tools/phase.json\n- Pulumi ESC: grade BB, 71.1/100, rank #120 of 722. Markdown https://www.anchorterminal.com/tools/pulumi-esc.md · JSON https://www.anchorterminal.com/api/v1/tools/pulumi-esc.json\n\n## Which one, for what\n\n### Phase (B)\n\nGood for: Small teams that want an open-source secrets manager hosted in the EU or self-hosted, with coding agents kept away from values through the CLI.\n\nAhead on:\n- Reliability, 91 against 60\n- Transparency \u0026 trust, 73 against 65\n\nAlso in its favour:\n- Open source\n\nWatch for: No OpenAPI document was found. The REST reference is prose with examples, covering 47 operations\n\n### Pulumi ESC (BB)\n\nGood for: Teams already on Pulumi, or anyone who wants one place that composes static secrets, other vaults and short-lived cloud credentials, and agents that need to start with no signup.\n\nAhead on:\n- Schema \u0026 documentation, 82 against 58\n- Agent ergonomics, 75 against 56\n- Payments \u0026 pricing, 55 against 25\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Free to start without a card\n\nWatch for: Audit logs, custom roles, team tokens, approvals and customer-managed keys need Pro ($400 a month) or Enterprise\n\n\n## Score by category\n\n| Category | Weight | Phase | Pulumi ESC | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 91 | 60 | Phase +31 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 58 | 82 | Pulumi ESC +24 |\n| Agent ergonomics | 13% (16.2 this run) | 56 | 75 | Pulumi ESC +19 |\n| Security \u0026 auth | 14% (17.5 this run) | 83 | 79 | Phase +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 25 | 55 | Pulumi ESC +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 82 | Phase +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 73 | 65 | Phase +8 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **68 · B** | **71.1 · BB** | |\n\n## Facts side by side\n\n| Fact | Phase | Pulumi ESC |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Phi Security Inc. | Pulumi Corporation |\n| Hosted endpoint | `https://api.phase.dev` | `https://api.pulumi.com` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | MIT outside the `ee/` directories, which are under the proprietary Phase Console Enterprise licence | Proprietary service under Pulumi's Terms \u0026 Conditions. The Pulumi CLI, the ESC evaluator and the ESC SDKs are Apache-2.0 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| Last release | 2026-10-04 | 2026-10-07 |\n| Terms last updated | 2025-10-06 | no date given |\n| Privacy policy last updated | 2026-03-11 | no date given |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 928 stars, 2.5k npm/wk, 235 PyPI/wk | 21k npm/wk, 54k PyPI/wk |\n\n## Verdicts\n\n**Phase.** Service account tokens can be minted with an expiry over the API, every secret read is logged, and the CLI redacts values when it detects an AI agent. No OpenAPI document or pagination was found in the reviewed documentation, and the Free plan keeps audit logs for 24 hours.\n\n**Pulumi ESC.** An agent can start without a signup, because the Pulumi CLI creates a free ephemeral account that includes ESC, and the REST API has a public OpenAPI document. Audit logs, custom roles and approvals need the Pro edition at $400 a month, and no API rate limit was found in the reviewed documentation.\n\n## Before you call either\n\n### Phase\n\n1. Enable server-side encryption on the app before calling `/v1/secrets`. Without it the REST API cannot read or write that app's secrets\n2. Send `Authorization: Bearer ServiceAccount \u003ctoken\u003e` for a service account and `Bearer User \u003ctoken\u003e` for a personal access token. The token type is part of the header\n3. Stay under 120 requests a minute per account on Free and 240 on Pro, and wait the seconds in the `retry-after` header on a 429\n4. Treat a 409 on `POST /v1/secrets` as the key already existing at that path, and use `PUT` to change it. Rotating secrets reject `PUT` and `DELETE`\n5. Have a person run `phase ai enable` and choose masked values. The CLI blocks an agent from running `phase ai enable` or `phase ai disable` itself\n\n### Pulumi ESC\n\n1. Use `pulumi env`, not `esc`. The standalone CLI stopped at v0.26.0 and gets no security fixes\n2. Read one value with `pulumi env open \u003corg\u003e/\u003cproject\u003e/\u003cenv\u003e \u003cproperty path\u003e` so the whole environment doesn't enter context\n3. Run tools with `pulumi env run \u003cenv\u003e -- \u003ccmd\u003e`, which filters secret values from the command's output unless -i is set\n4. Set PULUMI_ACCESS_TOKEN for the SDKs. From 0.14.0 they no longer read the CLI login on disk\n5. Send `Authorization: token \u003ctoken\u003e` and `Accept: application/vnd.pulumi+8` on REST calls, and expect 409 when an environment changed since it was read\n6. Relay the claim link an agent account prints. The account goes read-only after 72 hours and locks after 30 days unclaimed\n\n## Questions\n\n### Which is better for AI agents, Phase or Pulumi ESC?\n\nPulumi ESC scores 71.1 (BB) on agent readiness against Phase's 68 (B), and leads in 3 of 7 scored categories. Phase leads on reliability and transparency \u0026 trust.\n\n### Do Phase and Pulumi ESC need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Phase and Pulumi ESC without installing anything?\n\nYes. Phase has a hosted endpoint at https://api.phase.dev and Pulumi ESC at https://api.pulumi.com.\n\n### Are Phase and Pulumi ESC open source?\n\nPhase is open source (MIT outside the `ee/` directories, which are under the proprietary Phase Console Enterprise licence). No open-source release is listed for Pulumi ESC.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/phase-vs-pulumi-esc.json, and with the fewest tokens: https://www.anchorterminal.com/compare/phase-vs-pulumi-esc.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"phase\", \"b\": \"pulumi-esc\"}`. From a terminal: `anchor compare phase pulumi-esc`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/phase.json and https://www.anchorterminal.com/api/v1/tools/pulumi-esc.json\n\n## Other comparisons with Phase or Pulumi ESC\n\n- [1Password service accounts, SDKs and Environments MCP vs Phase](https://www.anchorterminal.com/compare/1password-vs-phase.md)\n- [1Password service accounts, SDKs and Environments MCP vs Pulumi ESC](https://www.anchorterminal.com/compare/1password-vs-pulumi-esc.md)\n- [Akeyless (SecretlessAI and MCP server) vs Phase](https://www.anchorterminal.com/compare/akeyless-vs-phase.md)\n- [Akeyless (SecretlessAI and MCP server) vs Pulumi ESC](https://www.anchorterminal.com/compare/akeyless-vs-pulumi-esc.md)\n- [AWS Secrets Manager vs Phase](https://www.anchorterminal.com/compare/aws-secrets-manager-vs-phase.md)\n- [AWS Secrets Manager vs Pulumi ESC](https://www.anchorterminal.com/compare/aws-secrets-manager-vs-pulumi-esc.md)\n- [Azure Key Vault vs Phase](https://www.anchorterminal.com/compare/azure-key-vault-vs-phase.md)\n- [Azure Key Vault vs Pulumi ESC](https://www.anchorterminal.com/compare/azure-key-vault-vs-pulumi-esc.md)\n- [Bitwarden Secrets Manager vs Phase](https://www.anchorterminal.com/compare/bitwarden-secrets-manager-vs-phase.md)\n- [Bitwarden Secrets Manager vs Pulumi ESC](https://www.anchorterminal.com/compare/bitwarden-secrets-manager-vs-pulumi-esc.md)\n- [Doppler vs Phase](https://www.anchorterminal.com/compare/doppler-vs-phase.md)\n- [Doppler vs Pulumi ESC](https://www.anchorterminal.com/compare/doppler-vs-pulumi-esc.md)\n- [Google Cloud Secret Manager vs Phase](https://www.anchorterminal.com/compare/google-secret-manager-vs-phase.md)\n- [Google Cloud Secret Manager vs Pulumi ESC](https://www.anchorterminal.com/compare/google-secret-manager-vs-pulumi-esc.md)\n- [HashiCorp Vault + Vault MCP Server vs Phase](https://www.anchorterminal.com/compare/hashicorp-vault-vs-phase.md)\n- [HashiCorp Vault + Vault MCP Server vs Pulumi ESC](https://www.anchorterminal.com/compare/hashicorp-vault-vs-pulumi-esc.md)\n- [Infisical vs Phase](https://www.anchorterminal.com/compare/infisical-vs-phase.md)\n- [Infisical vs Pulumi ESC](https://www.anchorterminal.com/compare/infisical-vs-pulumi-esc.md)\n- [Keeper Secrets Manager vs Phase](https://www.anchorterminal.com/compare/keeper-secrets-manager-vs-phase.md)\n- [Keeper Secrets Manager vs Pulumi ESC](https://www.anchorterminal.com/compare/keeper-secrets-manager-vs-pulumi-esc.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Phase vs Pulumi ESC",
        "url": ""
      }
    ],
    "description": "Pulumi ESC scores 71.1 (BB) on agent readiness against Phase's 68 (B), and leads in 3 of 7 scored categories. Phase leads on reliability and transparency \u0026 trust. Both do secrets store. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Phase B 68",
      "Pulumi ESC BB 71.1",
      "scores"
    ],
    "h1": "Phase vs Pulumi ESC",
    "image": "https://www.anchorterminal.com/assets/og/compare-phase-vs-pulumi-esc.png",
    "path": "/compare/phase-vs-pulumi-esc",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Phase vs Pulumi ESC for AI agents, B 68 vs BB 71.1 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/phase-vs-pulumi-esc"
  },
  "tokens": {
    "markdown": 2500,
    "slim": 680
  },
  "version": 1
}
