{"id":44164858,"url":"https://github.com/opencmit/alphora","last_synced_at":"2026-03-13T14:04:31.090Z","repository":{"id":336413899,"uuid":"1148628738","full_name":"opencmit/alphora","owner":"opencmit","description":"A Production-Ready Framework for Building Composable AI Agents","archived":false,"fork":false,"pushed_at":"2026-03-10T11:16:25.000Z","size":35807,"stargazers_count":345,"open_issues_count":1,"forks_count":33,"subscribers_count":25,"default_branch":"main","last_synced_at":"2026-03-10T18:22:42.464Z","etag":null,"topics":["agent-framework","ai-agents","llm","multi-agent-systems"],"latest_commit_sha":null,"homepage":"https://bigdata.10086.cn/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opencmit.png","metadata":{"files":{"readme":"README.cn.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":"CLA.md"}},"created_at":"2026-02-03T07:18:35.000Z","updated_at":"2026-03-10T11:16:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/opencmit/alphora","commit_stats":null,"previous_names":["opencmit/alphora"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/opencmit/alphora","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencmit%2Falphora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencmit%2Falphora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencmit%2Falphora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencmit%2Falphora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opencmit","download_url":"https://codeload.github.com/opencmit/alphora/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencmit%2Falphora/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30370312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"online","status_checked_at":"2026-03-11T02:00:07.027Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-framework","ai-agents","llm","multi-agent-systems"],"created_at":"2026-02-09T09:06:17.266Z","updated_at":"2026-03-11T04:04:30.630Z","avatar_url":"https://github.com/opencmit.png","language":"Python","readme":"\u003ch1 align=\"center\"\u003e\n\u003cimg src=\"asset/image/logo.png\" width=\"70\" style=\"vertical-align:middle; margin-right:8px;\"\u003e\n\u003cspan style=\"font-size:46px; vertical-align:middle;\"\u003eAlphora\u003c/span\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Python-3.9+-blue.svg\" alt=\"Python\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-green.svg\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\" alt=\"PRs Welcome\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cstrong\u003e构建可组合 AI Agent 的生产级框架\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n轻松构建强大、模块化且易于维护的 AI Agent 应用。\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"docs/ARCHITECTURE.md\"\u003e文档\u003c/a\u003e •\n\u003ca href=\"#快速上手\"\u003e快速上手\u003c/a\u003e •\n\u003ca href=\"#示例\"\u003e示例\u003c/a\u003e •\n\u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## 什么是 Alphora?\n\nAlphora 是一个用于构建生产级 AI Agent 的全栈框架。它提供了你所需要的一切核心能力——Agent 编排、工具执行、记忆管理、安全代码沙箱、Skills 生态、流式输出以及部署——所有功能都采用异步优先、兼容 OpenAI 的设计。\n\n```python\nfrom alphora.agent import ReActAgent\nfrom alphora.models import OpenAILike\nfrom alphora.tools import tool\n\n@tool\ndef get_weather(city: str) -\u003e str:\n    \"\"\"获取指定城市的当前天气。\"\"\"\n    return f\"{city} 的天气：22°C, 晴\"\n\nagent = ReActAgent(\n    llm=OpenAILike(model_name=\"gpt-4\"),\n    tools=[get_weather],\n    system_prompt=\"你是一个得力的助手。\",\n)\n\nresult = await agent.run(\"北京的天气怎么样？\")\n```\n\n## 安装\n\n```bash\npip install alphora\n```\n\n---\n\n## 核心特性\n\n### Agent 系统\n\n* **ReAct 循环** — 内置推理-动作循环，具备自动工具编排、重试逻辑和迭代控制。\n* **Agent 派生** — 子 Agent 继承父级的 LLM、记忆和配置。构建可共享上下文的层级结构。\n* **流式优先** — 原生异步流式传输，采用 OpenAI SSE 格式。支持多种内容类型：`char`、`think`、`result`、`sql`、`chart`。\n* **调试追踪** — 内置可视化调试器，用于追踪 Agent 执行流、LLM 调用和工具调用。\n\n### 模型层\n\n* **OpenAI 兼容** — 兼容任何 OpenAI 标准的 API：GPT, Claude, Qwen, DeepSeek 以及本地模型。\n* **多模态支持** — 统一的 `Message` 类，支持文本、图像、音频和视频输入。\n* **负载均衡** — 内置多个 LLM 后端之间的轮询/随机负载均衡。\n* **思考模式** — 支持推理模型（如 Qwen3 等），具有独立的思考流和内容流。\n* **嵌入 (Embedding) API** — 统一的文本嵌入接口，支持批量处理。\n\n### 工具系统\n\n* **零配置工具** — `@tool` 装饰器根据类型提示（Type Hints）和文档字符串自动生成 OpenAI 函数调用 Schema。\n* **类型安全** — 对所有工具参数进行 Pydantic V2 校验。自动向 LLM 返回错误反馈。\n* **原生异步** — 异步工具原生运行；同步工具自动在线程池中执行。\n* **并行执行** — 并发执行多个工具调用以提升性能。\n* **实例方法** — 支持将类方法注册为工具，并可访问 `self` 上下文（如数据库连接、用户状态等）。\n\n### 提示词引擎\n\n* **Jinja2 模板** — 动态提示词，支持变量插值、条件判断、循环和引用。\n* **长文本续写** — 自动检测截断并继续生成，突破 Token 限制。\n* **并行提示词** — 使用 `ParallelPrompt` 并发执行多个提示词任务。\n* **后处理器** — 通过可插拔的处理器流水线转换流式输出。\n* **模板文件** — 从外部文件加载提示词，便于组织和管理。\n\n### 记忆与存储\n\n* **会话记忆** — 多会话管理，完整支持 OpenAI 消息格式。\n* **工具调用追踪** — 完整的函数调用链管理及校验。\n* **置顶/标签系统** — 保护重要消息不被裁剪或修改。\n* **撤销/重做** — 在需要时回滚对话操作。\n* **多种后端** — 提供内存、JSON 文件、SQLite 存储选项。\n* **TTL 支持** — 自动清理过期会话，支持生存时间设置。\n\n### Skills（兼容 [agentskills.io](https://agentskills.io)）\n\n* **渐进式加载** — 三阶段加载（元数据 → 指令 → 资源），优化 Token 预算。\n* **生态兼容** — 使用为 Anthropic / OpenAI / Copilot 工作流发布的社区 Skills。\n* **安全资源访问** — 内置路径遍历检测和文件大小限制。\n* **SkillAgent** — 与 `SkillAgent` 开箱即用，也可插入 `ReActAgent`。\n\n### 沙箱\n\n* **安全执行** — 在隔离环境中运行 Agent 生成的代码，支持资源限制和安全策略。\n* **本地 / Docker 后端** — 本地快速运行用于开发，容器隔离用于生产。\n* **远程 Docker (TCP)** — 通过 `docker_host=\"tcp://...\"` 连接远程 Docker daemon。自动镜像校验、本地 Skills 同步、容器内文件操作。\n* **Agent 友好路径** — `uploads/` 和 `outputs/` 作为工作目录子目录（对齐 OpenAI Code Interpreter 规范），Agent 使用相对路径即可。\n* **文件与包管理** — 完整文件操作（读写/列表/复制/移动/删除）和沙箱内 pip 包管理。\n\n### Hooks（扩展与治理）\n\n* **统一事件** — 一套 Hook 系统覆盖工具、记忆、提示词/LLM、沙箱和 Agent 全生命周期。\n* **稳定默认** — 默认 fail-open（Hook 失败不会阻断主流程）。\n* **运维控制** — 执行顺序、超时、错误策略（fail-open / fail-close）和基础指标/审计模式。\n\n### 部署\n\n* **单行 API** — 使用 `publish_agent_api()` 将任何 Agent 发布为兼容 OpenAI 的 REST API。\n* **FastAPI 集成** — 基于 FastAPI 构建，自动生成 OpenAPI 文档。\n* **SSE 流式传输** — 使用服务器发送事件（SSE）实现实时流式响应。\n* **会话管理** — 内置会话处理，支持可配置的 TTL。\n\n---\n\n## 快速上手\n\n### 1. ReAct Agent + 工具\n\n```python\nfrom alphora.agent import ReActAgent\nfrom alphora.models import OpenAILike\nfrom alphora.tools import tool\n\n@tool\ndef get_weather(city: str, unit: str = \"celsius\") -\u003e str:\n    \"\"\"获取指定城市的当前天气。\"\"\"\n    return f\"{city} 的天气：22°{unit[0].upper()}, 晴\"\n\n@tool\nasync def search_docs(query: str, limit: int = 5) -\u003e list:\n    \"\"\"搜索内部文档。\"\"\"\n    return [{\"title\": \"结果 1\", \"score\": 0.95}]\n\nagent = ReActAgent(\n    llm=OpenAILike(model_name=\"gpt-4\"),\n    tools=[get_weather, search_docs],\n    system_prompt=\"你是一个得力的助手。\",\n    max_iterations=10,\n)\n\nresult = await agent.run(\"东京的天气怎么样？\")\n```\n\n### 2. 沙箱（安全代码执行）\n\n首先构建沙箱 Docker 镜像：\n\n```bash\n# 自动构建：首次使用时，如果本地找不到镜像会自动构建。\n\n# 手动构建：进入 Docker 目录并构建镜像。\ncd alphora/sandbox/docker\ndocker build --target base -t alphora-sandbox:latest .\n\n# 如果修改了 Dockerfile，需要强制不使用缓存重新构建：\ndocker build --no-cache --target base -t alphora-sandbox:latest .\n```\n\n该镜像内置 Python 3.11、Node.js 20、npm 以及常用数据处理包（numpy、pandas、matplotlib 等）。\n\n```python\nfrom alphora.sandbox import Sandbox\n\nasync with Sandbox(\n    runtime=\"docker\",\n    workspace_root=\"/data/workspace\",\n    image=\"alphora-sandbox:latest\",\n) as sandbox:\n    result = await sandbox.execute_code(\"print(6 * 7)\")\n    print(result.stdout)  # 42\n\n    await sandbox.write_file(\"outputs/result.txt\", \"done\")\n    files = await sandbox.list_files()\n```\n\n远程 Docker（TLS 加密）：\n\n```python\nfrom alphora.sandbox import Sandbox, DockerHost\n\nasync with Sandbox(\n    runtime=\"docker\",\n    docker_host=DockerHost(\n        url=\"tcp://your-server:2376\",\n        tls_verify=True,\n        tls_ca_cert=\"/path/to/ca.pem\",\n        tls_client_cert=\"/path/to/cert.pem\",\n        tls_client_key=\"/path/to/key.pem\",\n    ),\n    workspace_root=\"/data/sandboxes\",\n    skill_host_path=\"./local-skills\",\n    image=\"alphora-sandbox:latest\",\n) as sandbox:\n    result = await sandbox.execute_code(\"print('Hello from remote!')\")\n```\n\n### 3. Skills（社区与标准）\n\n```python\nfrom alphora.agent import SkillAgent\nfrom alphora.models import OpenAILike\n\nagent = SkillAgent(\n    llm=OpenAILike(model_name=\"gpt-4\"),\n    skill_paths=[\"./alphora_community/skills\"],\n    system_prompt=\"你是一个得力的助手。\",\n)\n\nresult = await agent.run(\"帮我做一个关于 AI Agent 的深度调研。\")\n```\n\n### 4. 记忆管理\n\n```python\nfrom alphora.memory import MemoryManager\n\nmemory = MemoryManager()\n\nmemory.add_user(session_id=\"user_123\", content=\"你好\")\nmemory.add_assistant(session_id=\"user_123\", content=\"你好！\")\n\nhistory = memory.build_history(session_id=\"user_123\")\n```\n\n### 5. 负载均衡\n\n```python\nllm1 = OpenAILike(model_name=\"gpt-4\", api_key=\"key1\", base_url=\"https://api1.com/v1\")\nllm2 = OpenAILike(model_name=\"gpt-4\", api_key=\"key2\", base_url=\"https://api2.com/v1\")\n\nllm = llm1 + llm2  # 自动轮询负载均衡\n\nresponse = await llm.ainvoke(\"你好\")\n```\n\n### 6. 部署为 API\n\n```python\nfrom alphora.server.quick_api import publish_agent_api, APIPublisherConfig\n\nconfig = APIPublisherConfig(\n    path=\"/alphadata\",\n    api_title=\"我的 Agent API\",\n    memory_ttl=3600,\n)\n\napp = publish_agent_api(agent=agent, method=\"run\", config=config)\n\n# 运行: uvicorn main:app --port 8000\n```\n\n```bash\ncurl -X POST http://localhost:8000/alphadata/chat/completions \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"messages\": [{\"role\": \"user\", \"content\": \"你好！\"}], \"stream\": true}'\n```\n\n---\n\n## 示例\n\n| 示例 | 描述 |\n|------|------|\n| [ChatExcel](./examples/chatexcel)           | 具备沙箱代码执行能力的数据分析 Agent |\n| [RAG Agent](./examples/rag-agent)           | 结合向量搜索的检索增强生成 Agent |\n| [多 Agent](./examples/multi-agent)          | 采用 Agent-as-tool 模式的分层 Agent |\n| [流式对话](./examples/streaming-chat)       | 具备思考模式的实时对话 |\n\n\n---\n\n## 配置\n\n```bash\nexport LLM_API_KEY=\"your-api-key\"\nexport LLM_BASE_URL=\"https://api.openai.com/v1\"\nexport DEFAULT_LLM=\"gpt-4\"\n\n# 可选：Embedding\nexport EMBEDDING_API_KEY=\"your-key\"\nexport EMBEDDING_BASE_URL=\"https://api.openai.com/v1\"\n```\n\n```python\nfrom alphora.models import OpenAILike\n\nllm = OpenAILike(\n    model_name=\"gpt-4\",\n    api_key=\"sk-xxx\",\n    base_url=\"https://api.openai.com/v1\",\n    temperature=0.7,\n    max_tokens=4096,\n    is_multimodal=True,\n)\n```\n\n---\n\n## 文档\n\n关于系统设计、组件关系和实现模式的详细信息，请参阅 [架构指南](./docs/ARCHITECTURE.md)。\n\n### 组件概览\n\n| 组件 | 描述 |\n|------|------|\n| [Agent](docs/components/cn/agent_readme.md)              | 核心 Agent 生命周期、派生、ReAct 循环 |\n| [Prompter](docs/components/cn/prompter_readme.md)        | Jinja2 模板、LLM 调用、流式传输 |\n| [Models](docs/components/cn/model_readme.md)             | LLM 接口、多模态、负载均衡 |\n| [Tools](docs/components/cn/tool_readme.md)               | tool 装饰器、注册表、并行执行 |\n| [Memory](docs/components/cn/memory_readme.md)            | 会话管理、历史记录、置顶/标签系统 |\n| [Storage](docs/components/cn/storage_readme.md)          | 持久化后端 (内存, JSON, SQLite) |\n| [Sandbox](docs/components/cn/sandbox_readme.md)          | 安全代码执行、本地/Docker/远程 |\n| [Skills](docs/components/cn/skill_readme.md)             | agentskills.io 兼容、SkillAgent 集成 |\n| [Hooks](docs/components/cn/hooks_readme.md)              | 通过统一 Hook 事件进行扩展与治理 |\n| [Server](docs/components/cn/server_readme.md)            | API 发布、SSE 流式传输 |\n| [Postprocess](docs/components/cn/postprocess_readme.md)  | 流式转换流水线 |\n\n---\n\n## 贡献者\n\n由 AlphaData 团队精心打造。\n\n\u003ctable\u003e\u003ctr\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003ca href=\"https://github.com/tian-cmcc\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/tian-cmcc\" width=\"80px;\" style=\"border-radius: 50%;\" alt=\"Tian Tian\"/\u003e\u003cbr /\u003e\u003cb\u003eTian Tian\u003c/b\u003e\u003c/a\u003e\u003cbr /\u003e\u003csub\u003e项目负责人 \u0026 核心开发\u003c/sub\u003e\u003cbr /\u003e\u003ca href=\"mailto:tiantianit@chinamobile.com\" title=\"Email Tian Tian\"\u003e📧\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003ca href=\"https://github.com/yilingliang\"\u003e\u003cimg src=\"https://cdn.jsdelivr.net/gh/yilingliang/picbed/mdings/48301768.gif\" width=\"80px;\" style=\"border-radius: 50%;\" alt=\"Yuhang Liang\"/\u003e\u003cbr /\u003e\u003cb\u003eYuhang Liang\u003c/b\u003e\u003c/a\u003e\u003cbr /\u003e\u003csub\u003e开发者\u003c/sub\u003e\u003cbr /\u003e\u003ca href=\"mailto:liangyuhang@chinamobile.com\" title=\"Email Yuhang Liang\"\u003e📧\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003ca href=\"https://github.com/jianhuishi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/jianhuishi\" width=\"80px;\" style=\"border-radius: 50%;\" alt=\"Jianhui Shi\"/\u003e\u003cbr /\u003e\u003cb\u003eJianhui Shi\u003c/b\u003e\u003c/a\u003e\u003cbr /\u003e\u003csub\u003e开发者\u003c/sub\u003e\u003cbr /\u003e\u003ca href=\"mailto:shijianhui@chinamobile.com\" title=\"Email Jianhui Shi\"\u003e📧\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003ca href=\"https://github.com/liuyingdi2025\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/liuyingdi2025\" width=\"80px;\" style=\"border-radius: 50%;\" alt=\"Yingdi Liu\"/\u003e\u003cbr /\u003e\u003cb\u003eYingdi Liu\u003c/b\u003e\u003c/a\u003e\u003cbr /\u003e\u003csub\u003e开发者\u003c/sub\u003e\u003cbr /\u003e\u003ca href=\"mailto:liuyingdi@chinamobile.com\" title=\"Email Yingdi Liu\"\u003e📧\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003ca href=\"https://github.com/hqy479\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/hqy479\" width=\"80px;\" style=\"border-radius: 50%;\" alt=\"Qiuyang He\"/\u003e\u003cbr /\u003e\u003cb\u003eQiuyang He\u003c/b\u003e\u003c/a\u003e\u003cbr /\u003e\u003csub\u003e开发者\u003c/sub\u003e\u003cbr /\u003e-\u003c/td\u003e\u003c/tr\u003e\u003ctr\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003ca href=\"https://github.com/ljx139\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/ljx139\" width=\"80px;\" style=\"border-radius: 50%;\" alt=\"LiuJX\"/\u003e\u003cbr /\u003e\u003cb\u003eLiuJX\u003c/b\u003e\u003c/a\u003e\u003cbr /\u003e\u003csub\u003e开发者\u003c/sub\u003e\u003cbr /\u003e-\u003c/td\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003ca href=\"https://github.com/Cjdddd\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/Cjdddd\" width=\"80px;\" style=\"border-radius: 50%;\" alt=\"Cjdddd\"/\u003e\u003cbr /\u003e\u003cb\u003eCjdddd\u003c/b\u003e\u003c/a\u003e\u003cbr /\u003e\u003csub\u003e开发者\u003c/sub\u003e\u003cbr /\u003e\u003ca href=\"mailto:cuijindong@chinamobile.com\" title=\"Email Cjdddd\"\u003e📧\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003ca href=\"https://github.com/wwy99\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/wwy99\" width=\"80px;\" style=\"border-radius: 50%;\" alt=\"Weiyu Wang\"/\u003e\u003cbr /\u003e\u003cb\u003eWeiyu Wang\u003c/b\u003e\u003c/a\u003e\u003cbr /\u003e\u003csub\u003e开发者\u003c/sub\u003e\u003cbr /\u003e\u003ca href=\"mailto:wangweiyu@chinamobile.com\" title=\"Email Weiyu Wang\"\u003e📧\u003c/a\u003e\u003c/td\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003c/td\u003e\u003ctd align=\"center\" width=\"170px\"\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\n## 开源协议\n\n本项目遵循 **Apache License 2.0** 协议。\n\n详情请参阅 [LICENSE](./LICENSE)。\n\n贡献代码前需要签署 [贡献者许可协议 (CLA)](CLA.md)。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencmit%2Falphora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopencmit%2Falphora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencmit%2Falphora/lists"}