Cowpanion — Privacy
Cowpanion is a desktop toy: a few pixel-art cows graze along the bottom of your screen. This page explains exactly what it does with your data. It is the same text as the PRIVACY.md file that ships next to Cowpanion.exe.
What is stored on your machine
%APPDATA%\Cowpanion\config.json— your settings, your chosen display name, your chosen cow colour, and a randomclientId(32 hex characters). TheclientIdis generated once from the operating system's cryptographic random number generator. It is not derived from your hostname, user name, MAC address or anything else that identifies you or your computer.%APPDATA%\Cowpanion\cowpanion.log— a small diagnostic log (connection state, config warnings). Chat text is never written to this log or anywhere else on disk.HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Cowpanion— only if you turn onstartWithWindows.
What is sent over the network
Only if multiplayerEnabled is true (the default), and only to the single pasture server configured in serverUrl (default wss://cows.carlospoupado.com/ws), over TLS:
- On connect: protocol version, your
clientId, the pasture code, your display name, your cow colour. - While connected: a
pingevery 20 seconds, and any chat message you deliberately type and send with Enter. - On quit: a courtesy
bye.
That is the complete list. No hostname, OS version, usage counters, crash reports or telemetry are ever sent. The only other network call is the update check below. No analytics, no third-party services.
Update checks
The installed version checks https://cows.carlospoupado.com/updates/ shortly after it starts and once a day, and whenever you choose Check for updates in the tray. Each check is one plain HTTPS request for a small file listing the releases; its address carries the app id, your current version, os=win and arch=x64, and nothing else (no clientId, no name). A newer version is downloaded from the same address, checked against the SHA-256 in that list, and installed the next time Cowpanion starts. A check appears in the access log with your IP address for at most 7 days, like any page view. Turn off Check for updates automatically in Settings and the app only checks when you ask.
Set multiplayerEnabled to false (tray menu → Multiplayer) and turn off automatic update checks, and the app makes no network connections at all.
What other people see
Everyone in the same pasture sees your display name, your cow colour, and the chat messages you send. A pasture code is a shared secret, not authentication — treat every pasture as public to anyone who has the code.
What the server keeps
The server does not persist chat messages. Its access logs (which include IP addresses) rotate out after at most 7 days. See the server's own documentation for the full statement.
Chat input
Cowpanion never intercepts your clicks or keystrokes. The overlay is click-through at all times except during chat mode, which you start with the chat hotkey (Ctrl+Alt+C by default), which shows a visible indicator, and which ends automatically after 8 seconds of inactivity, on Enter, on Escape, or when you click anywhere else.
The hotkeys are registered with the Windows RegisterHotKey function: Windows tells Cowpanion only when one of its own combinations is pressed. Cowpanion installs no keyboard hook and never sees any other keystroke. Focus mode releases every combination except quit and the focus-mode toggle.
The tray's Chat history keeps the last 200 messages, emotes and reactions received while Cowpanion runs, in memory only. It is never written to disk and disappears when you quit.
This website
This site is a few static files. It loads no scripts, fonts, images or anything else from third parties, and sets no cookies. It is served by the same nginx that fronts the pasture server, so a visit appears in the same access log, with the same 7-day retention.