A modern macOS desktop application that allows you to appear offline in League of Legends, VALORANT, and Legends of Runeterra without losing any functionality.
Phantom Dancer is a native macOS port and modernization of the Deceive project, rebuilt from the ground up using modern .NET 9.0 and Avalonia framework. This project brings the offline appearance functionality to macOS users through a clean, native desktop experience.
Original Project: Deceive by Thijs Molendijk
- Appear Offline: Show as offline to your friends while maintaining full functionality
- Full Access: Invite friends, accept invites, communicate in champion/agent select
- System Tray Integration: Minimalist tray icon for easy management
- Presence Control: Switch between online, offline, and mobile status
- Modern UI: Built with Avalonia for a native look and feel on macOS
- Lightweight: Efficient resource usage with single executable distribution
Phantom Dancer works by intercepting traffic between the Riot Client and chat servers, allowing you to control your presence without affecting any game functionality. All communication features remain fully operational.
Download Phantom.app or Phantom.dmg from the Releases page.
- .NET 9.0 SDK or later
- macOS 10.15+
-
Clone the repository:
git clone https://github.com/stephendo-dev/phantom-dancer.git cd phantom-dancer -
Restore dependencies:
dotnet restore
-
Build the project:
dotnet build
-
Run the application:
dotnet run --project Phantom/Phantom.csproj
dotnet publish -c ReleaseYour friends list works normally - you can invite everyone. Friends won't be able to invite you, but they can still accept your invites.
Yes! Only your global presence is filtered. All in-game communication works perfectly.
On first launch, Phantom Dancer will ask which game you want to connect to. You can change this anytime using the tray icon. You can also launch with command-line arguments:
PhantomDancer lol # League of Legends
PhantomDancer valorant # VALORANT
PhantomDancer lor # Legends of RuneterraRiot has confirmed that you won't get banned for using Deceive (the original project). However, modifications may break at any time.
Phantom Dancer intercepts traffic using deceive-localhost.molenzwiebel.xyz. If your network doesn't resolve this domain, try:
- Change DNS to Cloudflare (1.1.1.1) or Google (8.8.8.8)
- Edit hosts file and add:
127.0.0.1 deceive-localhost.molenzwiebel.xyz
For detailed instructions, search "how to edit hosts file [your OS]".
- Framework: .NET 9.0
- UI Framework: Avalonia 11.0
- Architecture: MVVM (Model-View-ViewModel)
- Key Dependencies:
- Avalonia.Desktop - Cross-platform UI
- CommunityToolkit.Mvvm - MVVM utilities
- EmbedIO - Web server for communication
- System.CommandLine - Command-line parsing
phantom-dancer/
├── Phantom/ # Main application
│ ├── Phantom.csproj # Project file
│ ├── Resources/ # Icons and assets
│ │ ├── phantom.ico
│ │ ├── tray.png
│ │ ├── PhantomDancer.icns # macOS icon
│ │ └── games/ # Game icons
│ └── ...
├── Phantom.sln # Solution file
├── scripts/ # Build utilities
└── README.md
Licensed under the MIT License - see the LICENSE file for details.
This project is a modernized port of Deceive by Thijs Molendijk. The core functionality and approach remain faithful to the original project while being rebuilt for modern .NET and expanded to macOS with native support.
Contributions are welcome! Feel free to submit Pull Requests for bug fixes, features, or improvements.
If you find this project useful and would like to support its development, you can donate via:
- Ko-fi: https://ko-fi.com/stephendo
For issues or questions, please open an issue on GitHub.
Note: This is a third-party project. It is not affiliated with, endorsed by, or in any way associated with Riot Games, Inc. or any of its properties.

