Privacy notice

Sharing, without sharing your code.

Vibes is an ambient presence app for coding friends. Sharing activity is the point of the app, so this notice describes exactly what leaves your Mac and what does not.

Effective September 5, 2026

At a glance

This table is the practical version of the policy. The sections below explain retention, defaults, and the less obvious edge cases.

Vibes data sharing at a glance
What leaves your machineWho can see it
Identity and account Display name, timezone, and device label. The relay assigns your user ID and handle.Accepted friends see your ID, handle, and display name. The relay operator sees the account and device records. Anyone with an open invite link can see the inviter's display name.
Presence and status Online or Offline mode, update time, local-day metadata, and your optional manual status.Accepted friends and the relay operator. Offline hides the online indicator but does not stop periodic sharing while Vibes is running.
Git activity Commit counts, files changed, insertions, deletions, repositories touched, and shared repo names or aliases. The relay uses those aggregates to derive your streak and baseline. On days with up to 150 commits, pseudonymous fingerprints derived from commit hashes, times, and counts are also sent. Raw commit hashes, subjects, descriptions, and messages are never sent.Accepted friends see the activity summary, repo names or aliases, streak, and baseline. The relay operator can also access the per-commit details used for cross-device deduplication.
Optional music Player, track, artist, playback state, and capture time when enabled.Accepted friends and the relay operator.
Optional weather Your city or coordinates go to Open-Meteo. Conditions and temperature go to the relay; the city is included only when Share City is enabled.Open-Meteo receives the lookup and ordinary network data such as your IP address. Accepted friends and the relay operator see the resulting weather card.
Profile icon The generated PNG, your avatar prompt, and its style when you save it.Accepted friends and the relay operator. Anyone who obtains the public, hard-to-guess image URL can view the PNG.
Network Pulse contribution Your aggregate daily Git totals contribute to a 14-day service-wide summary.Every signed-in relay user sees the same aggregate without names or handles. The relay operator can access the underlying account-level activity records.
Account sync credential Relay address, handle, display name, and a bearer credential are placed in iCloud Keychain.Your other Macs connected to the same iCloud Keychain account can use the credential to authenticate the Vibes account and mint a device token.
Website and relay requests IP address, timestamp, requested path, response status, referrer, and user agent.The relay operator through server access logs.

What stays on your Mac

Vibes does not intentionally upload source code, file contents, raw repository paths, branch names, commit messages, filenames, your local Git name or email, editor or process history, coding-tool attribution, AI-assistant prompts, or agent transcripts. The profile-icon prompt and other text you enter yourself — such as a status or repository alias — are sent as entered, so do not put secrets in those fields.

Account and device data

Signing up creates a Vibes account and a bearer token. No email address or password is required. The relay stores your handle, display name, timezone, account timestamps, device identifiers and labels, hashed token records and last-used times, invitations, friend relationships, and administrative audit records. Invite and device-link codes are stored as hashes.

Release builds store the working token in macOS Keychain. Vibes also places the relay address, handle, display name, and a bearer credential in iCloud Keychain so your other Macs can offer to join the same account. That credential can authenticate the account and mint a new device token. Apple handles the synchronization; it may not occur when iCloud Keychain is disabled.

Presence and activity

While Vibes is running, it scans configured Git repositories and normally publishes your selected presence mode and enabled activity cards about every three minutes. The relay considers the newest Online publication online for ten minutes. This indicates that Vibes is online on your Mac; it does not prove that you were actively typing throughout that period.

Selecting Offline hides your online indicator, but it is not a pause-sharing control. The running app continues its periodic scans and can publish updated Git, music, and weather cards with an offline presence. To stop those publications, quit Vibes or disable the relevant cards or repositories.

A status includes your local day and timezone boundaries, update time, manual status, and enabled cards. Git cards can include commit counts, files changed, insertions, deletions, repositories touched, and shared repository names or aliases. Repository name sharing and aggregate Git cards are enabled by default; individual repositories can be hidden or have alias sharing disabled.

For cross-device counting on days with up to 150 commits, the app sends a deterministic SHA-256 fingerprint derived from each commit hash, plus its time and aggregate change counts. On a day with more than 150 commits, it sends no per-commit details. The raw commit hash is not sent and these details are not returned in friend feeds. The fingerprint is pseudonymous, not anonymous: someone who already knows a commit hash can calculate its fingerprint and compare it with relay data they can access.

Optional features and other services

Music and weather sharing are off by default. When music sharing is enabled, Vibes reads the current Spotify or Apple Music track locally and sends the player, track, artist, playback state, and capture time to the relay for your friends. Vibes does not send listening credentials to the relay.

Weather uses Open-Meteo. If you enter a city, that city is sent to Open-Meteo's geocoding service. If you use Location Services, coordinates are sent to Open-Meteo's forecast service. The relay receives the resulting conditions and temperature; it receives the city only when you enable Share City. Open-Meteo receives ordinary network information, including your IP address, under its own privacy terms.

Profile icons are generated on your Mac. When you save one, Vibes uploads the PNG, your profile-icon prompt, and the selected style to the relay. Friends receive the current image URL. Avatar files use public, hard-to-guess URLs rather than authenticated image requests, so anyone who obtains a URL can view that image.

Network Pulse

Every signed-in user receives the same Network Pulse: totals and trends computed from aggregate Git activity across all users of that relay, not just their friends. It covers a trailing 14-day window. Names, handles, devices, avatars, and repository names are not included. Numeric activity and contributor counts are suppressed on days with fewer than three contributors, although the app may still say that people are active. Like any small-group aggregate, the Pulse may still support inferences when someone already knows other contributors' activity.

Relay access, security, and logs

Friend-feed data is visible to accepted friends. Anyone holding a still-open invite link can retrieve the inviter's display name without signing in. Network Pulse aggregates are visible to signed-in users. The relay operator can access stored account, relationship, status, activity, avatar, prompt, and operational data to run and support the service. Vibes uses HTTPS in transit and stores bearer tokens as hashes on the relay, but friend data is not end-to-end encrypted and the relay can read it.

The web server records ordinary access logs, including IP address, timestamp, requested path, response status, referrer, and user agent. Those logs are currently retained in up to 14 daily rotations. Requested paths can contain invite codes, so treat an invite link as a secret until it is accepted, revoked, or expires. Vibes does not run an advertising or product-analytics SDK on the website or in the app.

Retention and deletion

The relay keeps the latest status for each device and retains daily activity and commit fingerprints for streaks, baselines, and cross-device deduplication. Account, device, friendship, invitation, and administrative records remain until they are deleted by the operator. Vibes does not currently apply an automatic expiry period to those records.

Saving a new profile icon or clearing the current one does not delete older avatar rows or image files. Their immutable URLs may continue to work if someone retained a link. There is not yet a self-service account export or deletion control. An operator can delete the account-linked database records, but a deletion audit entry containing the handle remains and the current deletion path does not remove historical avatar files.

Questions and requests

For a privacy question, correction, or account deletion request, email marcus@vorwaller.net. You can also inspect the source code. Do not send bearer tokens, invite codes, or other secrets by email or in a public issue.