Gateway Rollout
Use this playbook when each service channel already works on its own and the next job is giving one host explicit runtime ownership. This page is not a shortcut around the earlier steps. It assumes:- the base CLI path already works
- each selected runtime-backed surface already survived its own
serveloop - named accounts already exist for any channel family that needs selectors
What This Playbook Covers
| Covered here | Not covered here |
|---|---|
gateway run, gateway status, and gateway stop | provider first-run setup |
multi-channel-serve as the foreground compatibility wrapper | single-channel smoke tests from zero |
selector syntax such as lark=work or wecom=alerts | outbound-only surfaces pretending to join the same reply-loop owner |
Use A Different Playbook If
| If you actually need… | Go here instead |
|---|---|
| one hosted provider plus a Feishu or Lark room from near-zero | Volcengine Plus Feishu Or Lark |
| WeCom as the main enterprise lane from near-zero | WeCom Rollout |
| BytePlus Coding plus one Telegram bot from near-zero | BytePlus Coding Plus Telegram |
Step 1: Confirm The Precondition
Before introducing gateway ownership, each service channel should already work with its own foreground loop. Shortest preflight loop:Step 2: Make Account Ids Explicit
Example config shape:- selectors are meant to point at
accounts.<id> default_accountkeeps the fallback lane explicit- rewriting one top-level secret block is the wrong preparation for gateway ownership
Step 3: Choose Foreground Or Persisted Ownership
Foreground compatibility wrapper:| Need | Better command |
|---|---|
| one visible foreground shell while rolling out | multi-channel-serve |
| one persisted owner that another process can inspect or stop | gateway run |
Step 4: Control And Inspect Ownership
status --json whenever another process or operator needs the shortest
machine-readable view of the current owner state.
Common Failure Modes
| Symptom | What to check |
|---|---|
| startup fails immediately on a selector | the selector must be CHANNEL=ACCOUNT, and the account id must exist |
| two selectors target the same family | one channel family can only appear once in the selector list |
| an outbound-only surface is expected to join the gateway | that surface does not belong in this runtime-backed owner model |
| single-channel serve never worked, but gateway rollout started anyway | go back and validate each service channel in isolation first |
Continue Reading
- Continue to Gateway And Supervision for the owner contract without the rollout framing.
- Continue to Common Setups for the broader end-to-end setup hub.
- Continue to Channel Guides for the full shipped channel matrix.
- Continue to Channel Recipes if one of the underlying service channels still needs its own smoke test path.