# Signal Deploy

Check and deploy Signal (the `remote-api` service in `remote/`) to production from a...

- Repository: https://github.com/nightly-labs/openbot (4509 stars)
- Category: DevOps
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add nightly-labs/openbot --skill signal-deploy -g -a claude-code -y`
Codex: `npx skills add nightly-labs/openbot --skill signal-deploy -g -a codex -y`
Cursor: `npx skills add nightly-labs/openbot --skill signal-deploy -g -a cursor -y`
Gemini CLI: `npx skills add nightly-labs/openbot --skill signal-deploy -g -a gemini-cli -y`

## Description

Check and deploy Signal (the `remote-api` service in `remote/`) to production from a release tag. Use when asked to deploy, redeploy, update or roll back Signal, to check that a Signal deployment has all its secrets and no regressions, or when a release tag changes `remote/` or `packages/contracts/src/signal-protocol`.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Signal deploy

Signal runs on `sui-alexandria` in the Compose project `openbot-remote` (`/opt/openbot/remote`). It
has no database: a restart closes the signalling WebSockets and empties the in-memory rooms, routes
and resume-token cache. Active WebRTC data channels stay up. coturn is a separate container.

[docs/remote-session-deployment.md](../../../docs/remote-session-deployment.md) is the source for
the staging, build and rollback commands. This skill adds the checks before and after them.

## When to deploy

CI and the release workflow do not deploy Signal. For each release, find the running commit (step 1).
When `git diff --quiet <running> <tag> -- remote packages/contracts/src/signal-protocol` finds changes,
deploy Signal from the local tag before the tag is pushed. Compare with the running commit, not with
the previous tag: an earlier release can have left Signal behind. The push starts the release
workflow, which does not wait for Signal ([docs/RELEASING.md](../../../docs/RELEASING.md), preflight
item 16). Example: #1661. The v0.33.0 clients sent `webhookRoute`, but production Signal
was older than #1520. It had no `/v1/webhooks` route and refused webhook-only ingress sockets with
`authentication_required`.

## Rules

The rest: https://github.com/nightly-labs/openbot/blob/HEAD/.agents/skills/signal-deploy/SKILL.md
