Guest Runtime API

无需 Cats SDK,通过 /run/cats/runtime.sock 上的 HTTP 创建、续租、释放并查看工作租约。

使用文档
Cats 使用文档快速入门Cat 与生命周期存储与磁盘Endpoint 与网络CLI 参考HTTP API 参考Guest Runtime API控制台、身份与工作区Operation 与故障排查

用途与发现

Cat 内的应用通过工作租约表达“此任务活跃期间保持 Cat Running”。API 使用 Guest 本地 Unix socket 上的 HTTP/1.1 + JSON:

/run/cats/runtime.sock

curl --unix-socket /run/cats/runtime.sock \
  http://cats-runtime/v1/work-leases

没有默认 TCP/UDP Listener,不要求 Cats SDK,协议中也没有控制面或对象存储凭据。任何支持 Unix socket 的 HTTP 客户端都能调用。

创建工作租约

curl --unix-socket /run/cats/runtime.sock \
  -H 'Content-Type: application/json' \
  -d '{"label":"release-build","ttl_ms":300000}' \
  http://cats-runtime/v1/work-leases

成功返回 201 Created、生成的不透明 Lease ID 和剩余 TTL。默认 TTL 为 5 分钟,最大 1 小时,每个 Guest 最多有 64 个活跃租约。

续租与释放

curl --unix-socket /run/cats/runtime.sock \
  -X PUT -H 'Content-Type: application/json' \
  -d '{"ttl_ms":300000}' \
  http://cats-runtime/v1/work-leases/LEASE_ID

curl --unix-socket /run/cats/runtime.sock \
  -X DELETE \
  http://cats-runtime/v1/work-leases/LEASE_ID

建议在 TTL 约三分之一处续租。DELETE 幂等,即使租约已经过期也返回 204。成功、失败与取消路径都应释放;TTL 是进程崩溃时的恢复边界。

查看状态

curl --unix-socket /run/cats/runtime.sock \
  http://cats-runtime/v1/work-leases

响应包括 source_epoch、单调递增的 lease_sequencequiescing 与当前租约。ID 与 sequence 是不透明协调值,不是用户身份或持久游标。

稳定错误

HTTPCode处理方式
400invalid_request / invalid_json修正字段、TTL 或 JSON。
404lease_not_found工作仍活跃时创建新租约。
409activity_changedSuspend quiesce 与新工作竞态;确认 Cat 继续 Running 后重试。
429too_many_leases释放或合并调用方。

重要语义

  • 租约会阻止工作驱动 Suspend,但不证明某个 Linux 进程仍存在。
  • 该 socket 无法唤醒已经休眠的 Cat,因为此时 Guest 代码不能运行。
  • 如果 socket 存在但 acquire/renew 失败,则 keep-awake 保证没有建立。
  • 在普通本机环境中,应用可以检测 socket 不存在,并按自身策略继续。
不要在 Cats 内静默忽略失败

如果任务正确性依赖保持 Running,请暴露 acquire/renew 失败,并明确决定是否停止任务。