So... can Home Assistant run DOOM?

It started with a DOOM t-shirt at a meetup. The real question? Can Home Assistant run DOOM? Two hours later, I had a fully working DOOM integration for Home Assistant and was fighting demons on my smart home dashboard.
Frenck looking puzzled next to DOOM artwork with text 'Can Home Assistant run DOOM?' and Home Assistant and GitHub logos

Last week I was at the Home Assistant community meetup in Cologne. Packed room, good food and drinks, and the kind of conversations that only happen when you put a hundred smart home nerds in one place.

At some point I ran into T-Flow. He was wearing a DOOM t-shirt. (You can actually spot it in his video about the meetup.)

That's where this started.

We got talking about the classic internet tradition: if something has a screen and a processor, someone will eventually make DOOM run on it. Calculators. ATMs. Thermostats. Even a LEGO brick. There's an entire subreddit dedicated to it.

And then one of us said:

"But… can Home Assistant run DOOM?"

We laughed. Then we paused.

Because technically… there was no real reason it couldn't.

I made a note on my phone, and when I got home, I opened VS Code and typed the following to GitHub Copilot:

I have a wild idea :D

I want to build Doom (the game) as a card for a Home Assistant dashboard. I want the original doom game to be playable inside Home Assistant that way.

This needs to be distributed as a custom component (so don't build it into Home Assistant directly), instead, let's build a repo inside the doom folder.

The card needs to be configurable from the UI (no fiddling with YAML) and will be distributed through HACS. We can use https://github.com/piitaya/lovelace-mushroom as a repository that is a good example on how to set it up.

I want it to run the original doom game, not a recreation.

That was it.

No detailed architecture spec. No scaffolding. Just intent.

Two hours later

Less than two hours later, I had a working Home Assistant custom integration.

You install it via HACS. You add the integration. You drop the card onto your dashboard. You click "Play"...

Home Assistant DOOM card editor showing title, sound, and auto start options with a live preview of the DOOM start screen

And you're running the original DOOM.EXE inside Home Assistant.

Not a video. Not a stream. Not a recreation.

The real shareware episode of DOOM (1993), running locally in your browser through js-dos, which compiles DOSBox to WebAssembly.

It's absurd.

And it works.

0:00
/0:55

If it runs in Home Assistant, it should behave like Home Assistant

Embedding DOOM in a dashboard card would already be funny.

But that's not how Home Assistant works.

Home Assistant revolves around devices, entities and their state. Lights, switches, sensors: everything participates in the same model. Automations react to changes in state.

So if DOOM runs inside Home Assistant, it shouldn't just be a gimmick.

It should behave like a proper integration.

The custom component exposes a full set of entities under a single DOOM device.

There's a binary sensor that tracks whether someone is actively playing. The game sends a heartbeat signal while the game runs. If the heartbeat stops for more than three seconds (say, when you close the page), the sensor flips to off.

The states?

On β†’ Ripping and tearing πŸ”₯ and Off β†’ Dormant πŸ’€

Yes, I enjoyed adding that. πŸ˜‚

It also tracks who is playing, how long the current session has been running, total accumulated play time across all sessions, how many sessions have been played, and when the last session ended. All persisted across restarts.

DOOM device page in Home Assistant showing sensors, diagnostics, session tracking, and activity log

And then there's an enum sensor that rotates once per day, picking from a pool of 46 DOOM facts, development trivia, lore snippets, and classic quotes.

Oh, and there's an easter egg. Type iddqd anywhere in the Home Assistant interface (just start typing, no input field needed) and a DOOM dialog pops up, letting you play immediately. No dashboard card required. God mode activated.

Is any of this useful?

Not really. πŸ™ƒ

But once DOOM becomes part of the state machine, it becomes automatable.

You can:

  • Turn your office lights hellish red when DOOM starts.
  • Restore the previous lighting scene when it stops.
  • Display the daily DOOM fact on a wall tablet.
  • Announce who just started a DOOM session.
  • Track your household's total demon-slaying hours.
  • Trigger a playful notification.

Completely unnecessary.

Technically clean.

Very Home Assistant.

I didn't write it

Here's the part that made me stop and think.

I didn't write the backend. I didn't write the frontend card. I didn't write the packaging. I didn't write the translations (64! languages). I didn't write the README.

AI did. ✨

I used Visual Studio Code with GitHub Copilot (Claude Opus 4.6 under the hood). As part of the GitHub Stars program, I get access to Copilot, which made this experiment possible, and I'm genuinely grateful for that. πŸ™

From that initial "wild idea" prompt, it scaffolded:

  • The integration structure
  • The config flow
  • The UI-configurable card
  • The HACS-ready packaging
  • The heartbeat mechanism
  • The player tracking and session sensors
  • The quote sensor
  • The iddqd easter egg
  • The documentation

I iterated. I reviewed everything carefully. I tested it. I fixed edge cases.

But I didn't sit down and write it line by line. As a matter of fact, I didn't write a single line at all.

That's just impressive.

Why this worked

Here's the thing that surprised me most: this wasn't luck.

I've spent years helping shape Home Assistant's architecture. Strong conventions, a predictable integration structure, well-defined patterns, consistent extension points. That structure exists to help human contributors be productive.

Turns out, it helps AI too.

If Home Assistant were inconsistent or loosely defined, this would have been chaos. Instead, the architecture made it possible to describe intent and have working software emerge.

Good architecture doesn't just help humans anymore. It now amplifies machines as well. As someone who cares deeply about open-source structure and long-term maintainability, that's a fascinating thing to witness.

What this is, and what it isn't

Let's keep this grounded.

This is a silly project.

It started with a t-shirt at a meetup. It is not a roadmap item. It's not a strategic direction. But it does show something important.

When you build privacy-first, open, flexible systems, you enable experimentation. You lower the barrier to trying ideas that would otherwise feel like too much work.

And experimentation leads to learning.

Sometimes serious learning.

And sometimes… demon-slaying learning.

So… can Home Assistant run DOOM?

Yes! πŸ™Œ

It can...

I've made everything available on GitHub, so you can actually install DOOM yourself. Or just go to HACS and search for the DOOM integration directly in there.

More importantly, it shows what becomes possible when strong open-source architecture meets modern AI tooling.

And sometimes, it lets you automate your lights while fighting demons on Mars.

../Frenck

Subscribe to Frenck's newsletter and stay updated.

Don't miss anything. Get all the latest posts delivered straight to your inbox. It's free!
Great! Check your inbox and click the link to confirm your subscription.
Error! Please enter a valid email address!