A beautiful native macOS menubar application that brings your PlayStation Network profile, friends, and gaming stats right to your Mac. Track your friends' online status, view your recent games, and monitor trophy progressโall from your menubar.
- Real-time status - Online/offline/away indicator with platform info (PS5, PS4, etc.)
- Trophy showcase - View your trophy level, progress, and breakdown by type (Platinum, Gold, Silver, Bronze)
- Profile statistics - Account info, about me, and last online timestamps
- Beautiful hero header - PlayStation-branded gradient design with avatar
- Recently played games - View your last 10 games with cover art
- Trophy progress tracking - See completion percentage for each game
- Detailed game stats - Trophy breakdown, playtime, and last played dates
- Visual progress bars - Color-coded completion indicators
- Auto-import PSN friends - Automatically imports all friends from your PlayStation Network account
- Real-time status updates - See when friends are online, offline, or playing
- Friend profiles - View detailed info for any friend (trophies, games, status)
- Manual friend adding - Search and add friends by PSN username
- Filter options - Toggle between all friends or PSN-imported friends only
- Online/offline alerts - Get notified when friends come online or go offline
- Automatic checking - Background refresh every 60 seconds
- Native macOS notifications - Integrated with Notification Center
- Three-tab design - Me, Games, Friends
- Beautiful gradients - PlayStation brand colors throughout
- Smooth animations - Professional transitions and loading states
- Dark mode support - Works perfectly in light and dark modes
- Icon-based controls - Clean, minimal interface
- macOS 13.0 (Ventura) or later
- Xcode 15.0+ (for building)
- Active PlayStation Network account
- Internet connection
- Clone the repository
git clone https://github.com/yourusername/stationlink.git
cd stationlink- Open in Xcode
open StationLink.xcodeproj-
Configure Info.plist
- Add
LSUIElementkey with valueYES(makes it menubar-only) - Ensure notification permissions are configured
- Add
-
Build and Run
- Select your Mac as the target
- Press
Cmd+Rto build and run - The app will appear in your menubar (PlayStation logo icon)
(If you distribute a compiled version)
- Download the latest release from Releases
- Unzip and drag to Applications folder
- Launch StationLink
- Grant notification permissions when prompted
- Launch the app - Look for the PlayStation logo in your menubar
- Click Settings (gear icon)
- Get your NPSSO token:
- Visit playstation.com and sign in
- In the same browser, visit:
https://ca.account.sony.com/api/v1/ssocookie - Copy the 64-character token from the JSON response
- Paste token into the Settings dialog
- Click "Save & Connect"
The NPSSO (Network Platform Single Sign-On) token is required to authenticate with PlayStation's API:
// What you'll see at the ssocookie URL:
{
"npsso": "v3.ABCD1234...xyz" // โ Copy this 64-character string
}- Never share your NPSSO token - it's equivalent to your password
- Token is stored securely in macOS Keychain
- Token expires after ~60 days and will need to be refreshed
- The app uses refresh tokens to minimize re-authentication
Your personal PlayStation profile:
- Hero header - Avatar, username, status, and platform
- Trophy section - Level, progress bar, and trophy breakdown
- Currently playing - Active game session (if applicable)
- Activity info - Last online timestamp
Your gaming library:
- Recent games - Last 10 played titles with cover art
- Quick stats - Platform, last played time, completion %
- Tap any game - Opens detailed view with full trophy breakdown
- Progress indicators - Visual bars showing completion
Social features:
- Friend list - All friends with avatars and status
- Status indicators - Green (online), gray (offline), yellow (away)
- Current activity - See what games friends are playing
- Platform badges - PS5, PS4, etc.
- Filter toggle - Show only PSN-imported friends
- Add friends - Tap + icon to search and add manually
| Icon | Action | Description |
|---|---|---|
| โ๏ธ | Settings | Configure NPSSO token |
| ๐ | Refresh | Manually update all data |
| ๐ด | Quit | Close the application |
The app will send native macOS notifications for:
- โ Friend comes online
- โญ Friend goes offline
- ๐ฎ Friend starts playing a game (included in status updates)
Configure notifications:
- Open System Settings โ Notifications
- Find StationLink in the list
- Choose alert style and behavior
- Automatic updates every 60 seconds
- Runs in background even when popover is closed
- Stops when app quits - no unnecessary resource usage
- Smart caching - Minimizes API calls using refresh tokens
Automatic Import:
- Imports all friends from your PSN account on first launch
- Friends are marked with "imported" flag
- No manual entry needed for existing PSN friends
Manual Adding:
- Click Friends tab
- Tap + icon in the header
- Enter friend's PSN username (not email)
- Tap Search
- Preview shows avatar and username
- Tap Add This Friend
Per-Game Tracking:
- Total trophies earned vs available
- Breakdown by type (๐ท Platinum, ๐ฅ Gold, ๐ฅ Silver, ๐ฅ Bronze)
- Completion percentage with progress bar
- Color-coded visual indicators
Profile Summary:
- Overall trophy level (1-999+)
- Progress to next level (%)
- Total trophies across all games
What the app accesses:
- โ Your PSN profile (username, avatar, level)
- โ Your trophy data
- โ Your friends list
- โ Your recently played games
- โ Online status and presence info
What the app does NOT access:
- โ Your password (uses NPSSO token only)
- โ Payment information
- โ Messages or voice chat
- โ PlayStation Store purchases
- โ Any data outside PlayStation Network API scope
Data storage:
- NPSSO token: Stored in macOS UserDefaults (secure)
- Refresh tokens: Cached locally for 2 months
- Friend list: Saved locally (no cloud sync)
- No data sent to third parties
StationLink/
โโโ Models/
โ โโโ PSNUser.swift # User profile data model
โ โโโ PSNPresence.swift # Online status & activity
โ โโโ Friend.swift # Friend data model
โ โโโ GameTitle.swift # Game library model
โโโ Services/
โ โโโ PlayStationService.swift # API integration & auth
โโโ Views/
โ โโโ ContentView.swift # Main tabbed interface
โ โโโ UserInfoView.swift # Profile display
โ โโโ GamesListView.swift # Games library
โ โโโ FriendsListView.swift # Friends management
โ โโโ SettingsView.swift # Configuration
โโโ Resources/
โโโ AppIcon.appiconset/ # Icon assets
โโโ Info.plist # App configuration
Authentication:
POST /api/authz/v3/oauth/authorize- Get auth code from NPSSOPOST /api/authz/v3/oauth/token- Exchange code for tokens- Token refresh using refresh token (automatic)
User Data:
GET /userProfile/v1/users/me/profile2- Get own profileGET /userProfile/v1/internal/users/{id}/basicPresences- Get presence
Friends:
GET /userProfile/v1/internal/users/me/friends- Get friends listGET /userProfile/v1/internal/users/{id}/profiles- Get friend profiles
Games:
GET /gamelist/v2/users/{id}/titles- Get recent games with trophies
- SwiftUI - Modern declarative UI framework
- Combine - Reactive programming for data flow
- UserNotifications - Native macOS notifications
- URLSession - Network requests with async/await
- JSONDecoder - API response parsing
- Startup time: < 2 seconds
- Memory footprint: ~50-80 MB
- API rate limiting: Self-limited to 1 request per 60 seconds (auto-refresh)
- Token caching: Reduces authentication requests by 99%
Solution:
- Generate a fresh NPSSO token (they expire after 60 days)
- Make sure you copied the ENTIRE 64-character token
- Verify you're logged into playstation.com in the same browser
- Try a different browser (Safari, Chrome, Firefox)
Cause: Too many authentication attempts in short period
Solution:
- Wait 30-60 minutes
- Use a VPN to change IP address
- Switch to a different network
- Don't click "Refresh" repeatedly
Check:
- Verify your PSN privacy settings allow friend list visibility
- Restart the app after adding NPSSO token
- Check console logs (Xcode) for specific errors
- Make sure you have friends on PSN (minimum 1)
Possible causes:
- Privacy settings block game activity
- Haven't played any games recently
- API endpoint temporary unavailable
Solution:
- Play a game on PS4/PS5
- Check privacy settings on console
- Wait 24 hours and try again
Fix:
- System Settings โ Notifications โ StationLink
- Enable "Allow Notifications"
- Set alert style to "Banners" or "Alerts"
- Restart the app
Solution:
- Verify
LSUIElementis set toYESin Info.plist - Restart the app
- Check if it's hidden in menubar (try Cmd+drag to rearrange icons)
Manual updates:
- Pull latest code from repository
- Rebuild in Xcode
- Your token and settings are preserved
Automatic updates: (Future feature)
- Sparkle framework integration planned
- In-app update notifications
- Token expiration: NPSSO tokens expire after ~60 days (must be manually refreshed)
- API changes: Sony can change APIs without notice, breaking functionality
- Rate limiting: Aggressive refresh may trigger temporary bans
- Privacy settings: Friends with strict privacy settings may not show full data
- No PS3/Vita: Older platforms have limited API support
- English only: UI not localized to other languages (yet)
- Trophy guide integration
- Compare trophies with friends
- Game recommendations based on friends' activity
- Trophy milestones and celebrations
- Custom notification sounds
- Export data to CSV/JSON
- Widgets for macOS desktop
- Activity feed (recent friend achievements)
- Dark mode customization
- Multiple accounts support
- iOS companion app
- Apple Watch complications
- Menu bar icon shows unread friend activity
- Trophy rarity statistics
- Time played tracking
- Achievement predictions
This is a personal project, but suggestions and bug reports are welcome!
To report issues:
- Check existing Issues
- Create new issue with:
- macOS version
- App version
- Steps to reproduce
- Console logs (if applicable)
To suggest features:
- Open a Feature Request
- Describe the use case and expected behavior
Personal Use Only
This application is provided for personal, non-commercial use only.
Important Notes:
- This is an unofficial application and is not affiliated with, endorsed by, or associated with Sony Interactive Entertainment
- PlayStation, PS5, PS4, and PlayStation Network are trademarks of Sony Interactive Entertainment
- Use of PlayStation Network APIs is subject to Sony's Terms of Service
- Distribution of this app with intention to profit is prohibited
- Sony may change or restrict API access at any time
Disclaimer: This software is provided "as is" without warranty of any kind. Use at your own risk. The authors are not responsible for any bans, restrictions, or issues with your PlayStation Network account resulting from use of this application.
- PSN API Documentation: andshrew/PlayStation-Trophies
- psn-api npm package: achievements-app/psn-api
- PSNAWP Python library: isFakeAccount/psnawp
- PlayStation Network API reverse engineering community
- GitHub: @yourusername
- Issues: Report a bug
- Email: your.email@example.com
Made with โค๏ธ for PlayStation gamers on Mac
Not affiliated with Sony Interactive Entertainment
Version: 1.0.0
Last Updated: November 2025
Minimum macOS: 13.0 (Ventura)




