- Confirm
.envis present and populated. - Run
make bootstrap. - Register the bot's Signal account on the laptop-hosted stack if it is not already registered.
- Run
make dev(this starts the API and ingestion worker). - Check
GET /health.
If you are running the API without Compose, start the worker separately:
python -m app.workers.ingestion_workerThis deployment uses the laptop-hosted signal-cli-rest-api stack as the bot's primary and only Signal device.
- Obtain a fresh phone number for the bot.
- Start
signal-cli-rest-api. - Call the registration endpoint for
SIGNAL_BOT_NUMBER. - Receive the SMS or voice verification code for that number.
- Call the verification endpoint to complete registration.
- Confirm the account exists in the REST API account/status view.
Because the REST API wrapper can change endpoint details across versions, verify the exact register/verify/status routes against the image version you are running.
curl http://localhost:8000/healthcurl -H "Authorization: Bearer $ADMIN_API_TOKEN" \
http://localhost:8000/admin/groupscurl -H "Authorization: Bearer $ADMIN_API_TOKEN" \
http://localhost:8000/admin/users/<user_id>/accesspython -m app.cli reembed <group_id>curl -X POST -H "Authorization: Bearer $ADMIN_API_TOKEN" \
http://localhost:8000/admin/reindex- Group messages missing: check webhook secret, app logs, and group state.
- DMs denied unexpectedly: inspect
/admin/users/{user_id}/accessand confirm recent membership evidence in anauthorizedgroup. - OpenAI failures: verify
OPENAI_API_KEY, outbound network access, and model availability. - signal-cli-rest-api unhealthy: inspect container logs and confirm the bot number is still registered on the laptop-hosted stack.
- registration fails: verify the phone number can receive SMS or voice verification and that the REST API version still exposes the expected register/verify endpoints.