Use this command to install PresenceJam with WinGet:
winget install --id=PresenceJam.PresenceJam -e
PresenceJam is a productivity tool designed to automatically sync your currently playing Spotify track to your Microsoft Teams status message. This software helps users keep their music taste front and center while maintaining seamless communication in professional or remote work environments.
Key Features:
Real-time Spotify detection: Polls the Spotify Web API to identify and update your current track.
Customizable status messages: Use placeholders like {artist}, {track}, {album}, and {emoji} to create unique status formats.
Smart polling: Sleeps until the track changes, reducing unnecessary API calls and optimizing performance.
Profanity filter: Automatically replaces explicit track names with a safe placeholder.
System tray integration: Runs silently in the background for unobtrusive operation.
Audience & Benefit:
Ideal for professionals, remote workers, or anyone who values productivity and personal branding. PresenceJam allows users to effortlessly share their music preferences while maintaining focus on work, fostering team culture, or simply expressing themselves in a modern workplace environment. It can be installed via winget for easy setup.
README
PresenceJam
Sync what you're playing on Spotify into your Microsoft Teams status — automatically.
What it does
PresenceJam polls Spotify's Web API for your currently playing track and sets it as your Microsoft Teams custom status message. When the track changes, your status updates automatically. When you pause or stop, it clears your status (if you've enabled that option).
The app lives in your system tray, syncs while you work, and stays out of the way.
Features
Real-time Spotify detection — polls Spotify's Web API while a track is playing.
Teams status sync — sets your Teams custom status via Microsoft Graph.
Smart polling — sleeps until the track ends; ETag conditional GETs skip redundant Spotify calls.
Auto-clear — clears status when Spotify pauses or stops.
Profanity filter — replaces profane track names with a safe placeholder.
Customisable status template — {artist}, {track}, {album}, {emoji} placeholders.
Light & dark themes — pick whichever matches your desktop.
System tray — runs silently in the background.
Tray playback controls — Play/Pause, Previous, Next, plus Devices and Up Next submenus, straight from the tray icon.
Diagnostics page — one-click local support snapshot (versions, sanitized config, token expiry metadata, redacted log tail). Never leaves your machine.
Detachable Logs & Settings — pop Logs or Settings out into their own window and back in again.
Interface languages — English, German (Deutsch), and French (Français) via an in-app language picker.
Availability sync (opt-in) — optionally show yourself as Available in Teams while you listen.
Meeting/call-aware gating — pauses status updates while you're busy, in a meeting, on a call, or presenting.
Auto-update — silent update checks at startup and every ~24h; install immediately in-app or defer with Install on quit, which applies the verified update as the app exits.
Launch at login — optional auto-start on boot.
Secure auth — Authorization Code + PKCE OAuth for Spotify (confidential client), Device Code flow for Teams.
Download the installer for your platform from the latest release:
Windows 10/11 (64-bit) — PresenceJam-.msi (e.g., PresenceJam-v4.0.0.msi)
macOS (Apple Silicon) — PresenceJam-macos.dmg
Debian / Ubuntu / Mint / popOS (64-bit) — PresenceJam-linux-amd64.deb
Any modern Linux (64-bit, no install required) — PresenceJam-linux-amd64.AppImage
Filenames are canonical post-fix: PresenceJam-macos.dmg, PresenceJam-linux-amd64.deb / PresenceJam-linux-amd64.AppImage, PresenceJam-.msi — see the latest release for the current version.
Linux install
Debian / Ubuntu / Mint / popOS (one-time):
sudo apt install ./PresenceJam-linux-amd64.deb
# or if apt refuses the local path:
sudo dpkg -i PresenceJam-linux-amd64.deb && sudo apt-get install -f
For autostart with an AppImage, see the Tauri Linux docs — a .desktop file in ~/.local/share/applications/ plus the binary in ~/.local/bin/ is the standard pattern.
macOS first-run note
The macOS DMG is currently unsigned (Apple Developer Program enrollment is not in scope — see issue #90). On first open, macOS shows "unidentified developer". To open:
Right-click the app → Open (confirms once), or
System Settings → Privacy & Security → Open Anyway
Subsequent opens work without the prompt.
Quickstart
First time? Follow the Setup Guide — it covers installing the app, registering a Spotify Developer app, and connecting Teams.
Already set up? Just run:
# Install dependencies
npm install
# Start development mode
npm run tauri dev
# Build for release
npm run tauri build
Backend: Tauri 2 (Rust) — polling thread, API clients, token storage, system tray
Frontend: Svelte 5 + TypeScript — SPA rendered via @sveltejs/adapter-static
Storage:tokens.json encrypted at rest with AES-256-GCM (decryption key in the OS keychain — DPAPI on Windows, Keychain on macOS, Secret Service on Linux), plaintext JSON for config
Auth: Spotify Authorization Code + PKCE (confidential client) + Microsoft Teams Device Code flow