# pianno

Release artifact generated from the development monorepo.

Install with `npm install -g @seqyuan/pianno` or your preferred package manager.

By default, `pianno restart` reads WeCom bot credentials from `~/.config/pianno/config.yml`; `PIANNO_WECOM_BOT_ID` and `PIANNO_WECOM_BOT_SECRET` remain optional overrides.

Useful commands:

- `pianno`
- `pianno setup`
- `pianno restart`
- `pianno stop`
- `pianno status`
- `pianno status --ready`
- `pianno rollout check --restart`
- `pianno help --all`
- `pianno pairing list`
- `pianno sessions list --limit 20`
- `pianno jobs list --limit 50`
- `pianno jobs events <job-id> --limit 20`

Key config behaviors:

- `setup` writes `paths.defaultWorkspaceDir` for unbound group chats
- advanced allowlists such as `allowFrom`, `opsConversationKeys`, and `opsUserIds` stay in `config.yml`

In-chat scheduling examples:

- `创建定时任务 daily-summary 每隔 30 分钟 :: 项目摘要`
- `列出定时任务`
- `取消定时任务 daily-summary`

Runtime control policy:

- keep runtime launch as one command: `pianno restart`
- user lifecycle commands: `pianno restart`, `pianno stop`, `pianno status`, `pianno rollout check`
- `pianno rollout check --restart` is the fail-closed rollout gate for automated distribution and gray release
- running `pianno` with no arguments shows common operator help and an npm install hint when a newer version is available
- run `pianno help --all` for advanced health, memory, session, job, delivery, and pairing commands
- `pianno live` is kept as a compatibility alias
- use `sessions/jobs` commands for deeper runtime observability