Invocation
rousseau [--config <path>] <command> [flags]
Every command reads defaults from ~/.config/rousseau/config.yaml (or the file passed via --config). Flags override env vars, env vars override the file, the file overrides hard-coded defaults.
Global flags
| Flag | Type | Default | Notes |
|---|---|---|---|
--config |
string | $XDG_CONFIG_HOME/rousseau/config.yaml |
Load configuration from this file. Absent means the default XDG path. |
--help, -h |
bool | — | Print help for the current command. |
Command tree
rousseau
├── chat Bubble Tea TUI
├── whatsapp WhatsApp bridge (whatsmeow)
├── signal Signal bridge (signal-cli JSON-RPC)
├── telegram Telegram Bot API long-polling
├── matrix Matrix client-server API
├── slack Slack Socket Mode
├── discord Discord Gateway
├── sms SMS send-only (Twilio / Vonage)
├── imessage BlueBubbles-backed iMessage bridge
├── email IMAP inbound + SMTP outbound
├── mcp MCP JSON-RPC 2.0 server over stdio
├── cron Manage scheduled prompts
├── session Inspect / delete session store
├── skills List / show / lint skills
├── doctor Diagnose the local installation
├── status Print daemon status
├── init Write a default config to ~/.config/rousseau/
└── version Print version, commit, build date
rousseau chat
Open the interactive Bubble Tea TUI.
| Flag | Type | Default | Notes |
|---|---|---|---|
--session |
string | — | Resume an existing session by ID. |
--title |
string | timestamp | Title for a new session. |
rousseau whatsapp
Run the WhatsApp bridge. Prints a QR code on first launch.
| Flag | Type | Default | Notes |
|---|---|---|---|
--store |
string | $XDG_DATA_HOME/rousseau/whatsapp.db |
Path to the whatsmeow device store. |
--allow |
[]string | none | Restrict inbound handling to these JIDs. Repeatable. Never leave empty on a public number. |
rousseau signal
Run the Signal bridge. Spawns signal-cli jsonRpc as a subprocess.
| Flag | Type | Default | Notes |
|---|---|---|---|
--account |
string | from signal.account |
E.164 phone number the daemon runs as. |
--binary |
string | signal-cli |
Path to the signal-cli executable. |
--allow |
[]string | none | Restrict inbound to these E.164 numbers. |
rousseau telegram
Run the Telegram Bot API long-poller.
| Flag | Type | Default | Notes |
|---|---|---|---|
--token |
string | from telegram.token |
BotFather token. |
--allow |
[]string | none | Restrict inbound to these chat IDs. |
rousseau matrix
Run the Matrix bridge.
| Flag | Type | Default | Notes |
|---|---|---|---|
--homeserver-url |
string | from config | e.g. https://matrix.org. |
--access-token |
string | from config | Bot's access token. |
--user-id |
string | from config | Bot's Matrix user ID (@bot:matrix.org). |
--allow |
[]string | none | Restrict inbound to these user IDs. |
rousseau slack
Run the Slack Socket Mode bridge.
| Flag | Type | Default | Notes |
|---|---|---|---|
--app-token |
string | from config | xapp-... Socket Mode token. |
--bot-token |
string | from config | xoxb-... Bot User OAuth token. |
--allow |
[]string | none | Restrict inbound to these Slack user IDs. |
rousseau discord
Run the Discord Gateway bridge.
| Flag | Type | Default | Notes |
|---|---|---|---|
--token |
string | from config | Bot token. |
--allow |
[]string | none | Restrict inbound to these Discord user IDs. |
rousseau sms
Send-only SMS via Twilio or Vonage. No inbound.
| Flag | Type | Default | Notes |
|---|---|---|---|
--provider |
string | from config | twilio or vonage. |
--from |
string | from config | E.164 sender number. |
--account-sid |
string | from config | Twilio Account SID. |
--auth-token |
string | from config | Twilio auth token or Vonage secret. |
--api-key |
string | from config | Vonage API key. |
rousseau imessage
BlueBubbles-backed iMessage bridge.
| Flag | Type | Default | Notes |
|---|---|---|---|
--base-url |
string | http://localhost:1234 |
BlueBubbles server URL. |
--password |
string | from config | BlueBubbles server password. |
--chat-guid |
string | from config | Outbound target. |
--poll-interval |
duration | 5s | How often to poll for new messages. |
--allow |
[]string | none | Restrict inbound. |
rousseau email
Email bridge over IMAP + SMTP.
| Flag | Type | Default | Notes |
|---|---|---|---|
--imap-addr |
string | from config | e.g. imap.example.com:993. |
--imap-username, --imap-password |
string | from config | IMAP credentials. |
--smtp-addr |
string | from config | e.g. smtp.example.com:587. |
--smtp-username, --smtp-password |
string | from config | SMTP credentials. |
--from |
string | from config | Envelope sender. |
--poll-interval |
duration | 30s | IMAP poll cadence. |
--allow |
[]string | none | Restrict inbound sender addresses. |
rousseau mcp
Start the MCP server on stdio. No flags — every knob lives in config.yaml.
rousseau cron
| Subcommand | Description |
|---|---|
cron add |
Add a scheduled prompt. Flags: --name, --schedule (5-field cron), --prompt, --deliver-to. |
cron list |
List every job with on/off status and last-run timestamp. |
cron remove <name-or-id> |
Delete a job. |
cron enable <name-or-id> |
Enable a disabled job. |
cron disable <name-or-id> |
Disable an enabled job (without deleting). |
rousseau session
| Subcommand | Description |
|---|---|
session list |
List sessions in the store, newest first. |
session search <query> |
FTS5 search across every session's message content. |
session show <id> |
Print a session's message history. |
session delete <id> |
Delete a session. |
rousseau skills
| Subcommand | Description |
|---|---|
skills list |
List discovered skills from skills_dir. |
skills show <name> |
Print a skill's YAML front-matter and body. |
skills lint |
Validate skills for schema conformance. |
rousseau doctor
Walk every runtime dependency and every config choice. Prints a status report with rows tagged ok, warn, fail, info. Exit code 1 if any row is fail.
No flags today; extend via --config at the global level.
rousseau status
Print a compact daemon-status summary — provider, session count, cron jobs. Read-only.
rousseau init
Write a default config.yaml to ~/.config/rousseau/. Refuses to overwrite an existing file unless --force is passed.
| Flag | Type | Default | Notes |
|---|---|---|---|
--force |
bool | false | Overwrite an existing config. |
rousseau version
Print version, commit hash, and build date. Stamped at build time via -ldflags.
Exit codes
| Code | Meaning |
|---|---|
| 0 | Command completed successfully. |
| 1 | Command failed. Error is printed to stderr. |
See Reference: Exit Codes for the daemon signal semantics.
Environment variables
Every config field can be overridden by an environment variable using the ROUSSEAU_ prefix and _ as the section separator: ROUSSEAU_LOG_LEVEL=debug, ROUSSEAU_ANTHROPIC_API_KEY=sk-ant-..., etc.
The special case is ANTHROPIC_API_KEY (without prefix) — it is picked up directly by the config loader to match convention.
Troubleshooting
unknown command when passing a subcommand
Rousseau's subcommands are declared in internal/cli/root.go. If rousseau <cmd> reports unknown, either the flag is misspelled or you are on an older binary. rousseau version shows what you have.
Repeatable flags need multiple invocations
--allow accepts one JID per flag. Repeat the flag for multiple values: --allow A --allow B, not --allow A,B.
Env vars silently ignored
Rousseau uses ROUSSEAU_ prefix + underscore section separator: anthropic.model becomes ROUSSEAU_ANTHROPIC_MODEL. Case matters.
rousseau chat shows only a blank screen
The Bubble Tea TUI needs an ANSI-capable terminal. Set TERM=xterm-256color and run interactively (not under nohup or a pipe).
Command exits 0 immediately
Some flags (--help, --version variants) short-circuit. If your command doesn't run, check the flags you passed.
Related pages
- User Guide: TUI — keybindings inside
rousseau chat. - User Guide: Tools — every built-in tool's JSON schema.
- Reference: CLI Commands — command table.
- Reference: Environment Variables — override matrix.
- Configuration — the config file backing every command.
Further reading
internal/cli/root.go— the Cobra tree.internal/cli/chat.go,internal/cli/whatsapp.go,internal/cli/slack.go, … — one file per subcommand.internal/config/config.go— env var / flag resolution.