?

Overview

rousseau sms is a send-only SMS bridge backed by Twilio or Vonage. Inbound SMS requires a public HTTP webhook, which conflicts with rousseau's zero-inbound-surface posture — so rousseau does not accept inbound SMS. Use this transport with rousseau cron or from other code paths that need to text a number.

Source: internal/cli/sms.go. Transport: internal/transport/sms/.

Synopsis

rousseau sms [--provider twilio|vonage] [--from <e164|MG…>] \
             [--account-sid AC…] [--auth-token <secret>] [--api-key <key>]

Flags

Flag Type Default Effect
--provider string sms.provider twilio or vonage.
--from string sms.from E.164 sending number, or a Twilio Messaging Service SID (MG…).
--account-sid string sms.account_sid Twilio AC… AccountSID.
--auth-token string sms.auth_token Twilio auth token or Vonage API secret.
--api-key string sms.api_key Vonage API key.
--config string inherits from root Path to the YAML config file.

Config keys respected

internal/config/config.go SMSConfig:

Key Type Default Effect
sms.provider string empty Required. twilio or vonage.
sms.from string empty Required. E.164 or MG SID.
sms.account_sid string empty Twilio only.
sms.auth_token string empty Both providers.
sms.api_key string empty Vonage only.
sms.base_url string empty Override for regional endpoints or test doubles.
sms.reply_header string empty Prefix on outbound messages.

Environment variables

Variable Effect
ROUSSEAU_SMS_PROVIDER Override provider.
ROUSSEAU_SMS_FROM Override from.
ROUSSEAU_SMS_ACCOUNT_SID Override Twilio SID.
ROUSSEAU_SMS_AUTH_TOKEN Override auth token.
ROUSSEAU_SMS_API_KEY Override Vonage API key.

Startup sequence

  1. Resolve provider + from; fail if either is empty.
  2. Default claudecli.permission_mode to bypassPermissions.
  3. Open session store, build agent wiring (no inbound router used).
  4. sms.New — HTTP client.
  5. wiring.startCron — cron delivery via REST.
  6. Block on client.Start (a no-op for send-only; keeps the process alive).

Exit codes

Code Meaning
0 Clean context cancellation.
1 Missing provider/from, HTTP failure, provider/store error.
130 SIGINT.

Worked examples

rousseau sms \
  --provider twilio \
  --from "+15550001111" \
  --account-sid "$TWILIO_SID" \
  --auth-token "$TWILIO_TOKEN"

For a Messaging Service, replace --from "+1555…" with --from "MG…".

Common failure modes

  • Twilio 21606 "The 'From' phone number is not a valid message-capable Twilio phone number" — buy a proper SMS-capable number in the console.
  • Vonage Non-Whitelisted Destination — free-trial accounts can only send to verified numbers.
  • Long messages truncated — SMS is 160 GSM-7 characters per segment; both providers concatenate but charge per segment.
  • Delivery reports — rousseau does not consume delivery-status webhooks. Monitor them on Twilio/Vonage directly.

Related pages

Type to search 150+ pages. Ranking: BM25 with title/description boost.