KFIRE

KFIRE

Open-source gaming presence for your guild, clan, team or friends.

See who is playing what, in real time, with per-game leaderboards and achievements. Self-hosted, private, yours. The spirit of Xfire, rebuilt for your crew.

Open source/Self-hosted/Windows, macOS, Linux

Everything your crew needs

Presence, stats and achievements, without handing your data to a third party.

Real-time presence

See who in your crew is online and what they are playing, live. A lightweight tray app detects games locally and shares them instantly.

Per-game leaderboards

Playtime ranked per game across your members, merging local sessions with imported platform data without double-counting.

Steam achievements

Link Steam to import your library, playtime and unlocked achievements. Battle.net too, with more platforms on the way.

Self-hosted & private

One server, one organization, your data. Run it with Docker on your own box. Members can go invisible or hide their recent sessions any time.

One app, every guild

A tiny Tauri tray app for Windows, macOS and Linux. Link several guilds at once and set your status (online, invisible or offline) globally or per guild, right from the tray.

Games in progress

A Live games page shows who is playing right now and where their game stands: both scores and the clock on Rocket League, champion, level, KDA, creep score and gold on League of Legends, mode, current turn and placement on Hearthstone. That state is broadcast, never stored: it lives in memory for the length of the game, then it is gone.

Session recap

Pick a range of dates and times and see what the guild did during it, member by member, with the detail of every match. The recap has a shareable link, so an evening can be read back together.

Make it yours

Brand the server with your clan logo and pick a dominant color. Built-in dark and light themes, French and English.

Connect your platforms

Members link an account once; KFIRE imports their stats and shows them across the org.

Steam

Link Steam to import your full library, total playtime and unlocked achievements, merged with your live sessions without double-counting. Games you own but never launched stay out of your stats.

Battle.net

Link your BattleTag to surface your characters and stats on each game’s page: World of Warcraft (retail & Classic) item level, Mythic+ rating and raid progress, Diablo III paragon, and StarCraft II league.

Xbox

Link your Xbox and your console presence flows in: what you are playing shows up live on KFIRE even with no desktop app on the console. The only way to track gaming on a closed platform.

Riot links by Riot ID for League of Legends. Epic and PlayStation still to come.

Advanced game modules

Presence and your Steam or Battle.net library work for every game. On top of that, KFIRE ships advanced modules that pull extended, game-specific stats for select titles. Each module is a plugin an admin can switch on or off independently: turning one off stops its sync and hides its stats, while basic presence keeps working everywhere. Seven games are covered today, through their publisher’s official API where one exists, and otherwise by reading the game on the member’s own machine.

World of Warcraft

World of Warcraft

Retail and Classic characters with item level, Mythic+ rating, and raid progress surfaced on every player profile.

Diablo III

Diablo III

Seasonal and paragon progression so your leaderboard tells the full story of each member’s grind.

StarCraft II

StarCraft II

Ladder league and ranked profile pulled straight from Battle.net for competitive bragging rights at a glance.

Hearthstone

Hearthstone

No player API: the client reads the game’s own logs on the member’s machine and sends nothing but a match summary, namely the mode, the result, the number of turns, the finishing place and the hero played. In Battlegrounds, standing is measured by average placement and top-four rate: the rating appears nowhere in the logs. Windows and macOS.

Rocket League

Rocket League

No player API either: the client reads the statistics socket the game opens on the member’s machine. Result, both team scores, goals, assists, saves, shots, score and demolitions. Windows and macOS.

League of Legends

League of Legends

Ranked tiers, champion masteries and the full match history pulled from Riot, as soon as a member links their Riot ID.

PUBG: BATTLEGROUNDS

PUBG: BATTLEGROUNDS

PUBG’s API keeps a match for fourteen days and then deletes it for good, publisher included. KFIRE collects it daily and becomes the only archive left: finishing place, kills, assists, headshots, revives, damage, time survived, mode and map. The member enters their in-game name and platform. No live tracking: the API exposes nothing about a match in progress.

Only facts about the member leave their machine. A Rocket League scoresheet names team-mates and opponents, League’s API names all ten players, a Hearthstone log carries the opponent’s name and every card played, a PUBG match holds a hundred players and names the teams: none of it leaves, not even to be displayed, and the server has no column able to hold a name.

Build on top of it

A key-based public HTTP API plugs KFIRE into your own website, Discord bot or dashboard. Read-only and privacy-aware: it honors every member’s visibility toggles, and is rate-limited per key.

Presence & roster

Pull who is online and what they are playing, plus the full member list with their linked Steam, Battle.net and Xbox accounts.

Stats & library

Per-game playtime, owned libraries, Steam achievements and Battle.net characters, per member. The same data the app shows, on tap.

Invites on demand

Generate single-use registration links from your own onboarding flow, so an invite-enabled key can bring members in programmatically.

curl -H "Authorization: Bearer kfire_xxx" \
  https://your-server/api/public/v1/presence

Mint a key under Admin in the dashboard, then read the API reference. The guilde-ke.fr site runs on it.

How it works

01

Deploy the server

Spin up the Go server with Docker Compose on your own machine. Postgres and Redis included.

02

Invite your members

Create invite links from the admin dashboard. Members make an account, no email blast required.

03

Install the tray app

Members download the desktop app, approve the device in the browser, and their presence flows in.

Run it yourself

One server is one organization. Bring your own machine, keep full control of your members and their data. It is just Docker.

git clone https://github.com/knightsofeternity/kfire-server
cd kfire-server
cp .env.example .env   # set secrets + domain
docker compose up -d

Then open your domain, create the first account (it becomes admin), and invite your crew.

Get the desktop app

Install the tray app, point it at your server, and your presence is live. Runs at startup and stays out of the way.

Frequently asked questions

Everything you need to know about KFIRE.

What is KFIRE?+

KFIRE is a free, open-source, self-hosted gaming-presence tracker for guilds, clans, teams and groups of friends. It shows who is playing what in real time, with per-game leaderboards and imported Steam, Battle.net and Riot stats.

Is KFIRE free?+

Yes. KFIRE is completely free and open source, with no paid tiers. The server is AGPL-3.0, the desktop client is MIT and the protocol is Apache-2.0.

How is KFIRE different from Discord Rich Presence or Xfire?+

Unlike Discord, KFIRE is self-hosted and private to your own organization, and it keeps per-game leaderboards, playtime and achievement history. It revives the spirit of Xfire for a single team that you control.

Is my data private?+

Yes. One server is one organization that you host yourself with Docker, so no data leaves your server. And only facts about the member leave their machine: the names of their team-mates, their opponents and the other players in a match stay there, the server having no column able to hold one. Members can go invisible or hide their recent sessions at any time.

Which platforms does the desktop app support?+

Windows, macOS and Linux. The lightweight tray app detects running games locally, can launch at startup, and reports presence to your server. The Hearthstone and Rocket League modules need Windows or macOS, neither game having a native Linux client.

Does KFIRE show games in progress?+

Yes. A Live games page shows who is playing right now and where their game stands: both scores and the clock on Rocket League, champion, level, KDA, creep score and gold on League of Legends, mode, current turn and placement on Hearthstone. That state is broadcast and never stored: it lives in memory for the length of the game and disappears with it. A Session recap page then sums up a range of dates and times, member by member, with a shareable link.

What can I connect to KFIRE?+

Steam (library, playtime and achievements), Battle.net (World of Warcraft characters, Diablo III and StarCraft II) Riot (ranked tiers, champion masteries and match history on League of Legends) and PUBG (you enter your in-game name and platform, then KFIRE collects your matches daily, before the publisher deletes them after fourteen days). Hearthstone and Rocket League have no player API: the client reads the game on your own machine and sends a match summary only, with no account to link. Presence itself needs no third-party account. Epic and PlayStation are still to come.

How do I set up KFIRE?+

Deploy the Go server with Docker Compose (Postgres and Redis are included), open your domain, create the first account (it becomes admin), and invite your members. They install the desktop app and their presence goes live.

Does KFIRE have an API?+

Yes. A key-authenticated public HTTP API exposes presence, members, libraries and stats, and can generate one-time invite links. It is read-only and honors each member’s privacy settings.