Encrypt parliament context sync after Realm mutual auth without pulling in OpenSSL. Co-authored-by: Cursor <cursoragent@cursor.com>
2.3 KiB
2.3 KiB
Parliament(议会)快速上手
密码串派生 Realm → 登录夺主席 → 常驻服务同步上下文。同一时刻只有一个主席;换项目清空全部议会上下文。
一次性初始化
# 交互输入密码,或事先 export CST_REALM_PASSWORD=…
cst-agent --realm-password-init
磁盘只存 salt + 公钥,不存私钥。
日常:登录即夺主席
export CST_INSTANCE_ID=laptop-a # 可选;默认 chair-local
cst-agent --login --realm-label "thinkpad"
# 也可:CST_REALM_PASSWORD=… cst-agent --login
效果:
- 用密码解锁 Realm,本机成为唯一主席(上一主席被交接)
- 写入本地登录票(24h)
- 拉起后台议会服务(发现 + 按 revision 同步
parliament.context)
查看状态:
cst-agent # TUI: /status 或 /realm
# /realm login # TUI 内登录并启服务
# /realm stop # 停服务
cst-agent --service-stop
密码 Realm 开启后,直接打开 agent 会要求登录(TTY 下可当场输入密码)。
协作模式
settings.json 里 "collaboration": "parliament"(或环境变量 CST_COLLABORATION=parliament)时:
- 提示词不再鼓动
task/worker_start - 本机用工具直接干活;跨设备靠 Realm peer 席位,而不是进程内子 agent
密码 Realm 存在时也会按议会模式注入 Environment(chair / 共享 context / 设备席位)。
换项目(清场)
cst-agent --new-project my-app
清空共享上下文、撤销主席与登录票,并停止本机服务。Realm 密钥保留。
传输安全
Peer 在 Realm 证书互鉴后做 临时 X25519 密钥交换,后续议会上下文同步走 XChaCha20-Poly1305(Monocypher,无需 OpenSSL)。握手前的发现/证书交换仍是明文元数据。
Docker 冒烟
bash scripts/docker_parliament_test.sh
Alpine 内构建,chair↔member 握手 + 密封通道。
相关标志
| 标志 | 作用 |
|---|---|
--realm-password-init |
创建密码 Realm |
--login |
登录 + 夺主席 + 启服务 |
--service / --service-fg |
仅启服务 |
--service-stop |
停服务 |
--new-project ID |
清场换项目 |
--peer-port N |
登录/服务用的 TCP 端口(默认 9100) |
--instance ID |
实例 id(也可用 CST_INSTANCE_ID) |