公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-27 21:40 UTC

superserve-ai / superserve

Sandbox infrastructure for AI Agents

TypeScript · PythonApache-2.0★ 434 星标⑂ 50 复刻始于 2025年10月在 GitHub 上查看 ↗

superserve-ai/superserve 的健康指数为 100 分中的 74 分,处于「良好」区间。 其得分最高的类别是Engineering Quality(88/100),最低的是Security(54/100)。 最近一次更新在今天。 近期的大部分工作由 2 位贡献者完成。

74
总分 / 100
良好

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

74
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

18 关注者13 个公开仓库始于 2025年8月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

84良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
22.2/36提交节奏 — 52 周中有 32 周有提交
18/18提交量 — 最近一年 225 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year225
human_commit_share1
days_since_last_push0
active_weeks_last_year32

发布纪律

81良好
评分方式
27/27有发布版本 — 已发布 3 个发布版本
27/36发布时效 — 最近一次发布版本于 148 天前
27/27发布节奏 — 约每 2.6 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count3
latest_release_tagv1.1.0
releases_from_tags
days_since_latest_release148
mean_days_between_releases2.6

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

67中等 · 占总体的 18%
评分方式
42.8/60星标 — 434 个星标
14.1/25复刻 — 50 个复刻
0/15关注者 — 1 位关注者
所用输入
forks50
stars434
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

77良好
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(Apache-2.0)
18/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
6.3/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template
评分方式
54.9/80月度下载量 — npm, pypi 合计每月 13,159 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packages@superserve/cli, @superserve/mcp, @superserve/sdk, superserve
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads13,159
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

70良好 · 占总体的 24%
评分方式
25.2/54巴士系数 — 2 位贡献者贡献了半数提交
13.7/22.5提交分布 — 头号贡献者编写了 39% 的提交
9.5/13.5贡献者广度 — 7 位贡献者
6/10OpenSSF Scorecard:Contributors — project has 2 contributing companies or organizations -- score normalized to 6
所用输入
bus_factor2
contributors_sampled7
top_contributor_share0.392
评分方式
43.2/46.8议题解决 — 92% 的议题已关闭
31.6/38.3PR 接受 — 已裁定的 PR 中 215/260 已合并
10.5/15OpenSSF Scorecard:Code-Review — Found 23/30 approved changesets -- score normalized to 7
所用输入
merged_prs215
open_issues2
closed_issues24
issue_closed_ratio0.923
closed_unmerged_prs45
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
9.2/25所有者影响力 — superserve-ai 有 18 位关注者
10.3/25既往记录 — 13 个公开仓库,账户约 0 年
所用输入
followers18
owner_typeOrganization
is_verified
owner_loginsuperserve-ai
public_repos13
account_age_days353
评分方式
25/25已发布且可解析 — npm, pypi 上有 4 个软件包
35/35发布时效 — 最近一次发布于 6 天前
20/20版本历史 — 22 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packages@superserve/cli, @superserve/mcp, @superserve/sdk, superserve
ecosystemsnpm, pypi
any_deprecated
min_days_since_publish6

工程质量

基础的工程与文档实践是否到位?

88优秀 · 占总体的 20%

工程实践

94优秀
评分方式
24/24CI 工作流 — 6 个工作流
24/24存在测试
16/16Linter 配置
9.6/9.6Pre-commit 钩子
0/6.4.editorconfig
20/20OpenSSF Scorecard:CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

80良好
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://superserve.ai?utm_source=github&utm_medium=referral&utm_campaign=repo_bio
10/10仓库描述
0/10主题标签
0/10Wiki
所用输入
topics
has_wiki
homepagehttps://superserve.ai?utm_source=github&utm_medium=referral&utm_campaign=repo_bio
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

54中等 · 占总体的 16%

安全态势

43存在风险
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — 无数据
2.5/2.5CI-Tests — 30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
5.2/7.5Code-Review — Found 23/30 approved changesets -- score normalized to 7
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 145 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4.3
已排除计分(无数据或不适用):branch_protection。 其余权重已重新归一化。
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
25/25间接依赖不含已知公告 — 没有间接依赖携带已知公告
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories0
affected_packages0
assessed_packages12
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
已排除计分(无数据或不适用):没有长期未处理的公告。 其余权重已重新归一化。 比对的是 pypi:superserve@0.8.1 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 12 个软件包。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

75良好 · 占总体的 0%
评分方式
45/45代理指令 — CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 97 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.97
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes5,451
评分方式
0/18一条命令的引导启动
22/22自动化测试
11/11Lint / 格式化配置
11/11静态类型检查 — apps/console/tsconfig.json, apps/mcp/tsconfig.json, apps/ui-docs/tsconfig.json, examples/loops/tsconfig.json, packages/cli/tsconfig.json, packages/mcp/tsconfig.json, packages/python-sdk/src/superserve/py.typed, packages/sdk/tsconfig.json, packages/ui/tsconfig.json, tests/sdk-e2e-ts/tsconfig.json
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 9 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilesuv.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configsapps/console/tsconfig.json, apps/mcp/tsconfig.json, apps/ui-docs/tsconfig.json, examples/loops/tsconfig.json, packages/cli/tsconfig.json, packages/mcp/tsconfig.json, packages/python-sdk/src/superserve/py.typed, packages/sdk/tsconfig.json, packages/ui/tsconfig.json, tests/sdk-e2e-ts/tsconfig.json
agent_commit_share0.09
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
55/55可控的文件大小 — 采样的 573 个源文件中有 0 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes36,990
source_files_sampled573
oversized_source_files0
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
40/40可运行示例 — cookbook, examples, recipes
所用输入
example_dirscookbook, examples, recipes
has_mcp_signal
api_schema_files

关键数据

434GitHub 星标
7贡献者
225最近 12 个月提交数
0距最近推送天数
3发布版本数
2巴士系数(bus factor)
2开放议题
npm, PyPI软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

更多细节

Star 与 Fork 历史 0 ★ / 50 ⇿
0Star
50Fork
3发布

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

0102030405050162025-112026-032026-07
主版本 1次版本 1修订 1
OpenSSF Scorecard 4.3 / 10
4.3综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-27 21:40 UTC

10Binary-Artifactsno binaries found in the repo
不适用Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests30 out of 30 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
7Code-ReviewFound 23/30 approved changesets -- score normalized to 7
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities145 existing vulnerabilities detected
直接依赖 75
注册表软件包版本约束清单文件
npm@react-email/components^1.0.11package.json
npm@supabase/ssr^0.10.0package.json
npm@supabase/supabase-js^2.101.1package.json
npm@tailwindcss/postcss^4.2.2package.json
npm@types/node^25.5.2package.json
npm@vitejs/plugin-react^5.1.4package.json
npmcmdk^1.1.1package.json
npmhappy-dom^20.8.9package.json
npmnext^16.2.2package.json
npmpostcss^8.5.8package.json
npmposthog-js^1.364.7package.json
npmposthog-node^5.28.11package.json
npmresend^6.10.0package.json
npmtailwindcss^4.2.2package.json
npmvitest^4.1.2package.json
npm@phosphor-icons/react^2.1.7apps/console/package.json
npm@react-email/components^1.0.7apps/console/package.json
npm@supabase/ssr^0.10.0apps/console/package.json
npm@supabase/supabase-js^2.98.0apps/console/package.json
npm@superserve/uiworkspace:*apps/console/package.json
npm@tanstack/react-query^5.96.2apps/console/package.json
npm@xterm/addon-clipboard^0.2.0apps/console/package.json
npm@xterm/addon-fit^0.11.0apps/console/package.json
npm@xterm/addon-image^0.9.0apps/console/package.json
npm@xterm/addon-ligatures^0.10.0apps/console/package.json
npm@xterm/addon-search^0.16.0apps/console/package.json
npm@xterm/addon-serialize^0.14.0apps/console/package.json
npm@xterm/addon-unicode11^0.9.0apps/console/package.json
npm@xterm/addon-web-links^0.12.0apps/console/package.json
npm@xterm/addon-webgl^0.19.0apps/console/package.json
npm@xterm/xterm^6.0.0apps/console/package.json
npmcmdk^1.1.1apps/console/package.json
npmmotion^12.0.0apps/console/package.json
npmnext^16.1.6apps/console/package.json
npmposthog-js^1.353.0apps/console/package.json
npmposthog-node^5.25.0apps/console/package.json
npmreact^19.2.4apps/console/package.json
npmreact-dom^19.2.4apps/console/package.json
npmresend^6.9.2apps/console/package.json
npmzod^3.25.67apps/console/package.json
npm@superserve/mcpworkspace:*apps/mcp/package.json
npmnext^16.1.6apps/mcp/package.json
npmreact^19.2.4apps/mcp/package.json
npmreact-dom^19.2.4apps/mcp/package.json
npm@phosphor-icons/react^2.1.7apps/ui-docs/package.json
npm@superserve/uiworkspace:*apps/ui-docs/package.json
npm@tailwindcss/vite^4.2.1apps/ui-docs/package.json
npmreact^19.0.0apps/ui-docs/package.json
npmreact-dom^19.0.0apps/ui-docs/package.json
npmreact-router^7apps/ui-docs/package.json
npmshiki^3apps/ui-docs/package.json
npmtailwindcss^4.2.1apps/ui-docs/package.json
npm@superserve/sdkworkspace:*packages/cli/package.json
npmboxen^8.0.1packages/cli/package.json
npmcli-table3^0.6.5packages/cli/package.json
npmcommander^14.0.3packages/cli/package.json
npmjs-yaml^4.1.0packages/cli/package.json
npmpicocolors^1.1.1packages/cli/package.json
npmposthog-node^5.25.0packages/cli/package.json
npmtar-stream^3.1.7packages/cli/package.json
npmterminal-link^5.0.0packages/cli/package.json
npm@modelcontextprotocol/sdk^1.29.0packages/mcp/package.json
npm@superserve/sdkworkspace:*packages/mcp/package.json
npmzod^3.25.0packages/mcp/package.json
PyPIhttpx>=0.24.0packages/python-sdk/pyproject.toml
PyPIpydantic>=2.0.0packages/python-sdk/pyproject.toml
PyPItyping-extensions>=4.0.0packages/python-sdk/pyproject.toml
PyPIwebsockets>=12.0packages/python-sdk/pyproject.toml
npm@base-ui/react^1.3.0packages/ui/package.json
npm@phosphor-icons/react^2.1.7packages/ui/package.json
npm@superserve/tailwind-configworkspace:*packages/ui/package.json
npmclsx^2.1.1packages/ui/package.json
npmmotion^12.0.0packages/ui/package.json
npmshiki^4.0.0packages/ui/package.json
npmtailwind-merge^3.4.0packages/ui/package.json
全部依赖 未采集

本报告未能采集到解析后的依赖集合:GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

依赖安全公告 0

安装 pypi:superserve@0.8.1 会引入 12 个包(直接与传递):其中 0 个存在已知公告,0 个为直接依赖。

没有已知公告影响已评估的依赖。

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 7266,
      "has_wiki": false,
      "homepage": "https://superserve.ai?utm_source=github&utm_medium=referral&utm_campaign=repo_bio",
      "languages": {
        "CSS": 6341,
        "HTML": 664,
        "Ruby": 1058,
        "Shell": 3132,
        "Python": 400451,
        "JavaScript": 56615,
        "TypeScript": 1792489
      },
      "pushed_at": "2026-07-27T17:03:51Z",
      "created_at": "2025-10-10T01:33:24Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-27T05:19:22Z",
      "description": "Sandbox infrastructure for AI Agents",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "Python"
      ]
    },
    "owner": {
      "blog": "https://superserve.ai",
      "name": "Superserve",
      "type": "Organization",
      "login": "superserve-ai",
      "company": null,
      "location": "United States of America",
      "followers": 18,
      "avatar_url": "https://avatars.githubusercontent.com/u/225320943?v=4",
      "created_at": "2025-08-08T04:32:41Z",
      "is_verified": null,
      "public_repos": 13,
      "account_age_days": 353
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-03-01T03:17:47Z"
        },
        {
          "tag": "v1.0.2",
          "kind": "patch",
          "published_at": "2026-02-24T00:45:50Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-02-23T22:31:08Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "263c83bd4d0892d3107371b245742a73dd3434db",
          "body": "## Related Issues\nCleans up the billing page\n\n## Description\nAdds a billing summary page\n\n## Additional Context\n<!-- Anything you want reviewers to know or give specific feedback on?\n-->\n\n## Testing\n<!-- Describe how you tested these changes -->\n\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\n<img width=\"1651\" height=\"914\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/052d98e9-224d-4fb9-848b-3214c6f705ed\"\n/>",
          "is_bot": false,
          "headline": "Adding a billing summary UI (#251)",
          "author_name": "awille-ai",
          "author_login": "awille-ai",
          "committed_at": "2026-07-24T00:35:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d0cca95888b199d58bf34e750d5a5d04adc26b5",
          "body": "The control plane is moving the per-team active-sandbox counter from the\n`team.active_sandbox_count` column to a sharded counter table; after\nthat migration the column freezes at its pre-migration value and live\ncounts are served by the `team_active_sandbox_counts` view. This\nrepoints the console's \n[…]\n shows wrong data that this PR would\nhave shown correctly.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "console: read live sandbox counts from the sharded-counter view (#294)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-23T21:02:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4cb632063ddd42bf11044f17d78828e2e5fda884",
          "body": "When an exec WebSocket closed before a command finished, both SDKs\nraised a generic \"connection closed\" error that discarded the server's\nclose code and reason. Separately, `stdin.write` sent arbitrarily large\npayloads as a single frame, which can exceed per-message limits on the\nserver side.\n\n- std\n[…]\nn\n`__version__`, which had drifted from `pyproject.toml`).\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "sdk: chunk stdin writes and surface exec close reasons (#291)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-21T02:28:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "609c006a859a0166fc142dba75c4c0311598d691",
          "body": "Reverts superserve-ai/superserve#283",
          "is_bot": false,
          "headline": "Revert \"docs: add LangChain Deep Agents integration page\" (#292)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-21T00:54:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2327e5809bb25c47b845d05f0e23f8e6ea9e8946",
          "body": "Adds a docs page for the\n[`langchain-superserve`](https://pypi.org/project/langchain-superserve/)\nintegration — using Superserve sandboxes as the execution runtime for\nLangChain, LangGraph, and Deep Agents.\n\n## What's here\n- New page `integrations/agent-harnesses/langchain.mdx` under\n**Integrations \n[…]\n async\n`ainvoke` path verified against SDK signatures.\n\nModel in the example uses the current-generation\n`anthropic:claude-sonnet-5`.\n\n---------\n\nCo-authored-by: Pavitra Bhalla <pavitra@superserve.ai>",
          "is_bot": false,
          "headline": "docs: add LangChain Deep Agents integration page (#283)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-07-21T00:33:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "897993493d1730d66ee419cfccb92f4194eb0c0d",
          "body": "## Summary\n\n- add an Agno guide under Cookbook → Agent Harnesses\n- document installation, sandbox execution, session reuse, lifecycle\noptions, and secret binding\n- add the official Agno mark and link to Agno's toolkit reference and\nrunnable cookbook example\n\n## Why\n\nAgno's Superserve toolkit has mer\n[…]\nadvanced toolkit options.\n\n## Validation\n\n- `bun run docs:check-nav`\n- `bunx --bun mintlify validate`\n- `bunx --bun mintlify broken-links`\n- local Mintlify preview returned HTTP 200 for the Agno route",
          "is_bot": false,
          "headline": "docs: add Agno integration guide (#288)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-07-17T19:39:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "abcd5c4d512759f82555af1b146869ce1d8e2711",
          "body": "## Summary\n\n- add the dedicated `platform:activity:read` permission to console\nimpersonation keys\n- scope audit-log caches by the active or impersonated team\n- resolve per-sandbox activity from the impersonated team's region\n- fail closed with a clear authorization state when activity access is\nmiss\n[…]\ns/console lint`\n- `bun run --cwd apps/console typecheck`\n- 58 focused Vitest tests passed across permissions, impersonation,\nproxy authentication, activity cache isolation, and activity server\nactions",
          "is_bot": false,
          "headline": "Fix admin access to impersonated audit logs (#285)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-07-17T18:31:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fa841ba3d1d555a5751b1b7d9bfcb23ce9bf8a3c",
          "body": "## Summary\nPlatform impersonation of a migrated team fails with 401s: the\nimpersonation cookie pins the team's region at start, and `findTeamById`\nreturns the first cell match in configured order — for a migrated team\nthat's the detached fallback row in the old cell, whose keys are all\nrevoked. Part\n[…]\now is missing, null-home_region compatibility.\n- Full team-directory suite: 24/24.\n- Root cause verified live against a migrated team (impersonation 401 →\nresolves after the equivalent data-side fix).",
          "is_bot": false,
          "headline": "console: findTeamById prefers the cell a team names as home (#282)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-15T01:38:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "365ee739c116f11647fc59721109a39c4c288c42",
          "body": "## Related Issues\n<!-- Link any related issues: Fixes #123, Relates to #456 -->\nNone.\n\n## Description\nAdds a `loop-pr-loop` GitHub Actions workflow that runs the published\n`@superserve/loops` PR review loop on every PR code change (opened,\nsynchronize, reopened) plus manual dispatch, driving one war\n[…]\ns[bot]`\nusing the workflow's built-in token.\n\n## Testing\n<!-- Describe how you tested these changes -->\n\n- [ ] Tested locally\n- [ ] Added/updated tests\n- [ ] All tests passing\n\n## Screenshots/Demo\nN/A",
          "is_bot": false,
          "headline": "Add pr-loop GitHub Actions workflow (#280)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-07-15T00:06:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3e1833b2500cc45c13e770cb6ddc8b362bf68068",
          "body": "## Related Issues\nWhen we fixed the impersonation, we broke the template view\n\n## Description\nThis changes the authentication for the template view\n\n## Additional Context\n<!-- Anything you want reviewers to know or give specific feedback on?\n-->\n\n## Testing\n<!-- Describe how you tested these changes -->\n\n- [ ] Tested locally\n- [ ] Added/updated tests\n- [ ] All tests passing\n\n## Screenshots/Demo\n<!-- If applicable, add screenshots or a demo link -->",
          "is_bot": false,
          "headline": "fixing template view (#281)",
          "author_name": "awille-ai",
          "author_login": "awille-ai",
          "committed_at": "2026-07-14T22:39:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "94f348345513e3315e13c5729b744d3f2dd378fa",
          "body": "…uperserve sandbox (#247)\n\n## Summary\n\nAdds **PR Superloop** — an open-source, installable agent loop that\nshepherds open pull requests. On each commit pushed to a PR, Claude Code\nruns headless inside a warm Superserve sandbox, reviews the diff against\na calibrated rubric, runs the project's own tes\n[…]\nut if preferred)**\n- `apps/console/src/components/date-range-filter.test.tsx` — pins the\nclock so the test is date-independent.\n- `docs/docs.json` — also adds Teams endpoints to the API Reference nav.",
          "is_bot": false,
          "headline": "Add PR Superloop: an installable agent loop that reviews PRs from a S…",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-07-14T14:24:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c5bd5df203a9300bff63c21c6bc67ea19592a011",
          "body": "## Related Issues\nhttps://github.com/superserve-ai/superserve/pull/227 this was the\noriginal change that made the changes, and then i stomped on it by\naccident\n\n\n## Description\nThis is the \"impersonation\" flow that I accidentally killed\n\n## Additional Context\n\n\n## Testing\nAdded tests. also looking at the console build\n\n- [X ] Tested locally\n- [X ] Added/updated tests\n- [X ] All tests passing\n\n## Screenshots/Demo\n<!-- If applicable, add screenshots or a demo link -->",
          "is_bot": false,
          "headline": "Reviving a page I killed (#263)",
          "author_name": "awille-ai",
          "author_login": "awille-ai",
          "committed_at": "2026-07-13T21:07:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85779e63fcb0da48872315aebc47d1fe6e8ab05c",
          "body": "## Summary\nOne version alignment left over from #275 (the `MIN_SDK_VERSION` bump to\n0.8.0 already landed there): the Python SDK bumps to 0.8.0, since it\nships the same new region-routing code as the TS SDK's 0.8.0 and a PyPI\nrelease can't go out on the old version.\n\n## Testing\nVersion metadata only; no code paths change.",
          "is_bot": false,
          "headline": "python-sdk: bump to 0.8.0 to match the TS SDK region release (#276)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-10T04:48:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96bcebfa39b00398ced6a3e5f937cea1360989bb",
          "body": "## Summary\nAdds `usw-sandbox.superserve.ai` to both SDKs' shared-host sets, so\nserver-side data-plane traffic for usw sandboxes uses the pooled shared\norigin + routing header instead of a distinct TLS origin per sandbox.\nThe comment guarding this entry asked for the usw proxy's shared-host\npath to b\n[…]\nutes via the shared origin. The test list extends\nper cell launch.\n\n## Testing\nTS SDK: 221 tests green (13 files). Python SDK: 54 green. Live\nshared-origin exec verified against the usw cell as above.",
          "is_bot": false,
          "headline": "sdk: usw joins the shared-host data-plane path (#277)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-10T04:45:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ea65baf80cad7850bca5ec712c1d48b21966342e",
          "body": "Makes west-cell (`usw`) teams work from all three clients: SDKs,\nconsole, and MCP. Before this, a west team's key/console/MCP calls\nlanded on the primary (us-east) cell, so their sandboxes were\nunreachable.\n\n**SDKs** — add `usw` → `{api-usw.superserve.ai,\nusw-sandbox.superserve.ai}` to the known-reg\n[…]\nTests: SDK, Python, MCP, and console suites green; typecheck clean.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>\nCo-authored-by: Pavitra Bhalla <pavitra@superserve.ai>",
          "is_bot": false,
          "headline": "Add usw region routing to the SDKs and console data plane (#275)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-10T03:09:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a82fad135b9b19a6a052ebd5cee8ab20880a2ac3",
          "body": "…273)\n\n## Problem\n\nA brand-new user (e.g. Google OAuth first login) lands on `/sandboxes`\nand immediately hits **\"Something went wrong — You do not have\npermission to perform this action.\"** The auth callback provisions\nnothing, so the user has zero memberships; the first server-side request\nis what\n[…]\nexisting on `main` (OpenAPI `GET /activity` missing from docs nav).\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>\nCo-authored-by: Pavitra Bhalla <pavitra@superserve.ai>",
          "is_bot": false,
          "headline": "console: provision full RBAC chain on first-login team auto-create (#…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-09T22:44:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7a5f0c29e01215b864cf477154c084956177d116",
          "body": "…(#274)\n\nAdds a `sec` suffix inside the **Timeout** and **Auto-delete** number\ninputs in the create-sandbox dialog's advanced section, so the unit is\nvisible at a glance rather than only in the helper text.\n\nUses the `Input` component's existing `suffix` prop — no component\nchanges.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "console: show seconds unit on sandbox timeout and auto-delete inputs …",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-09T17:37:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "58dc097c15e6b11600f9bf0bd2796dc76dd69085",
          "body": "## Summary\n\nMigrates the Audit Logs page from client-side filtering of a capped\n≤100-row fetch to true server-side pagination against the new `GET\n/activity` endpoint, mirroring the Sandboxes list page.\n\nPreviously the page fetched up to 100 activity rows via a Supabase\nserver action (`listActivityA\n[…]\nv entry can only land\nonce #189 is merged. It'll go in a small docs-only PR right after —\nmerge it promptly, since once #189 is on `main` the check will expect\nthe nav entry on subsequent console PRs.",
          "is_bot": false,
          "headline": "feat: server-side pagination for audit logs page (#270)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-07-09T16:45:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "56b57cef38bf117002b356fcf557b6d9a525b556",
          "body": "## Summary\nAdds a team switcher to the console. The active team lives in an\nhttpOnly cookie (`region:teamId`) and every dashboard surface —\nsandboxes, templates, snapshots, secrets, activity/audit, API keys,\nbilling, quota, team management — resolves it server-side, so switching\nre-scopes the whole \n[…]\ner-team derivation; new teams-actions\ntests for the directory's active marker, switch validation, and\ncreate-switches-to-new-team.\n- Full console suite: 409 tests pass; typecheck, oxlint, oxfmt clean.",
          "is_bot": false,
          "headline": "console: team switcher — cookie-backed active team (#272)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-09T05:02:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "56145c0cefc77b0844b29fb92bef67352c311baa",
          "body": "Auto-pause (`timeoutSeconds`) was only documented as scattered field\ndescriptions — the lifecycle page had Pause/Resume/Kill/Auto-delete but\nno Auto-pause section, even though it's the more fundamental behavior\n(auto-delete depends on a box pausing first).\n\n- Adds an **Auto-pause** section to the li\n[…]\neout tracks the current active session and re-arms\non resume; it's not a total lifetime. Both now link to the new section.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: add auto-pause lifecycle section and fix timeout wording (#269)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-08T18:12:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "301e15b79d436eb7168eed51c12af9d386019a2b",
          "body": "…d main (#268)\n\nRecovers from a partial release and fixes the underlying workflow bug.\n\n## Context\n`@superserve/sdk@0.7.8` **published successfully to npm**, but the\n`release.yml` \"Commit version bump\" step failed:\n```\nGH006: Protected branch update failed for refs/heads/main.\nChanges must be made t\n[…]\nthe\nprotected-branch design and the PyPI publisher config.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "release: reconcile main to 0.7.8 and fix release.yml push to protecte…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-08T05:53:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dec41101a2939857e8fea00d0d6130f8f589e327",
          "body": "…ump (#267)\n\nThe auto-delete PR (#265) pre-bumped the SDK and Python package versions\nto 0.7.8. But `release.yml` (the `workflow_dispatch` publisher) is\ndesigned to **own** the version bump — it bumps\n`package.json`/`pyproject.toml`/`__init__.py` to the input version,\npublishes via OIDC, then commit\n[…]\n: 0.7.8), then\npush the `mcp-v0.1.1` tag once the SDK is live on npm.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "revert: unset SDK/Python 0.7.8 bump so release.yml owns the version b…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-08T00:04:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "778a9cbd2dc5fda236c5537a8fd42dadd1e2b7ad",
          "body": "Everything in this repo and its PR metadata is public, so the guidelines\nnow say what that implies: no customer names, no internal tracker IDs,\nno internal URLs — in code, fixtures, commits, or PR text. Also rewords\none merged comment that cited a tracker ID.\n\nTesting: docs + comment-only change; lint clean on the touched file.",
          "is_bot": false,
          "headline": "document public-repo hygiene in CLAUDE.md (#266)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-07T23:42:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ab33b48202fa606009381a9ea1f372683011a01",
          "body": "… on update (#265)\n\nSDK, console, MCP, and docs support for paused-sandbox auto-delete, plus\na patchable auto-pause timeout. Mirrors the control-plane API\n(superserve-ai/sandbox#178).\n\n- **TS + Python SDKs**: `autoDeleteSeconds`/`auto_delete_seconds` on\ncreate; `update()` sets or clears (`null`/`Non\n[…]\nsole 351), pytest (287), MCP (88); typecheck\n+ lint clean.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "sdk: auto_delete_seconds on create, patchable auto-delete and timeout…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-07T23:30:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "70235d6bb5b87bc53a83aa138c3bda28d7ee56b5",
          "body": "… writes (#264)\n\nThe console now supports teams homed in different regions (\"cells\"),\nincluding creating new teams in the usw cell. A cell registry maps\nregion → {Supabase admin client, control-plane API base URL}; team\nlookups fan out across configured cells, and everything that operates on\na team \n[…]\nhe team's cell, proxy routes forward to the resolved cell base\nURL.\n- `bun run test` (console): 47 files, 370 tests passing; `bun run\ntypecheck` clean; `bunx oxlint` / `oxfmt` clean on `apps/console`.",
          "is_bot": false,
          "headline": "console: multi-cell support — cell registry, team directory, per-cell…",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-07T18:11:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "739c43305761579daa2f7144dbd50edb0f02b510",
          "body": "## Summary\n\nRestructures the docs site navigation. The former 4-tab layout\n(Documentation · SDK Reference · Integration Guides · API Reference)\nbecomes a single-axis **anchors** layout: no top tab bar; four\nicon-labeled sections pinned at the top of the sidebar, selected via a\nlayout comparison acro\n[…]\ner renders in the Cookbook sidebar\nwhile `cookbook/pr-loop.mdx` and `cookbook/software-factory.mdx` remain\non disk\n- [x] Verify the anchors sidebar renders as expected on the deployed\nMintlify preview",
          "is_bot": false,
          "headline": "docs: merge SDK and API reference into one tab, add Cookbook tab (#255)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-07-06T17:26:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1e3459cece001d3a2eba85b8a86a7d835b155174",
          "body": "…d templates (#262)\n\n## What\n\nAdds server-side pagination, sorting, and filtering to the **Sandboxes**\nand **Templates** list views. Both pages previously fetched the entire\nlist and filtered/searched in memory, which doesn't scale as a team\naccumulates sandboxes/templates. Each view now fetches onl\n[…]\nnual: paginate / sort / filter / search on both pages against a\nbackend that has the pagination params (staging, post backend deploy)\n\n---------\n\nCo-authored-by: Pavitra Bhalla <pavitra@superserve.ai>",
          "is_bot": false,
          "headline": "console: server-side pagination, sorting & filtering for sandboxes an…",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-07-04T00:50:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d8059e4985eb7fa4d3c519d203e00ae8aa9ad99d",
          "body": "SDKs (TypeScript + Python) now derive the API endpoint client-side from\nthe region token in `ss_live_<region>_<random>` API keys, via a\nknown-regions map. This lets multi-region keys route to the right cell\nwith zero configuration, part of the multi-region cell work (SS-143).\n\n**Technical decisions*\n[…]\new tests in both SDKs cover legacy keys, `use` keys, unknown regions,\n`_`-collision keys, weird/never-throw keys, and the full precedence\norder (plus prototype-member safety on the TS side via `Map`).",
          "is_bot": false,
          "headline": "sdk: derive API endpoint from region-tagged API keys (#261)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-02T23:53:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bb86b7daebd0a1110b89514169ca386ed2b1bd7f",
          "body": "…250)\n\n## What\n\n**Trusted Publishing (token-free OIDC) for the release workflows:**\n- `mcp-publish.yml` — npm publish now via OIDC (dropped\n`NODE_AUTH_TOKEN`/`.npmrc`; added `npm install -g npm@latest` since OIDC\ntrusted publishing needs npm ≥ 11.5.1). The MCP-registry half already\nused `github-oidc\n[…]\n`NPM_TOKEN` / `PYPI_TOKEN` secrets can be deleted.\n(`cli-publish.yml` still uses a token — same treatment optional later.)\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "ci: Trusted Publishing for MCP + SDK releases; fix MCP server.json (#…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-02T21:00:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b53719176a7344b17356091ad3a62a81435779d0",
          "body": "## Summary\n- Several public docs described sandbox cold starts as \"sub-second\" —\nundersells actual latency and reads as vague marketing copy\n- Replaced with \"<50ms\" / \"fast (<50ms)\" across the Claude Managed\nAgents integration docs, guide README, and parallel-benchmark-agent\nrecipe README\n\n## Testing\n- Docs-only change",
          "is_bot": false,
          "headline": "docs: replace sub-second cold start claims with <50ms (#256)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-02T17:04:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa08a0039ea6bb45e467cdcb95afdeefa039bc86",
          "body": "## Summary\n- Add a permission-gated `/user-management` console page for RBAC Phase\n4 team member and role management.\n- Add a console-owned `/api/team-management` proxy that resolves the\ncurrent team server-side and forwards only to customer RBAC endpoints.\n- Gate user-management access on the share\n[…]\nests\n\n## Notes\n- No backend schema changes in this repo.\n- Customer sandbox read access should move to explicit\nplatform-authorized read APIs in a separate backend/API design, not\nstaff impersonation.",
          "is_bot": false,
          "headline": "Add RBAC user management console UI (#241)",
          "author_name": "awille-ai",
          "author_login": "awille-ai",
          "committed_at": "2026-07-02T05:56:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c29fdd2b21da12a09457b899c433b3ef75d66252",
          "body": "New customer API keys embed the team's home region —\n`ss_live_<region>_<random>`, read from `team.home_region` — so the API\nedge can route a request to the team's home cell from the key string\nalone, no directory lookup. Legacy keys are untouched and keep working.\nPart of the two-region rollout; pai\n[…]\ng\n\n3 new vitest cases: region embedding + hash-covers-full-string, fallback\non missing column, fallback on unknown region code. Existing\nimpersonation-refusal test unchanged. Typecheck + oxlint clean.",
          "is_bot": false,
          "headline": "console: mint region-prefixed API keys (ss_live_<region>_...) (#253)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-07-02T05:45:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7f54ea21d60a306adbff184dc8ddb4318951ab4c",
          "body": "Shows a warning banner once a team reaches 80% of its sandbox limit,\ncomplementing the email/Slack alerts from the control plane.\n\n- Live read of the team's sandbox usage (self-clears when sandboxes are\ndeleted).\n- Threshold check mirrors the control-plane integer math so banner and\nemail never disa\n[…]\nession dismiss; renders nothing for multi-team users (no error\nspam).\n- Mounted in the dashboard shell above page content.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "console: warn in-product when a team nears its sandbox limit (#239)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-07-02T03:52:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec092a43df02d80fe5ab3f362458a4bbdb0d8b94",
          "body": "## Summary\n\n- Cuts CLAUDE.md from ~270 lines to ~90\n- Removes SDK API surfaces, design choices, lifecycle details, and\nverbose command tables — all covered better in\n`skills/superserve/SKILL.md` and `docs.superserve.ai`\n- Keeps the non-obvious, repo-specific stuff: console proxy\narchitecture, `bun add --filter` footgun, SDK version sync locations,\ndesign language, branding, git rules\n- Adds pointer to `docs.superserve.ai/llms-full.txt` for LLM-friendly\nfull reference",
          "is_bot": false,
          "headline": "trim CLAUDE.md to essentials, defer to docs and skill (#249)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-29T22:23:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32133b686fd92f035f102309c9643b28ffea134c",
          "body": "## Summary\n\n- Deletes the `spec/` folder (38 AI-generated planning docs that don't\nbelong in a public repo)\n- Removes the `## Planning` section from `CLAUDE.md` that was\ninstructing agents to save docs there",
          "is_bot": false,
          "headline": "remove spec/ folder and planning instruction from CLAUDE.md (#248)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-29T21:29:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c195040f0756220712751400193498700d5cc5bf",
          "body": "Adds context7.json for Context7 integration with the Superserve docs.",
          "is_bot": false,
          "headline": "add context7.json with superserve context configuration (#246)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-29T20:53:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de696a3371ad35b99ea4b5527a944bc4e21e9304",
          "body": "## Related Issues\n\nImplements SS-84 (Superserve sandbox MCP server).\n\n## Description\n\nAdds `@superserve/mcp`, a stdio Model Context Protocol server that\nexposes Superserve sandbox primitives as 10 fine-grained tools\n(`sandbox_create`, `sandbox_exec`, `sandbox_files_read`/`write`/`list`,\nand lifecycl\n[…]\nerror mapping, directory-listing\nparser, file round-trips); the live exec round-trip skips cleanly\nwithout `SUPERSERVE_API_KEY`.\n\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing",
          "is_bot": false,
          "headline": "mcp: add @superserve/mcp server with docs and design spec (#234)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-06-26T17:37:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "784d5e020c401e0a9e4b246fb57c5f9f6e73c40b",
          "body": "## Related Issues\n\nRelates to SS-91 (agent skills).\n\n## Description\n\nAdds a consumer-facing **agent skill** at `skills/superserve/SKILL.md`\nthat teaches AI coding agents (Claude Code and the broader skill\necosystem) how to drive the Superserve sandbox SDKs — covering the\nlifecycle (`create`/`pause`/\n[…]\ned. No application code changed.\n\n- [x] Tested locally (content verified against SDK source + docs)\n- [ ] Added/updated tests (N/A — documentation only)\n- [ ] All tests passing (N/A — no code changes)",
          "is_bot": false,
          "headline": "docs: add Superserve sandbox agent skill (SKILL.md) (#228)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-06-26T17:03:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ee2514bdc17635a3acb6c048f98347f8bef44ed1",
          "body": "## Summary\n\nFixes the SDK bug @meAmitPatil reported on #228: the data plane returns\n**503** for a paused sandbox, but the SDKs only auto-resumed on **401**,\nso `pause()` + an immediate `run()` / file op failed with \"sandbox is\npaused\" instead of transparently resuming. `files` had **no resume path\na\n[…]\nse step\n(`SDK_VERSION` tracks the last published version).\n- 503-detection keys on the status code; if the backend later exposes a\nstable `code` for paused, `isResumable` can be tightened to match it.",
          "is_bot": false,
          "headline": "sdk: auto-resume a paused sandbox on data-plane 503 (TS + Python) (#244)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-06-26T17:00:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "863979036ea3930af5dae8e04a4616f4cb3f12cf",
          "body": "## Related Issues\nN/A\n\n## Description\nWhen you create a PR, it creates preview links, and they were not\nworking correctly. this addresses that.\n\n## Additional Context\nN/A\n\n## Testing\nI clicked the link, and it worked.\n\n- [ ] Tested locally\n- [ ] Added/updated tests\n- [X] All tests passing\n\n## Screenshots/Demo\n[Link](https://console-git-aw-fixpreview-superserve.vercel.app/)",
          "is_bot": false,
          "headline": "Mini PR to allow use to use Vercel to get a preview of the UI (#243)",
          "author_name": "awille-ai",
          "author_login": "awille-ai",
          "committed_at": "2026-06-25T20:36:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6374682297c980d0a5366ad4a3ab55f1a3013d42",
          "body": "## Summary\n\nAdds a top-level **Storage** docs section with two new integration\nguides, and reorganizes the virtual-filesystem pages.\n\n- **New Storage group** in the Documentation tab — moved Mesa and Archil\nout of Integration Guides and added Cloud buckets.\n- **Archil** — mount an Archil elastic fil\n[…]\not set in the exec env)\n- missing region `endpoint`/`url` for non-`us-east-1` S3 buckets\n- `chmod 600` on the GCS key file\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: add Storage section with Archil and cloud buckets guides (#242)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-25T03:45:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "239d5fb9f99651ad60681362b5823864ad7f30be",
          "body": "…on plan (#240)\n\n## Related Issues\n\nN/A — surfaced while building the LangChain/LangGraph (Deep Agents)\nintegration.\n\n## Description\n\nFixes a bug in the Python SDK's `map_api_error`: it assumed the response\nbody's `error` field is always a dict (`{\"error\": {\"message\": ...}}`,\nthe control-plane shape\n[…]\npassed (incl. the new\n`test_string_error_body_maps_to_typed_error`); ruff + mypy clean. The\nintegration's full `SandboxIntegrationTests` suite (87 tests) was\nverified green live against the fixed SDK.",
          "is_bot": false,
          "headline": "Fix SDK data-plane error mapping + add langchain-superserve integrati…",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-06-24T17:39:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dddb94df91bef4fa0b680383cbc04640bf2a7050",
          "body": "## Related Issues\n\nImplements sandbox **preview URLs** — lets a coding agent expose a\nrunning service (dev server, demo, etc.) inside a sandbox as a public\nURL a reviewer can open.\n\n## Description\n\nAdds `getPreviewUrl(port)` / `get_preview_url(port)` to the TypeScript\nand Python SDKs — a pure, synch\n[…]\nntext\n\nAccess is public-by-UUID (no auth) by design, and the section is gated\non the sandbox being `active`. Running several dev servers at once is\nsupported by previewing multiple ports side by side.",
          "is_bot": false,
          "headline": "feat: add sandbox preview URLs (TS/Python SDK + console) (#229)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-06-24T17:06:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "09fe10825f357f97d84c461ae22840a3318a06c9",
          "body": "## Related Issues\nRelates to SS-64\n\n## Description\nAdds read-only, console-only admin team impersonation behind a\nstaff-identity gate. A staff user can \"act as\" a team from a new admin\nteams page; the console derives an ephemeral per-admin API key, scopes\nall reads to the impersonated team, blocks w\n[…]\n actions, the proxy gate (GET\nallowed, writes blocked), and the new `access_token` redaction\n(adversarial — fails without the fix). Full console suite: **277\npassing**; typecheck + oxlint/oxfmt clean.",
          "is_bot": false,
          "headline": "feat(console): admin team impersonation (read-only, staff-gated) (#227)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-06-24T16:54:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1b80e824c01f3f86b6946a135833101631bf62fa",
          "body": "## Summary\n- **Auth routes noindex**: Added `(auth)` group layout setting `robots:\nnoindex, nofollow` — covers all auth pages and their query-string\nvariants (`?next=`, `?utm_source=`) in one place, fixing the \"Duplicate\npages without canonical\" Ahrefs audit issue\n- **Docs PostHog proxy**: Updated `\n[…]\n74 docs pages) Ahrefs audit issues\n\n## Test plan\n- [ ] Console auth pages (`/auth/signin/`, `/auth/signup/`) render\n`noindex` in `<head>`\n- [ ] PostHog events from docs route through `p.superserve.ai`",
          "is_bot": false,
          "headline": "fix: noindex auth routes + PostHog proxy on docs (#238)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-24T01:04:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "65aae46a69e03f667106335760c442e621c390c3",
          "body": "## Summary\n\n- `apps/console/src/app/layout.tsx`: OG image was set to `/og-image.png`\nwhich doesn't exist in `public/` — would return 404 for any social share\npreview\n- Changed to `https://www.superserve.ai/cover.png` (the main site's OG\nimage) which is a valid, publicly accessible URL\n\n## Test plan\n\n- [ ] Verify `og:image` in console HTML source resolves to a 200 image",
          "is_bot": false,
          "headline": "fix: console OG image was referencing a missing file (#237)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-23T21:48:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b04931c0a7954553eeca2a73183542fbd8b3faf",
          "body": "Adds billing pricing and usage estimates for the authenticated team,\nbacked by pricing plan/rate data and hourly usage rollups.\n\nNo credits system is included in this branch.",
          "is_bot": false,
          "headline": "Adding pricing to the UI (#224)",
          "author_name": "awille-ai",
          "author_login": "awille-ai",
          "committed_at": "2026-06-22T21:43:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9ab272fefad385a72e98eee8c5126e70dbb386d",
          "body": "Moves the secret-binding endpoints into the **Secrets** API-reference\ngroup, where they belong with the rest of the secret operations:\n\n- `POST /sandboxes/{sandbox_id}/secrets` (attach)\n- `DELETE /sandboxes/{sandbox_id}/secrets/{env_key}` (detach)\n\nThey were under **Sandboxes** (grouped by URL path)\n[…]\ninds all secret operations\n(lifecycle + attach/detach + audit) in one place. No spec change;\n`check-nav` stays green (37 operations).\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: group secret attach/detach under Secrets (#236)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-22T19:24:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ba84955e9c7f9a91056bbcd33d35daf8976ca40e",
          "body": "The Mintlify docs build was failing (\"Listed in the docs nav but not\ndefined in the OpenAPI spec\"), which blocked the **entire** API\nreference from updating — including the secrets endpoint pages.\n\nCause: exec moved from the control plane to the data plane (sandbox#78),\nwhich removed `POST /sandboxe\n[…]\n docs pull the\nOpenAPI from sandbox `main`, so merge the sandbox PR first, then this\none, for the two new pages to render.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: fix Exec API reference nav to match spec (#235)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-22T19:14:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6f0e8edc1db3dcf87d118c073c304bb3b8e84d53",
          "body": "## What\n\nLets a console user download an entire sandbox directory as a single ZIP\nfrom the **Files → Download** panel. This is the console half of SS-66.\n\n## Changes\n\n`apps/console/src/components/sandboxes/files-section.tsx`\n(`DownloadPanel`):\n- Removed the client-side `endsWith(\"/\")` rejection — a \n[…]\nthe console ships first, a directory download shows \"Directory\ndownload is not available for this sandbox yet\" (single-file downloads\nkeep working) until the data plane catches up. SDKs are unchanged.",
          "is_bot": false,
          "headline": "console: download a sandbox directory as a zip (#221)",
          "author_name": "Mohamed Sobhy",
          "author_login": "mohamedsobhi777",
          "committed_at": "2026-06-22T17:25:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c8c5529ae6d4506f70d8a8af1970190824a1c93c",
          "body": "Bumps `@superserve/sdk` (npm) and `superserve` (PyPI) to 0.7.6 for the\nruntime secret-binding feature (attach/detach at runtime).\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Bump SDK versions to 0.7.6 (#231)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-18T21:09:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53893d50378d4269ed7aff4a7bc5b353df2d68e6",
          "body": "Adds attach/detach secret to the SDKs and the console, plus docs.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Runtime secret binding: SDK, console, and docs (#226)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-18T19:49:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "239958f13b037b9e84e75defb720665b26c1a3e8",
          "body": "Release the current SDK (adds the secrets surface) to npm + PyPI before\nthe runtime-binding work.\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Bump SDK versions to 0.7.5 (#230)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-18T18:27:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfa0939246ea58458e535abc6e112ec44882ef21",
          "body": "## Summary\nTL;DR - Fixes a few issues to improve health score on ahrefs.com.\nCurrently at 66/100, I want to bring it up\n\n\n- Adds Next.js `rewrites()` to proxy PostHog requests through the\nconsole's own domain (`/ingest/*` → `us.i.posthog.com`,\n`/ingest/static/*` → `us-assets.i.posthog.com`)\n- Update\n[…]\n\n- Privacy link: check signin/signup pages — privacy link should point to\n`www.superserve.ai/privacy` directly\n- Ensure `NEXT_PUBLIC_WEBSITE_URL=https://www.superserve.ai` is updated\nin production env",
          "is_bot": false,
          "headline": "console: proxy PostHog through own domain to bypass ad blockers (#225)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-18T04:01:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d449ac108ba4d0282db8035a0304f842761ffff1",
          "body": "## Related Issues\nSS-55 Usage tracking and Billing\n\n## Description\nThis adds the UI for the usage tracking and billing\n\n## Additional Context\nThere are DB changes to enable the feature, which have already rolled\nout to production\n\n## Testing\nAdded tests, and ran them\n\n- [X ] Tested locally\n- [X ] Ad\n[…]\nDemo\n<img width=\"1644\" height=\"526\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/46b8ae49-23de-4d09-9f28-3d3debdd1f82\"\n/>\n\n---------\n\nCo-authored-by: Alejandro Wille <ahwille@gmail.com>",
          "is_bot": false,
          "headline": "Add metrics UI (#222)",
          "author_name": "awille-ai",
          "author_login": "awille-ai",
          "committed_at": "2026-06-17T23:45:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dd083a81506474d9d567ce7fa313bf73ed9b67f1",
          "body": "…#216)\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "console: secrets foundation — types, API client, hooks, sidebar nav (…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-17T22:10:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc25c3aacb62258d51f987fda31dc4ec62c5e825",
          "body": "## Summary\n- Added MCP contextual menu options (`mcp`, `add-mcp`, `cursor`,\n`vscode`) and dropped `chatgpt` — makes it easy for Claude Code, Cursor,\nand VS Code users to add our docs as an MCP server\n- Added MCP tip callout to introduction page\n- Changed \"boots\" → \"starts\" (less jargon-y)\n- Removed \"in under five minutes\" time claim from quickstart description\nand intro card",
          "is_bot": false,
          "headline": "docs: MCP contextual options, copy improvements (#223)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-17T20:19:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0b46594365cb225590c4f014e08c80b4b90ccfa",
          "body": null,
          "is_bot": false,
          "headline": "Docs: theme changes, get started button added (#220)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-06-11T16:11:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6db217d7a6144a9c78c6e656571b511c5c0fb4c3",
          "body": "…ge (#219)\n\nFollow-up to PR #218. Two improvements based on review feedback:\n\n- Replace fragile string-match in the page with a typed `errorCode:\n\"blocked_email\"` returned from the signup action. Action also logs the\nblocked attempt (with email) for visibility.\n- Pass `?reason=signup_blocked` to the\n[…]\nignup context instead of saying\n\"sign in\". OAuth callback also redirects with the same query param when\nthe trigger fires.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "console: typed errorCode for blocked-email + signup-tailored error pa…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-10T18:56:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "37ce8b6c1fade92382cc8b3dcaec20e8253935ef",
          "body": "When a blocked email or domain attempts signup, the Supabase trigger\nraises and the action returns the wrapped 'Database error saving new\nuser' message. Previously this rendered as inline error text on the\nsignup form; now it routes to the same /auth/auth-code-error page that\nOAuth failures already use, matching the existing Authentication Error\nUX.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "console: show auth-code-error page when signup is blocked (#218)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-10T18:15:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ab5230f5652e0a571cbe7b5d6e0101e699920bf",
          "body": null,
          "is_bot": false,
          "headline": "Update referral links in README",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-09T20:37:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef42a7ff455a45ed0e6ee608dab79678e105dbde",
          "body": "Reverts superserve-ai/superserve#215",
          "is_bot": false,
          "headline": "Revert \"docs: add Get Started button to navbar\" (#217)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-09T15:44:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b73c3b0f9fe5c9cdfc76b18b387e8054e5cee6d7",
          "body": "## Summary\n\n- Adds a **Get Started** button to the docs navbar linking to\n`https://console.superserve.ai` with UTM tracking\n- Keeps GitHub link alongside it in the navbar\n- Keeps the existing `maple` theme — the layout breakage in the previous\nattempt was caused by switching to `willow`\n- Adds `styl\n[…]\n ] Confirm button styling matches design system\n- [ ] Confirm no layout or visual regressions (docs layout unchanged\nfrom `maple` theme)\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)",
          "is_bot": false,
          "headline": "docs: add Get Started button to navbar (#215)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-09T15:41:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4a6d3dbc64f774b9c96f454af2d4fa306a576825",
          "body": "Reverts superserve-ai/superserve#213",
          "is_bot": false,
          "headline": "Revert \"docs: add Get Started button to navbar\" (#214)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-08T20:41:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2da16cbab8a68a37f7c73bdcc1b251b188aa7a91",
          "body": "## Summary\n\n- Adds a **Get Started** button to the docs navbar (top-right header)\nlinking to `https://console.superserve.ai` with UTM tracking\n- Adds GitHub link alongside it in the navbar\n- Switches theme from `maple` to `willow` — maple renders navbar items\nat the bottom of the sidebar; willow put\n[…]\nsign system (mint green, dark\ntext, no border radius)\n- [ ] Confirm hover state works\n- [ ] Confirm no visual regressions on other pages\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)",
          "is_bot": false,
          "headline": "docs: add Get Started button to navbar (#213)",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-08T20:36:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "734ec1e012b55fde9b747733412aac3ec7b1747f",
          "body": "Both See-also links in all three recipe READMEs were broken: `Full\nguide` 404'd (no per-recipe doc pages) and is repointed to the\n`claude-managed-agents` guide; `Base recipe` pointed at a nonexistent\npath and is fixed to `../../`.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "guides: fix broken links in the managed-agents recipe READMEs (#212)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-08T18:51:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48a88dbe564a814f1f6a04919a5073395e629dda",
          "body": "…managed-agents (#211)\n\nReorganizes the Claude managed-agents material into one place.\n\n**Moves (via `git mv`, history preserved):**\n- `guides/claude/claude-managed-agents/` →\n`guides/managed-agents/claude-managed-agents/`\n-\n`recipes/claude/{research-agent,dev-environment,parallel-benchmark-agent}`\n\n[…]\nard) now point at the new paths — verified each resolves to an existing\npath, and no old-path references remain anywhere in the repo.\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: consolidate claude managed-agents guide + recipes under guides/…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-07T18:54:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "27e74adfefa3c7ed9690e2cca9de7c8e35414baf",
          "body": "…209)\n\nFixes 6 doc inaccuracies, each verified against the platform source /\nSDK / tests:\n\n- **introduction**: `superserve/base` is bare Ubuntu (no Python/Node) —\nremoved the false claim\n- **networking**: precedence is allow-wins (was stated as deny-wins);\nnoted `*.x.com` doesn't match bare `x.com`\n\n[…]\nfailed` error code\n- **claude-agent-sdk**: async tool handler now uses `AsyncSandbox` +\n`await` (was a blocking sync call)\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: fix factual inaccuracies in reference and integration guides (#…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-05T00:56:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ae1d05baf42e1a83e266905a7ad7ca13b800734",
          "body": "The template builder's curated image list offered the **full**\n`python:3.11` / `python:3.12` images (~1.6 GB), while node/debian used\n`-slim`. The full Python images overflow the smaller disk options, so\npicking e.g. Python 3.12 + 1 GB disk always fails with\n`image_too_large`.\n\n- Switch curated Pyth\n[…]\ne (covers the\ncustom-image path).\n\nAfter this, every curated image fits a 1 GB disk (largest is\n`node:22-slim` at 329 MB).\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "console: use slim Python base images in the template builder (#210)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-04T21:23:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b1f251ae4cd8a2cd7673ba4e3c3810bbe909e337",
          "body": "…ecipes (#206)\n\n## Summary\n\nAdds three new Claude Managed Agents recipes, each with Python +\nTypeScript implementations, a README, and a full docs page.\n\n- **Long-running Research Agent** (`guides/claude/research-agent/`) —\nagent researches topics across multi-turn sessions; sandbox pauses\nbetween t\n[…]\nerve + Anthropic\naccount and confirm end-to-end flow works\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "guides: add research agent, dev environment, and parallel benchmark r…",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-06-04T17:54:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2e7fbda668fcfcbe989652df2564378764bd5847",
          "body": "Bump the TypeScript and Python SDK versions to 0.7.4 for the\ncommands.spawn() release (also corrects the stale User-Agent SDK_VERSION\nin both clients).\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Bump SDK versions to 0.7.4 (#208)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-03T17:47:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f452ad60d2f92563ed7b86cbe93755860d7789ad",
          "body": "Adds `commands.spawn()` — a live, full-duplex command session over the\ndata-plane `/exec/connect` WebSocket. Complements the one-shot\n`commands.run()` (HTTP/SSE); pairs with the server side in\nsuperserve-ai/sandbox#89.\n\n`spawn()` returns a handle while the process runs: stream output, write\nto stdin\n[…]\nbefore-finish, resume-retry, socket cleanup.\n\nTS 152 tests / Python 198 tests green; tsc, oxlint, oxfmt, ruff, mypy\nclean.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add commands.spawn() for full-duplex exec (TS + Python) + docs (#205)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-03T16:30:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e1b900f3463c83a55719082019957e2a0eefdd39",
          "body": "… (#204)\n\nDownloading a directory path in the sandbox Files panel surfaced a raw\ninternal backend error. Downloads are single-file only, so the console\nnow handles the directory case cleanly.\n\n## Changes\n- Parse the data-plane error body instead of showing raw JSON.\n- Directory path and missing-file\n[…]\n upload errors.\n- Fixed the pre-existing jsx-a11y control-label errors in the touched\nand adjacent files (lint now green).\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "console: clearer directory download error and fix a11y control labels…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-02T01:59:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "59c910c6625d90eccf5edd472657fdf179f875f2",
          "body": "Adds an automated check so the API Reference nav in `docs/docs.json`\ncan't drift from the OpenAPI spec it renders — the gap that let a\ndocumented endpoint go missing from the published docs.\n\n## What it does\n`scripts/check-docs-nav.ts` fetches the spec referenced in `docs.json`\nand compares it again\n[…]\nll.\n- `/health` is exempt (intentionally not in the public nav). Uses the\nbuilt-in `Bun.YAML` parser, no new dependencies.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "ci: check docs nav stays in sync with the OpenAPI spec (#203)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-01T19:42:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1f4d514bfa0650631d646ed6b031e125523c3ff8",
          "body": "Surfaces three endpoints that exist in the OpenAPI spec but were missing\nfrom the API reference nav, so they now render in the docs.\n\n## Changes\n- Add `POST /sandboxes/{sandbox_id}/activate` to the Sandboxes group\n- Add a new Files group with `GET /files` and `POST /files`\n\nThe spec itself is pulled live from the sandbox repo's `main`; all three\npaths are already present there, so the Mintlify build resolves them.\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: add activate and files endpoints to API reference nav (#202)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-06-01T18:52:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "118de0394936a03b2ed68e0e05176dbf4ce91cd3",
          "body": null,
          "is_bot": false,
          "headline": "Console: audit logs, expand for details (#201)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-29T19:48:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd5d83a3c0830b815db76be5989a4bcdc696226b",
          "body": "## Description\n- Docs: Template details corrected based on template specs\n- Docs & Console: Logo Updated\n\n## Testing - NA\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\nNA",
          "is_bot": false,
          "headline": "docs: templates details updated, docs & console: logo updated (#196)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-29T00:12:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a33629fbc0d087df37b3ca8689046f916942eac",
          "body": "…200)\n\n## Summary\nOn supported sandbox hosts (prod + staging), the SDK now routes\n`commands.run` / `commands.run` (streaming) / `files.read|write` through\na single shared host (`sandbox.superserve.ai` or\n`staging-sandbox.superserve.ai`) with `X-Superserve-Sandbox-Id` carrying\nthe sandbox ID, instead\n[…]\nx#80](https://github.com/superserve-ai/sandbox/pull/80) — already\nmerged + deployed to staging.\n\nBumps both SDKs to 0.7.3.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "sdk: route data plane via shared host on supported domains (0.7.3) (#…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-05-28T19:45:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c7d2e4119d00c015d89c4a5d68779a914d163cc9",
          "body": "…te (#197)\n\nSwitches `Sandbox.commands.run()` to the per-sandbox data-plane `/exec`\nand `Sandbox.connect()` to `POST /activate`. On 401 the SDK\nauto-refreshes via /activate and retries once.\n\nSame shape in TS and Python (sync + async). Pairs with sandbox PR #77\nwhich shipped the server-side endpoint\n[…]\nvior is no longer available through\n`connect()` — use `Sandbox.list()` + filter or the REST API for\ninspection-only flows.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "sdk: route commands.run through data-plane /exec, connect via /activa…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-05-28T16:43:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9d0f027aefd32a921c87db3f1abe9279d636e203",
          "body": "## Description\nUpdate console design, component library and ui app\n\n## Testing\n- [x] Tested on staging\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\nWIP",
          "is_bot": false,
          "headline": "console & ui: design update to match website (#198)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-28T07:54:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b790a5ec05f44566d321407ba908a4c64d1384a1",
          "body": "## Description\n- docs: integration guides in introduction page\n- docs: logo updated\n\n## Testing\n- [ ] Tested locally\n- [ ] Added/updated tests\n- [ ] All tests passing\n\n## Screenshots/Demo\nNA\n\n---------\n\nCo-authored-by: Pavitra Bhalla <pavitra@superserve.ai>",
          "is_bot": false,
          "headline": "docs: integration guides, favicon changes (#199)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-28T03:23:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed6c911dd0bf3881ae1a0d84e8c2f9b12eb7c7e6",
          "body": null,
          "is_bot": false,
          "headline": "docs: polish README and guide copy",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-05-27T22:06:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "edd69a92b7f48c8a60250e864b14582232a5469a",
          "body": "## Summary\n- Adds integration guide for using Superserve sandboxes as the\nself-hosted execution environment for Anthropic's Claude Managed Agents\n- Covers template setup, orchestrator (polling pattern), in-sandbox\nrunner, and session creation with both TypeScript and Python examples\n- Adds the guide to the Agent Harnesses group in the Integration Guides\nnav tab\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>\nCo-authored-by: Pavitra Bhalla <pavitra@superserve.ai>",
          "is_bot": false,
          "headline": "docs: add Claude Managed Agents integration guide (#195)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-05-27T19:42:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55b237250bae0df543362b910f217e445b3b31dd",
          "body": "…ox) (#194)\n\nBoth SDKs constructed `boxd-{id}.sandbox-staging.superserve.ai` but the\nVercel DNS wildcard is `*.staging-sandbox.superserve.ai` — staging\ndata-plane unreachable via SDK. Prod (`sandbox.superserve.ai`) is\nunaffected.\n\n<!-- stage-review-badge-begin -->\n\n---\n\n<a href=\"https://stagereview.\n[…]\nc=\"https://stagereview.app/assets/gh-open-in-stage-light.svg\"\nalt=\"Open in Stage\">\n  </picture>\n</a>\n\n<!-- stage-review-badge-end -->\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "sdk: fix staging data-plane hostname (sandbox-staging → staging-sandb…",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-05-22T17:58:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4ae100f9bd653c935d1ac9d79c38f7ae3e53206a",
          "body": "## Description\ndocs: openclaw and hermes guides updated to use templates\ndocs: templates list, openclaw and hermes added\n\n## Testing\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\nNA\n\n<!-- stage-review-badge-begin -->\n\n---\n\n<a href=\"https://stagereview.ap\n[…]\n\"https://stagereview.app/assets/gh-open-in-stage-dark.svg\">\n<img src=\"https://stagereview.app/assets/gh-open-in-stage-light.svg\"\nalt=\"Open in Stage\">\n  </picture>\n</a>\n\n<!-- stage-review-badge-end -->",
          "is_bot": false,
          "headline": "docs: openclaw and hermes templates (#193)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-20T16:06:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e46c2502ae36401732dee3a9dbaeda69d99a29b",
          "body": null,
          "is_bot": false,
          "headline": "Console: Terminal improvements (#192)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-16T07:58:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc4efae2d9f84624bcb98e9594a6b37e8e6d7f46",
          "body": "## Description\n- UTM Source Attribution\n- Docs: Integration Guides, product logos added\n- Docs: OpenClaw and Hermes, instruction to keep them alive\n\n## Testing - NA\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\nNA\n\n\n<!-- stage-review-badge-begin -->\n\n---\n[…]\n\"https://stagereview.app/assets/gh-open-in-stage-dark.svg\">\n<img src=\"https://stagereview.app/assets/gh-open-in-stage-light.svg\"\nalt=\"Open in Stage\">\n  </picture>\n</a>\n\n<!-- stage-review-badge-end -->",
          "is_bot": false,
          "headline": "UTM Source Attribution & Integration Guides Updates (#191)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-15T14:21:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8c9196251744cf52e5125ab47543345807fc7917",
          "body": "## Description\n- README simplified and cleaned up\n- RELEASING file added\n- CONTRIBUTING guide for installing and managing dependencies in\nmonorepo\n- SDK examples removed, link to docs\n\n## Testing - NA\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\nNA\n\n\n<!\n[…]\n\"https://stagereview.app/assets/gh-open-in-stage-dark.svg\">\n<img src=\"https://stagereview.app/assets/gh-open-in-stage-light.svg\"\nalt=\"Open in Stage\">\n  </picture>\n</a>\n\n<!-- stage-review-badge-end -->",
          "is_bot": false,
          "headline": "README Simplified (#190)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-14T16:48:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c1c4c042386b64942af7a4565135f7f3a42ae5f3",
          "body": "## Description\nxterm terminal issues fixes\n\n## Testing\n- [x] Tested on staging\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\nWIP\n\n\n<!-- stage-review-badge-begin -->\n\n---\n\n<a href=\"https://stagereview.app/superserve-ai/superserve/pull/189\">\n  <picture>\n<source media=\"(prefers\n[…]\n\"https://stagereview.app/assets/gh-open-in-stage-dark.svg\">\n<img src=\"https://stagereview.app/assets/gh-open-in-stage-light.svg\"\nalt=\"Open in Stage\">\n  </picture>\n</a>\n\n<!-- stage-review-badge-end -->",
          "is_bot": false,
          "headline": "console: xterm improvements (#189)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-13T23:53:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "94b4039b168cc41da8aef132d772702b39b2238f",
          "body": "## Description\nWe currently use Biome as our linter and formatter, which has somewhat\nbroken experience, the fix command doesn't fix certain type of issues,\nformat command doesn't work for tailwind classes, plus the editor\nintegration is subpar\n\nThis PR replaces Biome with oxlint and oxfmt, which ha\n[…]\n\"https://stagereview.app/assets/gh-open-in-stage-dark.svg\">\n<img src=\"https://stagereview.app/assets/gh-open-in-stage-light.svg\"\nalt=\"Open in Stage\">\n  </picture>\n</a>\n\n<!-- stage-review-badge-end -->",
          "is_bot": false,
          "headline": "Biome → OXC (#187)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-12T22:53:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cc2ae6a80f8ed0e069d80c59b39f9437d11785a5",
          "body": "## Description\nIntegration guides\n- Coding Agents\n    - Claude\n    - Codex\n    - Opencode\n    - Kilocode\n- Personal agents\n    - OpenClaw\n    - Hermes\n- Agent Harnesses\n    - Claude Agent SDK\n    - OpenAI Agents SDK\n- Virtual filesystems\n    - Mesa\n\n## Testing\n\n- [x] Tested locally\n- [x] Added/updat\n[…]\nc=\"https://stagereview.app/assets/gh-open-in-stage-light.svg\"\nalt=\"Open in Stage\">\n  </picture>\n</a>\n\n<!-- stage-review-badge-end -->\n\n---------\n\nCo-authored-by: Pavitra Bhalla <pavitra@superserve.ai>",
          "is_bot": false,
          "headline": "Docs: Integration Guides (#184)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-12T16:04:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ba2902d1f587e277798aabcdbd8b6a9fb9d7969",
          "body": "## Description\nConsole: multiple web terminal tabs for sandboxes\n\n## Testing\n\n- [x] Tested on Staging\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\n\n<img width=\"1470\" height=\"956\" alt=\"Screenshot 2026-05-11 at 11 55\n55 PM\"\nsrc=\"https://github.com/user-attachments/assets/54df986c-6e8d-4930-a14b-3f50b3ac4301\"\n/>\n<img width=\"1470\" height=\"956\" alt=\"Screenshot 2026-05-11 at 11 56\n56 PM\"\nsrc=\"https://github.com/user-attachments/assets/d2fde3cf-0e06-4f98-a838-58695cfbb621\"\n/>",
          "is_bot": false,
          "headline": "Console: multiple terminal tabs (#186)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-11T20:01:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "42f442151344478dff62b6a82d60803b72437c13",
          "body": "## Description\n\n**Supabase moves from packages to console**\nSupabase was added as a packages since we had a playground before, since\nwe don't have anymore, it makes sense to keep it simple and only scoped\nto the console\n\n## Testing - Needs testing\n\n- [x] Tested locally\n- [x] Added/updated tests\n- [x\n[…]\n\"https://stagereview.app/assets/gh-open-in-stage-dark.svg\">\n<img src=\"https://stagereview.app/assets/gh-open-in-stage-light.svg\"\nalt=\"Open in Stage\">\n  </picture>\n</a>\n\n<!-- stage-review-badge-end -->",
          "is_bot": false,
          "headline": "supabase: from a package to project specific library (#185)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-08T23:25:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b22ced7cf1c1580a41d04d7a4b75db882242c0f3",
          "body": null,
          "is_bot": false,
          "headline": "Update image source and description in README",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-05-08T23:13:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e577510f2b3791993801c4c14162bd9a99842465",
          "body": null,
          "is_bot": false,
          "headline": "Update README",
          "author_name": "Pavitra Bhalla",
          "author_login": "pavitrabhalla",
          "committed_at": "2026-05-08T23:08:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9edf166a7f66970c0c5c62f955716e1504fd3ed8",
          "body": "## Description\nDocs theme updated\n\n## Testing - NA\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing",
          "is_bot": false,
          "headline": "Docs: theme updated (#183)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-07T01:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f762cee0ff3ed9db30439002f6eadece4ccecac9",
          "body": "## Description\nSDK Package versions updated 0.7.1\n\n## Testing - NA\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\nNA",
          "is_bot": false,
          "headline": "SDK: package version updated (#181)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-05T04:35:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "871bf21bc0e343f60df9b22dfecf61cf58550151",
          "body": "## Description\nWelcome email, book call as primary action button\n\n## Testing\n\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\n<img width=\"750\" height=\"655\" alt=\"Screenshot 2026-05-05 at 12 31 52 AM\"\nsrc=\"https://github.com/user-attachments/assets/e6ee024a-d572-4845-a0ef-8a751a33b6c8\"\n/>",
          "is_bot": false,
          "headline": "Console: Welcome email primary button changed (#180)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-04T19:03:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9173b82ad02deed9736fe6a182002364cc94f8f",
          "body": "## Description\nwelcome email copy updated\n\n## Testing\n- [x] Tested locally\n- [x] Added/updated tests\n- [x] All tests passing\n\n## Screenshots/Demo\n<!-- If applicable, add screenshots or a demo link -->",
          "is_bot": false,
          "headline": "console: welcome email copy updated (#179)",
          "author_name": "Jitendra Nirnejak",
          "author_login": "nirnejak",
          "committed_at": "2026-05-04T18:49:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3c14251bdd418fa55c695aa57d72ec3f83984bf",
          "body": "## Summary\n\nAligns the create-template dialog's resource picker with the default\nper-team caps enforced by the backend in\n[superserve-ai/sandbox#43](https://github.com/superserve-ai/sandbox/pull/43):\n\n- `VCPU_OPTIONS`: `[1, 2, 4]` → `[1, 2]`\n- `MEMORY_OPTIONS`: `[256, 512, 1024, 2048, 4096]` → `[256\n[…]\ns fit)\n\nDefault selections (`vcpu=1`, `memory=1024`, `disk=4096`) all remain\nvalid — no other dialog state changes needed.\n\n---------\n\nCo-authored-by: Amit Patil <meAmitPatil@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Console: trim template resource picker to default per-team caps (#178)",
          "author_name": "Amit Patil",
          "author_login": "meAmitPatil",
          "committed_at": "2026-04-30T22:13:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 3,
      "commits_last_year": 225,
      "latest_release_at": "2026-03-01T03:17:47Z",
      "latest_release_tag": "v1.1.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 32,
      "days_since_latest_release": 148,
      "mean_days_between_releases": 2.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@superserve/cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "cli",
            "ai",
            "agents",
            "deploy",
            "sandbox",
            "cloud"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@superserve/cli",
          "is_deprecated": false,
          "latest_version": "1.1.1",
          "repository_url": "https://github.com/superserve-ai/superserve",
          "versions_count": 5,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 4,
          "monthly_downloads": 104,
          "first_published_at": "2026-02-23T22:56:58.410000Z",
          "latest_published_at": "2026-02-27T03:45:50.030000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 150
        },
        {
          "name": "@superserve/mcp",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "agents",
            "ai",
            "firecracker",
            "mcp",
            "microvm",
            "model-context-protocol",
            "sandbox",
            "superserve"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@superserve/mcp",
          "is_deprecated": false,
          "latest_version": "0.1.2",
          "repository_url": "https://github.com/superserve-ai/superserve",
          "versions_count": 3,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 4,
          "monthly_downloads": 623,
          "first_published_at": "2026-06-30T18:03:56.273000Z",
          "latest_published_at": "2026-07-10T19:01:06.330000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 17
        },
        {
          "name": "@superserve/sdk",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "firecracker",
            "microvm",
            "sandbox",
            "sdk",
            "superserve"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@superserve/sdk",
          "is_deprecated": false,
          "latest_version": "0.8.1",
          "repository_url": "https://github.com/superserve-ai/superserve",
          "versions_count": 22,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 4,
          "monthly_downloads": 12432,
          "first_published_at": "2026-02-24T17:23:08.328000Z",
          "latest_published_at": "2026-07-21T02:32:49.334000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        },
        {
          "name": "superserve",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "firecracker",
            "microvm",
            "sandbox",
            "sdk",
            "superserve",
            "Development Status :: 4 - Beta",
            "Intended Audience :: Developers",
            "License :: OSI Approved :: Apache Software License",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.9",
            "Topic :: Software Development :: Libraries :: Python Modules"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/superserve/",
          "is_deprecated": false,
          "latest_version": "0.8.1",
          "repository_url": "https://github.com/superserve-ai/superserve",
          "versions_count": 21,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-01-31T01:11:31.867318Z",
          "latest_published_at": "2026-07-21T02:32:37.466386Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 50,
      "stars": 434,
      "watchers": 1,
      "fork_history": {
        "days": [
          {
            "date": "2025-11-21",
            "count": 1
          },
          {
            "date": "2025-12-21",
            "count": 1
          },
          {
            "date": "2026-01-04",
            "count": 5
          },
          {
            "date": "2026-01-08",
            "count": 1
          },
          {
            "date": "2026-01-14",
            "count": 1
          },
          {
            "date": "2026-02-03",
            "count": 1
          },
          {
            "date": "2026-03-03",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-13",
            "count": 16
          },
          {
            "date": "2026-05-14",
            "count": 6
          },
          {
            "date": "2026-05-15",
            "count": 1
          },
          {
            "date": "2026-05-17",
            "count": 2
          },
          {
            "date": "2026-05-18",
            "count": 2
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-20",
            "count": 1
          },
          {
            "date": "2026-05-22",
            "count": 1
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-06-02",
            "count": 1
          },
          {
            "date": "2026-06-09",
            "count": 1
          },
          {
            "date": "2026-06-11",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 1
          },
          {
            "date": "2026-07-24",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 50,
        "total_forks": 50
      },
      "star_history": null,
      "open_issues_and_prs": 11
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "cookbook",
        "examples",
        "recipes"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "apps/console/tsconfig.json",
        "apps/mcp/tsconfig.json",
        "apps/ui-docs/tsconfig.json",
        "examples/loops/tsconfig.json",
        "packages/cli/tsconfig.json",
        "packages/mcp/tsconfig.json",
        "packages/python-sdk/src/superserve/py.typed",
        "packages/sdk/tsconfig.json",
        "packages/ui/tsconfig.json",
        "tests/sdk-e2e-ts/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 36990,
      "source_files_sampled": 573,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 5451
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 12,
        "malicious_count": 0,
        "assessed_package": "pypi:superserve@0.8.1",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "@react-email/components",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.11"
        },
        {
          "name": "@supabase/ssr",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.10.0"
        },
        {
          "name": "@supabase/supabase-js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.101.1"
        },
        {
          "name": "@tailwindcss/postcss",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.2"
        },
        {
          "name": "@types/node",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^25.5.2"
        },
        {
          "name": "@vitejs/plugin-react",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.1.4"
        },
        {
          "name": "cmdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "happy-dom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^20.8.9"
        },
        {
          "name": "next",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.2.2"
        },
        {
          "name": "postcss",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.5.8"
        },
        {
          "name": "posthog-js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.364.7"
        },
        {
          "name": "posthog-node",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.28.11"
        },
        {
          "name": "resend",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.10.0"
        },
        {
          "name": "tailwindcss",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.2"
        },
        {
          "name": "vitest",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.2"
        },
        {
          "name": "@phosphor-icons/react",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.7"
        },
        {
          "name": "@react-email/components",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.7"
        },
        {
          "name": "@supabase/ssr",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.10.0"
        },
        {
          "name": "@supabase/supabase-js",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.98.0"
        },
        {
          "name": "@superserve/ui",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@tanstack/react-query",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.96.2"
        },
        {
          "name": "@xterm/addon-clipboard",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.0"
        },
        {
          "name": "@xterm/addon-fit",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.11.0"
        },
        {
          "name": "@xterm/addon-image",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.9.0"
        },
        {
          "name": "@xterm/addon-ligatures",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.10.0"
        },
        {
          "name": "@xterm/addon-search",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.16.0"
        },
        {
          "name": "@xterm/addon-serialize",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.14.0"
        },
        {
          "name": "@xterm/addon-unicode11",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.9.0"
        },
        {
          "name": "@xterm/addon-web-links",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.12.0"
        },
        {
          "name": "@xterm/addon-webgl",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.19.0"
        },
        {
          "name": "@xterm/xterm",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.0"
        },
        {
          "name": "cmdk",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "motion",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.0.0"
        },
        {
          "name": "next",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.6"
        },
        {
          "name": "posthog-js",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.353.0"
        },
        {
          "name": "posthog-node",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.25.0"
        },
        {
          "name": "react",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.4"
        },
        {
          "name": "react-dom",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.4"
        },
        {
          "name": "resend",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.9.2"
        },
        {
          "name": "zod",
          "manifest": "apps/console/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.67"
        },
        {
          "name": "@superserve/mcp",
          "manifest": "apps/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "next",
          "manifest": "apps/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.1.6"
        },
        {
          "name": "react",
          "manifest": "apps/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.4"
        },
        {
          "name": "react-dom",
          "manifest": "apps/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.4"
        },
        {
          "name": "@phosphor-icons/react",
          "manifest": "apps/ui-docs/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.7"
        },
        {
          "name": "@superserve/ui",
          "manifest": "apps/ui-docs/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@tailwindcss/vite",
          "manifest": "apps/ui-docs/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.1"
        },
        {
          "name": "react",
          "manifest": "apps/ui-docs/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.0.0"
        },
        {
          "name": "react-dom",
          "manifest": "apps/ui-docs/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.0.0"
        },
        {
          "name": "react-router",
          "manifest": "apps/ui-docs/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7"
        },
        {
          "name": "shiki",
          "manifest": "apps/ui-docs/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3"
        },
        {
          "name": "tailwindcss",
          "manifest": "apps/ui-docs/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.2.1"
        },
        {
          "name": "@superserve/sdk",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "boxen",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.0.1"
        },
        {
          "name": "cli-table3",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.6.5"
        },
        {
          "name": "commander",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14.0.3"
        },
        {
          "name": "js-yaml",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.1.0"
        },
        {
          "name": "picocolors",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "posthog-node",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.25.0"
        },
        {
          "name": "tar-stream",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.7"
        },
        {
          "name": "terminal-link",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.0"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "@superserve/sdk",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "zod",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.0"
        },
        {
          "name": "httpx",
          "manifest": "packages/python-sdk/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.24.0"
        },
        {
          "name": "pydantic",
          "manifest": "packages/python-sdk/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.0.0"
        },
        {
          "name": "typing-extensions",
          "manifest": "packages/python-sdk/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0"
        },
        {
          "name": "websockets",
          "manifest": "packages/python-sdk/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=12.0"
        },
        {
          "name": "@base-ui/react",
          "manifest": "packages/ui/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.0"
        },
        {
          "name": "@phosphor-icons/react",
          "manifest": "packages/ui/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.7"
        },
        {
          "name": "@superserve/tailwind-config",
          "manifest": "packages/ui/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "clsx",
          "manifest": "packages/ui/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "motion",
          "manifest": "packages/ui/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.0.0"
        },
        {
          "name": "shiki",
          "manifest": "packages/ui/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.0"
        },
        {
          "name": "tailwind-merge",
          "manifest": "packages/ui/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.4.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 9,
        "merged_prs": 215,
        "open_issues": 2,
        "closed_ratio": 0.923,
        "closed_issues": 24,
        "closed_unmerged_prs": 45
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "meAmitPatil",
          "commits": 73,
          "avatar_url": "https://avatars.githubusercontent.com/u/66266598?v=4"
        },
        {
          "type": "User",
          "login": "nirnejak",
          "commits": 54,
          "avatar_url": "https://avatars.githubusercontent.com/u/14347543?v=4"
        },
        {
          "type": "User",
          "login": "pavitrabhalla",
          "commits": 34,
          "avatar_url": "https://avatars.githubusercontent.com/u/4392764?v=4"
        },
        {
          "type": "User",
          "login": "mohamedsobhi777",
          "commits": 15,
          "avatar_url": "https://avatars.githubusercontent.com/u/33491613?v=4"
        },
        {
          "type": "User",
          "login": "awille-ai",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/293730395?v=4"
        },
        {
          "type": "User",
          "login": "rushikeshadhav",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/74168885?v=4"
        },
        {
          "type": "User",
          "login": "richardliaw",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/4529381?v=4"
        }
      ],
      "contributors_sampled": 7,
      "top_contributor_share": 0.392
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "cli-publish.yml",
        "loop-pr-loop.yml",
        "loops-publish.yml",
        "mcp-publish.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 7,
            "reason": "Found 23/30 approved changesets -- score normalized to 7",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "145 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "263c83bd4d0892d3107371b245742a73dd3434db",
        "ran_at": "2026-07-27T21:40:38Z",
        "aggregate_score": 4.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-24T00:38:31Z",
      "oldest_open_prs": [
        {
          "number": 233,
          "created_at": "2026-06-22T04:57:09Z",
          "last_comment_at": "2026-06-22T04:57:14Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 245,
          "created_at": "2026-06-26T18:14:31Z",
          "last_comment_at": "2026-06-26T18:14:36Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 271,
          "created_at": "2026-07-08T18:07:34Z",
          "last_comment_at": "2026-07-08T18:07:40Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 279,
          "created_at": "2026-07-13T23:05:35Z",
          "last_comment_at": "2026-07-13T23:05:40Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 284,
          "created_at": "2026-07-15T20:26:15Z",
          "last_comment_at": "2026-07-15T20:26:21Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 286,
          "created_at": "2026-07-17T14:20:09Z",
          "last_comment_at": "2026-07-17T14:20:16Z",
          "last_comment_author": "vercel"
        },
        {
          "number": 287,
          "created_at": "2026-07-17T15:31:16Z",
          "last_comment_at": "2026-07-17T18:39:38Z",
          "last_comment_author": "github-actions"
        },
        {
          "number": 293,
          "created_at": "2026-07-21T15:03:08Z",
          "last_comment_at": "2026-07-22T18:48:28Z",
          "last_comment_author": "pavitrabhalla"
        },
        {
          "number": 295,
          "created_at": "2026-07-24T22:08:49Z",
          "last_comment_at": "2026-07-24T22:08:55Z",
          "last_comment_author": "vercel"
        }
      ],
      "last_merged_pr_at": "2026-07-24T00:35:58Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 289,
          "created_at": "2026-07-18T15:29:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 290,
          "created_at": "2026-07-18T15:32:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/superserve-ai/superserve",
    "host": "github.com",
    "name": "superserve",
    "owner": "superserve-ai"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 74,
      "inputs": {
        "security": 54,
        "vitality": 84,
        "community": 67,
        "governance": 70,
        "engineering": 88
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 84,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 86,
            "inputs": {
              "commits_last_year": 225,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 32
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "32/52 weeks with commits",
                "points": 22.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 32
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "225 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 225
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "releases_count": 3,
              "latest_release_tag": "v1.1.0",
              "releases_from_tags": false,
              "days_since_latest_release": 148,
              "mean_days_between_releases": 2.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "3 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 148 days ago",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 148
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 3,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 3 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 67,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "forks": 50,
              "stars": 434,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "434 stars",
                "points": 42.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 434
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "50 forks",
                "points": 14.1,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 50
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "packages": [
                "@superserve/cli",
                "@superserve/mcp",
                "@superserve/sdk",
                "superserve"
              ],
              "dependents": null,
              "ecosystems": "npm, pypi",
              "total_downloads": null,
              "monthly_downloads": 13159
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "13,159 downloads/month across npm, pypi",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 13159,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 70,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 7,
              "top_contributor_share": 0.392
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 39% of commits",
                "points": 13.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 39
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "7 contributors",
                "points": 9.5,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "merged_prs": 215,
              "open_issues": 2,
              "closed_issues": 24,
              "issue_closed_ratio": 0.923,
              "closed_unmerged_prs": 45
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "92% of issues closed",
                "points": 43.2,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 92
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "215/260 decided PRs merged",
                "points": 31.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 215,
                      "decided": 260
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 23/30 approved changesets -- score normalized to 7",
                "points": 10.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "followers": 18,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "superserve-ai",
              "public_repos": 13,
              "account_age_days": 353
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "18 followers of superserve-ai",
                "points": 9.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 18,
                      "login": "superserve-ai"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "13 public repos, account ~0 yr old",
                "points": 10.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 13
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@superserve/cli",
                "@superserve/mcp",
                "@superserve/sdk",
                "superserve"
              ],
              "ecosystems": "npm, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "4 package(s) on npm, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 4,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "22 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 22
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 88,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 94,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "6 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 16,
                "status": "met",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://superserve.ai?utm_source=github&utm_medium=referral&utm_campaign=repo_bio",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://superserve.ai?utm_source=github&utm_medium=referral&utm_campaign=repo_bio",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 54,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 43,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "30 out of 30 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 23/30 approved changesets -- score normalized to 7",
                "points": 5.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "145 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:superserve@0.8.1 runtime dependency closure — what installing the published package pulls in — 12 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:superserve@0.8.1",
                  "assessed": 12
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 12,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 12,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 6
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 75,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.97,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 5451
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "97 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 97,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "uv.lock"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "apps/console/tsconfig.json",
                "apps/mcp/tsconfig.json",
                "apps/ui-docs/tsconfig.json",
                "examples/loops/tsconfig.json",
                "packages/cli/tsconfig.json",
                "packages/mcp/tsconfig.json",
                "packages/python-sdk/src/superserve/py.typed",
                "packages/sdk/tsconfig.json",
                "packages/ui/tsconfig.json",
                "tests/sdk-e2e-ts/tsconfig.json"
              ],
              "agent_commit_share": 0.09,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 11,
                "status": "met",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "apps/console/tsconfig.json, apps/mcp/tsconfig.json, apps/ui-docs/tsconfig.json, examples/loops/tsconfig.json, packages/cli/tsconfig.json, packages/mcp/tsconfig.json, packages/python-sdk/src/superserve/py.typed, packages/sdk/tsconfig.json, packages/ui/tsconfig.json, tests/sdk-e2e-ts/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "apps/console/tsconfig.json, apps/mcp/tsconfig.json, apps/ui-docs/tsconfig.json, examples/loops/tsconfig.json, packages/cli/tsconfig.json, packages/mcp/tsconfig.json, packages/python-sdk/src/superserve/py.typed, packages/sdk/tsconfig.json, packages/ui/tsconfig.json, tests/sdk-e2e-ts/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "9 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 9,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 36990,
              "source_files_sampled": 573,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/573 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 573,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "cookbook",
                "examples",
                "recipes"
              ],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "cookbook, examples, recipes",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "cookbook, examples, recipes"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T21:40:59.661730Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/superserve-ai/superserve.svg",
  "full_name": "superserve-ai/superserve",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计npm, PyPI.