?

The commitment

Rousseau-agent ships zero telemetry. The list of things rousseau explicitly does not do:

  • No analytics endpoint. There is no metrics.rousseau-agent.dev or equivalent.
  • No crash-report upload. Panics land in stderr; nothing is uploaded anywhere.
  • No license server. There is no periodic check-in and no seat verification.
  • No unique installation identifier. The binary is byte-identical across every install of the same tag.
  • No feature-flag service. Every switch in rousseau is in config.yaml or a CLI flag.
  • No update ping. rousseau version is a local lookup; there is no "checking for updates" round trip.

How to verify

The rousseau binary is open source (MIT, see LICENSE). Every network call is grep-able:

grep -rn 'http.Get\|http.Post\|http.Client\|http.NewRequest\|net/http' \
  /path/to/rousseau-agent/internal/ | head

Every hit lands in one of these categories:

Package Purpose
internal/llm/anthropic/ Anthropic API calls (via the official SDK).
internal/llm/openai/ OpenAI-compatible endpoint calls.
internal/transport/telegram/ Telegram Bot API.
internal/transport/matrix/ Matrix client-server API.
internal/transport/whatsapp/ Whatsmeow websockets to Meta.
internal/transport/slack/, discord/ Socket Mode / Discord Gateway.
internal/transport/imessage/ BlueBubbles server (on your LAN).
internal/transport/sms/ Twilio / Vonage.
internal/transport/email/ IMAP + SMTP.

None of them are analytics endpoints. Every one is either the LLM provider you configured or the transport you enabled.

Run the daemon under strace -e network or watch it with ss -tanp — the only sockets you will see are to the endpoints listed above.

Structured logging is local

Rousseau uses log/slog (internal/cli/root.go). By default the handler writes to stderr, which under the Quadlet unit lands in the systemd journal. Nothing is streamed off-host. If you want to ship logs to Loki, Datadog, or elsewhere, you configure that pipeline yourself — see Guides: Observability.

Comparison

Product Analytics Crash upload License server
rousseau-agent none none none
Vendor A (typical SaaS coding assistant) yes yes yes
Vendor B (managed control plane) yes opt-out yes

Rousseau's operating model is: you bring the LLM key, you host the daemon. There is no piece of rousseau that runs on servers Sebastien controls.

What rousseau does send to LLM providers

By definition, when you route messages through Anthropic, Bedrock, Vertex, OpenAI, or any other API, that provider sees the message content. This is inherent to how LLM inference works — rousseau is a client, not a shim.

Two mitigations if the provider's data-handling matters to you:

  1. Run against a self-hosted model. Ollama, vLLM, LM Studio, or any OpenAI-compatible endpoint. Nothing leaves your machine. See Guides: Self-hosted vLLM.
  2. Use Bedrock or Vertex in a region with a data-processing addendum. Both AWS and GCP publish per-region data-residency guarantees.

What the WhatsApp bridge sees

The unofficial WhatsApp Web protocol implemented by whatsmeow speaks to Meta's servers — that traffic is outside rousseau's control. Meta sees your messages the same way it does when you use WhatsApp Web from a browser. If Meta seeing your messages is not acceptable, do not run the WhatsApp bridge.

The whatsmeow client is publicly auditable — every packet is documented; there are no rousseau-specific network calls layered on top.

Related

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