CALLANYTHING
DOCS · DEPLOYABILITY

部署 Profiles
管理与安全边界

这一页把 CALL ANYTHING 的部署入口讲成 operator 能直接判断的六条路径:Local Agent Loop、All-in-One Demo、Selfhost Platform、Recovery & Evidence、Public Stack 和 Management Console。生态级 PRD 的目标是 daily-deployable:像 Sub2API / CLIProxyAPI 一样提供 one obvious quick-start path,先让你知道怎么启动、怎么检查、在哪里打开 /console/,以及哪里不该上线。

All-in-OneSelfhostRecoveryPublic StackConsoleSafety

Local Agent Loop · ready now

先把 Agent 能调用 Hotline 这件事跑通

适合本地开发和第一次验证。dev:local:plan / up / status / logs / down 负责托管本地 loop 的启动顺序、启动步骤、relay / supervisor 状态、日志文件 metadata 和停止步骤,也可用 --json 给 dashboard 或脚本消费;核心验收命令是 dev:doctor、dev:doctor -- --json、test:agent-e2e、test:mcp-golden-four 和 mcp:golden-four,用来验证 supervisor、caller-skill、MCP adapter、内置 workspace-summary Hotline 和签名结果恢复;命令目录把 dev:doctor 标成 runtime_diagnostic,把 test:agent-e2e 和 mcp:golden-four 标成 runtime_acceptance,no unmapped;dev:doctor JSON 输出 prerequisites、runtime health、caller-skill checks、blockers 和下一步命令,但不打印 raw logs 或 secret 值。

Selfhost Platform · ready now

把 Platform 作为私有控制面部署

适合团队内部 routing、catalog、token 和 console 管理。selfhost:profiles 先列出内置 profiles、deploy 目录、services 和 host ports,也可用 --json 给 console、dashboard 或脚本作为 profile selector;selfhost:quickstart 给出选定 profile 的复制粘贴命令序列,也可用 --json 给管理面渲染步骤;selfhost:plan 给出选定 profile 的 purpose、deploy 路径、services、URLs、安全检查和 notes,也可用 --json 给生成文档、dashboard 或管理脚本消费;selfhost:readiness -- --all 给出所有内置 profile 的只读 readiness 矩阵,selfhost:readiness 把选定 profile 的文件、.env、secret hygiene、public-stack origin / routes、URLs、host ports 和下一步命令收成部署总览,两者都可用 corepack pnpm --silent run ... --json 给 CI、dashboard 或管理脚本输出干净 JSON;selfhost:doctor 再诊断本地工具、profile 文件、.env 和 secret / public-origin hygiene,也可用 --json 给诊断面板展示阻断项;selfhost:init 生成或 harden .env 与强随机 secrets,corepack pnpm --silent run selfhost:init -- --json 输出 created/hardened metadata、secret hygiene、warnings 和下一步命令,但不打印 secret 值或 URL 文本;selfhost:summary 给出 deploy 路径、URLs、host ports、secret 状态和下一步命令的一屏只读概要,也可用 --json 给 dashboard 渲染 overview card;selfhost:urls 让 operator 在启动前看清 URLs,也可用 --json 给 dashboard 或部署脚本消费 URL inventory;selfhost:ports 让 operator 在启动前看清 host ports,也可用 --json 给 dashboard 或部署脚本消费声明端口 inventory;selfhost:ops-report 写出包含 URLs、host ports 与 secret 状态且不含 secrets 的交接报告,也可用 --json 给 dashboard 或管理脚本消费同一组 handoff 数据;selfhost:preflight 在启动前检查 compose、routes 和 secret hygiene,也可用 --json 给部署控制器消费同一套 gate;selfhost:status 在启动后汇总 Docker compose service state、secret hygiene 和 health endpoints,也可用 --json 给 dashboard 或管理脚本消费 runtime blockers;selfhost:config 校验 Docker compose config,--json 给 CI、dashboard 或管理脚本输出 pass/fail、blockers 和 stderr metadata,并省略可能带环境值的 compose stdout;selfhost:security-review 用于公开暴露前复核,也可用 --json 给 dashboard 或部署控制器消费 blockers 和 route contract;selfhost:audit-export 导出审计证据,selfhost:backup-plan 输出不执行的备份计划,也可用 --json 给恢复演练脚本消费 backup directory、steps 和下一步校验命令;selfhost:backup-validate 检查备份工件,也可用 --json 给恢复演练脚本消费 file status 和 blockers;selfhost:restore-plan 解释恢复演练,也可用 --json 输出不执行的有序恢复步骤;selfhost:rotate-plan 输出不执行的 secret rotation checklist,也可用 --json 给 operator runbook 渲染 backup-first、dry-run、confirm、restart 和 smoke 步骤;selfhost:rotate --json / --confirm --json 输出 secret rotation dry-run 或 confirmed rotation metadata,不打印新 secret 值。

All-in-One Demo · ready now

用单机 profile 看到完整产品形状

适合 fresh operator 在不拆分组件前先看懂 caller、responder、relay 和 platform 如何一起工作。selfhost:quickstart -- --profile all-in-one 给出单机复制粘贴路径;selfhost:readiness -- --profile all-in-one、selfhost:init -- --profile all-in-one、selfhost:preflight -- --profile all-in-one、selfhost:up -- --profile all-in-one、selfhost:status -- --profile all-in-one 和 selfhost:smoke -- --profile all-in-one 形成从检查、生成 env、启动到验收的闭环;对应 --json 入口会进入 deployability:commands 的 all_in_one_demo pipeline / track,并继承 selfhost 的 inherited safety posture,不把 secret 值打印到 dashboard 或 handoff。

Recovery & Evidence · ready now

把交接、审计、备份和轮换做成一条可过滤路径

适合 operator 在上线前和交接时确认恢复能力与证据链。deployability:overview、deployability:dashboard、deployability:action-plan、deployability:handoff 和 deployability:commands 都会把 recovery_evidence 作为 ready_now pipeline 暴露;corepack pnpm run deployability:commands -- --pipeline recovery_evidence 可以只看 selfhost:ops-report、selfhost:audit-export、selfhost:backup-plan、selfhost:backup-validate、selfhost:restore-plan、selfhost:rotate-plan 和 selfhost:rotate。ops report 写不含 secret 的 Markdown 交接报告,audit export 只输出导出 metadata,backup / restore / rotate plan 都是先演练再执行;safety matrix 会把这些命令标成 writes_report、exports_evidence、read_only 或 writes_env,方便 dashboard 在启动服务前展示风险姿态。

Public Stack · ready now

公网暴露前先看清 edge 与安全阻断项

适合准备公开 gateway、relay、platform-api 和 console 的 operator。public-stack profile 会列出 /healthz、/platform/healthz、/relay/healthz、/gateway/healthz、/console/ 的 edge route contract,并在 localhost public origin 或 placeholder secrets 下失败。

Management Console · ready now

把状态、日志、审批和 onboarding 放到可见 surface

Console 的目标是让 operator 不必只靠终端排错。deployability:console / corepack pnpm --silent run deployability:console -- --json 输出 console_management_index,把 runtime_status、settings_approval_policy、logs_guidance、billing_readiness、public_stack_console 和 gateway_session 放进一个只读管理索引。Runtime、Preferences、Help 会解释 profile、adapter health、approval policy、logs 和 billing readiness;Platform Console 现在也有 admin-only Billing 管理页。public-stack 通过 /console/、gateway session flow、published-image:plan --json、published-image:smoke、published-image:smoke -- --dry-run --json、published-image:smoke -- --image-tag <candidate-tag> 和 operator:onboarding:check 形成可验证的 Operator Onboarding;operator:onboarding:plan --json 输出首次使用阶段,operator:onboarding:check --json 输出检查结果和 blockers,供 CI、dashboard 或管理脚本消费。

总览命令地图

corepack pnpm run deployability:overview
corepack pnpm --silent run deployability:overview -- --json
corepack pnpm run deployability:quickstart
corepack pnpm --silent run deployability:quickstart -- --json
corepack pnpm run deployability:safety
corepack pnpm --silent run deployability:safety -- --json
corepack pnpm run deployability:explain
corepack pnpm --silent run deployability:explain -- --json
corepack pnpm run deployability:production
corepack pnpm --silent run deployability:production -- --json
corepack pnpm run deployability:hardening-plan
corepack pnpm --silent run deployability:hardening-plan -- --json
corepack pnpm run deployability:readiness
corepack pnpm --silent run deployability:readiness -- --json
corepack pnpm run deployability:roadmap
corepack pnpm --silent run deployability:roadmap -- --json
corepack pnpm run deployability:status
corepack pnpm --silent run deployability:status -- --json
corepack pnpm run deployability:gates
corepack pnpm --silent run deployability:gates -- --json
corepack pnpm run deployability:exposure
corepack pnpm --silent run deployability:exposure -- --json
corepack pnpm run deployability:release -- --image-tag <candidate-tag>
corepack pnpm --silent run deployability:release -- --image-tag <candidate-tag> --json
corepack pnpm run deployability:operator-checklist -- --profile public-stack --image-tag <candidate-tag>
corepack pnpm --silent run deployability:operator-checklist -- --profile public-stack --image-tag <candidate-tag> --json
corepack pnpm run deployability:doctor
corepack pnpm --silent run deployability:doctor -- --json
corepack pnpm run deployability:dashboard
corepack pnpm --silent run deployability:dashboard -- --json
corepack pnpm run deployability:dashboard -- --profile public-stack
corepack pnpm --silent run deployability:dashboard -- --profile public-stack --json
corepack pnpm run deployability:next
corepack pnpm --silent run deployability:next -- --json
corepack pnpm run deployability:next -- --profile public-stack
corepack pnpm --silent run deployability:next -- --profile public-stack --json
corepack pnpm run deployability:profiles
corepack pnpm --silent run deployability:profiles -- --json
corepack pnpm run deployability:profiles -- --profile public-stack
corepack pnpm --silent run deployability:profiles -- --profile public-stack --json
corepack pnpm run deployability:action-plan
corepack pnpm --silent run deployability:action-plan -- --json
corepack pnpm run deployability:action-plan -- --list-profiles
corepack pnpm --silent run deployability:action-plan -- --list-profiles --json
corepack pnpm run deployability:action-plan -- --profile public-stack
corepack pnpm --silent run deployability:action-plan -- --profile public-stack --json
corepack pnpm run deployability:commands
corepack pnpm --silent run deployability:commands -- --json
corepack pnpm run deployability:runbook
corepack pnpm --silent run deployability:runbook -- --json
corepack pnpm run deployability:menu
corepack pnpm --silent run deployability:menu -- --json
corepack pnpm run deployability:menu -- --profile public-stack
corepack pnpm --silent run deployability:menu -- --profile public-stack --json
corepack pnpm run deployability:console
corepack pnpm --silent run deployability:console -- --json
corepack pnpm run deployability:runbook -- --profile public-stack
corepack pnpm --silent run deployability:runbook -- --profile public-stack --json
corepack pnpm run deployability:commands -- --profile public-stack
corepack pnpm --silent run deployability:commands -- --profile public-stack --json
corepack pnpm run compat:status
corepack pnpm --silent run compat:status -- --json
corepack pnpm run deployability:handoff
corepack pnpm --silent run deployability:handoff -- --json
corepack pnpm run deployability:handoff -- --profile public-stack
corepack pnpm --silent run deployability:handoff -- --profile public-stack --json
corepack pnpm run test:deployability
corepack pnpm run test:deployability-operations

本地 Agent loop

corepack pnpm run dev:local:plan
corepack pnpm --silent run dev:local:plan -- --json
corepack pnpm run dev:local:up
corepack pnpm --silent run dev:local:up -- --json
corepack pnpm run dev:local:status
corepack pnpm --silent run dev:local:status -- --json
corepack pnpm run dev:local:logs
corepack pnpm --silent run dev:local:logs -- --json
corepack pnpm run dev:local:down
corepack pnpm --silent run dev:local:down -- --json
corepack pnpm run dev:doctor
corepack pnpm --silent run dev:doctor -- --json
corepack pnpm run test:agent-e2e
corepack pnpm run mcp:golden-four

Selfhost preflight

corepack pnpm run selfhost:profiles
corepack pnpm --silent run selfhost:profiles -- --json
corepack pnpm run selfhost:quickstart
corepack pnpm --silent run selfhost:quickstart -- --json
corepack pnpm run selfhost:plan
corepack pnpm --silent run selfhost:plan -- --json
corepack pnpm run selfhost:readiness -- --all
corepack pnpm --silent run selfhost:readiness -- --all --json
corepack pnpm run selfhost:readiness
corepack pnpm --silent run selfhost:readiness -- --json
corepack pnpm run selfhost:doctor
corepack pnpm --silent run selfhost:doctor -- --json
corepack pnpm run selfhost:init
corepack pnpm --silent run selfhost:init -- --json
corepack pnpm run selfhost:summary
corepack pnpm --silent run selfhost:summary -- --json
corepack pnpm run selfhost:urls
corepack pnpm --silent run selfhost:urls -- --json
corepack pnpm run selfhost:ports
corepack pnpm --silent run selfhost:ports -- --json
corepack pnpm run selfhost:preflight
corepack pnpm --silent run selfhost:preflight -- --json
corepack pnpm run selfhost:up
corepack pnpm --silent run selfhost:up -- --json
corepack pnpm run selfhost:status
corepack pnpm --silent run selfhost:status -- --json
corepack pnpm run selfhost:smoke
corepack pnpm --silent run selfhost:smoke -- --json
corepack pnpm run selfhost:logs
corepack pnpm --silent run selfhost:logs -- --json
corepack pnpm run selfhost:down
corepack pnpm --silent run selfhost:down -- --json
corepack pnpm run selfhost:config
corepack pnpm --silent run selfhost:config -- --json

All-in-one demo

corepack pnpm run selfhost:quickstart -- --profile all-in-one
corepack pnpm --silent run selfhost:quickstart -- --profile all-in-one --json
corepack pnpm run selfhost:readiness -- --profile all-in-one
corepack pnpm --silent run selfhost:readiness -- --profile all-in-one --json
corepack pnpm run selfhost:init -- --profile all-in-one
corepack pnpm --silent run selfhost:init -- --profile all-in-one --json
corepack pnpm run selfhost:preflight -- --profile all-in-one
corepack pnpm --silent run selfhost:preflight -- --profile all-in-one --json
corepack pnpm run selfhost:up -- --profile all-in-one
corepack pnpm --silent run selfhost:up -- --profile all-in-one --json
corepack pnpm run selfhost:status -- --profile all-in-one
corepack pnpm --silent run selfhost:status -- --profile all-in-one --json
corepack pnpm run selfhost:smoke -- --profile all-in-one
corepack pnpm --silent run selfhost:smoke -- --profile all-in-one --json

Recovery & evidence

corepack pnpm run deployability:commands -- --pipeline recovery_evidence
corepack pnpm --silent run deployability:commands -- --pipeline recovery_evidence --json
corepack pnpm run selfhost:ops-report
corepack pnpm --silent run selfhost:ops-report -- --json
corepack pnpm run selfhost:audit-export
corepack pnpm --silent run selfhost:audit-export -- --json
corepack pnpm run selfhost:backup-plan
corepack pnpm --silent run selfhost:backup-plan -- --json
corepack pnpm run selfhost:backup-validate -- --backup-dir backups/selfhost/platform/<stamp>
corepack pnpm --silent run selfhost:backup-validate -- --backup-dir backups/selfhost/platform/<stamp> --json
corepack pnpm run selfhost:restore-plan -- --backup-dir backups/selfhost/platform/<stamp>
corepack pnpm --silent run selfhost:restore-plan -- --backup-dir backups/selfhost/platform/<stamp> --json
corepack pnpm run selfhost:rotate-plan
corepack pnpm --silent run selfhost:rotate-plan -- --json
corepack pnpm --silent run selfhost:rotate -- --json

Public stack safety

corepack pnpm run selfhost:quickstart -- --profile public-stack
corepack pnpm --silent run selfhost:quickstart -- --profile public-stack --json
corepack pnpm run selfhost:plan -- --profile public-stack
corepack pnpm --silent run selfhost:plan -- --profile public-stack --json
corepack pnpm run selfhost:readiness -- --profile public-stack
corepack pnpm --silent run selfhost:readiness -- --profile public-stack --json
corepack pnpm run selfhost:doctor -- --profile public-stack
corepack pnpm --silent run selfhost:doctor -- --profile public-stack --json
corepack pnpm run selfhost:init -- --profile public-stack
corepack pnpm --silent run selfhost:init -- --profile public-stack --json
corepack pnpm run selfhost:summary -- --profile public-stack
corepack pnpm --silent run selfhost:summary -- --profile public-stack --json
corepack pnpm run selfhost:urls -- --profile public-stack
corepack pnpm --silent run selfhost:urls -- --profile public-stack --json
corepack pnpm run selfhost:ports -- --profile public-stack
corepack pnpm --silent run selfhost:ports -- --profile public-stack --json
corepack pnpm run selfhost:public-origin -- --profile public-stack --origin <public-origin>
corepack pnpm --silent run selfhost:public-origin -- --profile public-stack --origin <public-origin> --json
corepack pnpm --silent run selfhost:public-origin -- --profile public-stack --origin <public-origin> --confirm --json
corepack pnpm run selfhost:ops-report -- --profile public-stack
corepack pnpm --silent run selfhost:ops-report -- --profile public-stack --json
corepack pnpm run selfhost:preflight -- --profile public-stack
corepack pnpm --silent run selfhost:preflight -- --profile public-stack --json
corepack pnpm run selfhost:up -- --profile public-stack
corepack pnpm --silent run selfhost:up -- --profile public-stack --json
corepack pnpm run selfhost:status -- --profile public-stack
corepack pnpm --silent run selfhost:status -- --profile public-stack --json
corepack pnpm run selfhost:smoke -- --profile public-stack
corepack pnpm --silent run selfhost:smoke -- --profile public-stack --json
corepack pnpm run selfhost:logs -- --profile public-stack
corepack pnpm --silent run selfhost:logs -- --profile public-stack --json
corepack pnpm run selfhost:down -- --profile public-stack
corepack pnpm --silent run selfhost:down -- --profile public-stack --json
corepack pnpm run selfhost:config -- --profile public-stack
corepack pnpm --silent run selfhost:config -- --profile public-stack --json
corepack pnpm run selfhost:security-review -- --profile public-stack
corepack pnpm --silent run selfhost:security-review -- --profile public-stack --json
corepack pnpm run selfhost:audit-export -- --profile public-stack
corepack pnpm --silent run selfhost:audit-export -- --profile public-stack --json
corepack pnpm run selfhost:backup-plan -- --profile public-stack
corepack pnpm --silent run selfhost:backup-plan -- --profile public-stack --json
corepack pnpm run selfhost:backup-validate -- --profile public-stack --backup-dir backups/selfhost/public-stack/<stamp>
corepack pnpm --silent run selfhost:backup-validate -- --profile public-stack --backup-dir backups/selfhost/public-stack/<stamp> --json
corepack pnpm run selfhost:restore-plan -- --profile public-stack --backup-dir backups/selfhost/public-stack/<stamp>
corepack pnpm --silent run selfhost:restore-plan -- --profile public-stack --backup-dir backups/selfhost/public-stack/<stamp> --json
corepack pnpm run selfhost:rotate-plan -- --profile public-stack
corepack pnpm --silent run selfhost:rotate-plan -- --profile public-stack --json
corepack pnpm --silent run selfhost:rotate -- --profile public-stack --json
corepack pnpm --silent run selfhost:rotate -- --profile public-stack --confirm --json

Operator onboarding

corepack pnpm run operator:onboarding:plan
corepack pnpm --silent run operator:onboarding:plan -- --json
corepack pnpm run operator:onboarding:check
corepack pnpm --silent run operator:onboarding:check -- --json
corepack pnpm run published-image:plan
corepack pnpm --silent run published-image:plan -- --json
corepack pnpm run published-image:smoke -- --image-tag latest
corepack pnpm run published-image:smoke -- --image-tag <candidate-tag>
corepack pnpm --silent run published-image:smoke -- --dry-run --image-tag <candidate-tag> --json

DEPLOYABILITY FAQ

第一次部署前最该问的 3 个问题

这组问题只回答当前能被验证的事实,不把 planned 能力包装成已完成。

这页和 Quick Start 有什么区别?

Quick Start 教你先跑通 Caller 或 Responder 的最小闭环;部署 Profiles 解释 Local Agent Loop、Selfhost Platform、Public Stack 和 Management Console 四条路径分别适合什么场景、哪些已经 ready now、哪些仍是 planned。

为什么 public-stack 会在某些配置下失败?

因为公网暴露前必须先发现风险。public-stack preflight 会检查 placeholder secrets、unsafe public origin、compose config 和 edge route contract;这些失败是安全边界,不是体验瑕疵。

Selfhost 是否等于另一套产品?

不是。Selfhost 是同一 Platform 控制面的私有部署 profile,协议和调用外形不变;变化的是数据、secrets、日志、console 和公网暴露边界由 operator 自己管理。

NEXT

继续往哪看

这页解释 profile 与安全边界;接下来可以去跑本地闭环、看协议架构,或打开 console 原型理解管理面。