A fast, lightweight, cross‑platform LAN group chat application built with .NET and Avalonia. Simple to set up, easy to use, and designed to work on Windows, macOS, and Linux. Perfect for chatting in a school class room, or quickly sending a link to a co-worker.
Works without requiring admin privileges. On the same subnet, the app functions even if it isn’t explicitly allowed through the firewall.
- Features
- How does it work?
- Installation (Windows, macOS, Linux)
- Usage
- Contributing
- Roadmap (extras)
- Troubleshooting (extras)
- FAQ (extras)
- Cross‑platform: Windows, macOS, and Linux.
- Simple setup: runs as a desktop app with a minimal UI.
- Local configuration: user settings stored per user profile.
- Optional password for rooms/sessions (secure, encrypted communication).
- Light on resources and quick to launch.
- Important note: Currently, messages aren’t saved after closing the app, as I don’t believe that aligns with the app’s design or purpose.
- The app sends UDP broadcast messages and listens for UDP broadcast messages.
- If you provide a password, the app encrypts the messages with AES (GCM mode). All users in the room must have the same password. The password is salted and hashed with PBKDF2 and SHA-256 (200 000 iterations) before sending each message. Then an IV is injected into the message payload also before each message. Then the salt (16 bytes) + IV (12 bytes) + ciphertext + a tag (16 bytes) is broadcasted. The receivers can deconstruct the payload and decrypt the message. Messages send with the wrong password are automatically discarded.
- The app uses the local network to communicate with other users.
You can install GroupChat using the prebuilt binaries in Releases. If you don't trust the binaries, you can build GroupChat yourself. (More info below.)
Platform-specific note:
- Password saving is currently Windows‑only. On macOS and Linux, your password will not be stored between sessions yet.
- Download GroupChat-win-x64.exe (64 bit) from Releases.
- Double‑click to run.
- Windows Defender will think the app is a virus, but it's not. Just click 'More Info' and 'Run Anyway'.
- Windows may prompt you to allow the app through the firewall. Clicking ‘Allow Access’ is optional — if you cancel (e.g., without admin privileges), the app will still function normally.
- Download GroupChat-linux-x64 from Releases.
- Make the file executable:
chmod +x GroupChat-linux-x64 - Run the file:
./GroupChat-linux-x64
- Download GroupChat-osx-arm64.zip (Apple Silicon) from Releases.
- Extract the archive.
- Make the file executable:
chmod +x GroupChat-osx-arm64 - Run the file:
./GroupChat-osx-arm64
If you need other versions (like 32 bit or ARM) feel free to ask me to publish them. Or if you don't trust the binaries, you can build GroupChat yourself. For that you will need to download and install the .NET 9 SDK. Then either clone the repo or download the zip. Afer that, you can run the following command in the root directory of the project:
dotnet publish groupchat.gui/groupchat.gui.csproj -c Release -r <YOUR RELEASE HERE (eg. win-x64)> --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true
- Enter your name and your shared password (if you have one). Make sure all users have entered the same password, otherwise you won't be able to see each other's messages.
- If you have more network interfaces, you can select which one to use.
- Select a custom port or leave the default. Make sure all participants use the same port to communicate.
- Click Start Chat or press Enter inside either the nickname or password textbox.
- You can now send messages up to 900 characters long, including emojis, to devices on your local subnet.
- To send a message, press Enter.
- You can also copy and paste messages.
- Your configuration is stored in your user profile: AppData\GroupChat on Windows, ~/Library/Application Support/GroupChat on macOS, and ~/.config/GroupChat on Linux. On Windows, your password is securely saved using DPAPI in the AppData folder
Contributions are welcome! To get started:
- Open issues for bugs or feature requests.
- Fork the repo and submit a Pull Request with a clear description.
- Keep changes focused and include repro steps or tests when possible.
High‑impact contribution ideas:
- Implement secure password storage on macOS (Keychain) and Linux (e.g., libsecret).
- Packaging helpers (e.g., .desktop files, signing/notarization guidance for macOS).
- Automated UI and integration tests.
- Secure password storage for macOS and Linux.
- Signed binaries.
- Package MasOS release with into .app
- .desktop file for Linux
- Optional feature for saving messages into an sqlite database or json
- Ability to send and receive files
- Windows: SmartScreen warning → “More info” → “Run anyway.”
- macOS: “App is damaged or can’t be opened” or “unidentified developer”
- Right‑click → Open, or run:
chmod +x /path/to/GroupChat
xattr -d com.apple.quarantine /path/to/GroupChat- Linux: “Permission denied”
- Ensure it’s executable:
chmod +x ./GroupChat-linux-x64- Connection issues
- Ensure both sides use the same port and that firewalls allow traffic.
- Try a different port if needed.
- Make sure everyone has entered the same password.
-
Is GroupChat free?
- Yes, GNU Public Licensed.
-
Does it collect telemetry?
- No personal telemetry is collected.
-
Where is my configuration stored?
- In your user profile’s application data directory for your platform.
-
Why isn’t my password remembered on macOS/Linux?
- Feature pending; currently supported on Windows only.
If you have ideas or run into issues, please open an Issue - your feedback helps shape GroupChat!