Back to the catalogue

Doom

Play DOOM (1993 shareware) inside Astra via js-dos

Install in Astra

In Astra, open Plugins and search for:

doom

Don’t have Astra yet? Get Astra

Details

Updated
2026-08-19
License
GPL-2.0-or-later
Status
Grandfathered until 2026-12-15 06:00 UTC

Being listed means these bytes were published by the repository shown and passed the registry’s automated checks. It is not a sandbox, not a security review, and not an endorsement.

About

Doom

A "Doom" page in Astra that runs the Chocolate Doom engine, compiled to WebAssembly, on the Freedoom data set.

What it does

Adds a page to Astra's navigation. Open it and you are playing a first-person shooter inside your assistant. Keyboard input goes to the game while the page has focus; the canvas scales to the window according to the setting below.

Everything runs locally in the Astra window — the engine is a .wasm binary in the bundle, and the game data is packed beside it. There is no server, no streaming and no account.

What it needs

Nothing beyond Astra. Be aware of the size: the bundle is about 15 MB to download and about 36 MB on disk once installed — by far the largest example in this repository. (Measured on a linux-x64 build; the compressed figure is what the store shows you before you click Install.)

Capabilities it asks for, and why

CapabilityWhat it allowsWhy this plugin asks
ui_contributionsThe plugin may add its own surfaces to the Astra windowThe "Doom" page
dom_accessThe plugin's JavaScript runs inside the Astra window, with access to the page: your conversations on screen, and every other plugin's interfaceA WebAssembly game needs a canvas, an input loop and an audio context in that window

dom_access is high risk and Astra will say so before installing. The code it covers here is ui/doom.js plus the Emscripten-generated ui/chocolate-doom.js, which loads ui/chocolate-doom.wasm. That generated file is machine output and is not realistically reviewable line by line — which is exactly the kind of thing worth knowing before you grant a plugin the run of your window.

Configuration

SettingDefaultMeaning
Scale Modefitfit (letterboxed), stretch, or pixel-perfect (integer scaling, sharpest)

Licensing — read this before forking

The bundle contains two pieces of other people's work:

  • Chocolate Doom, the engine, is licensed GPL-2.0. chocolate-doom.js and chocolate-doom.wasm are builds of it and carry that licence with them.
  • Freedoom supplies the game data (doom1.wad inside chocolate-doom.data), under a modified BSD licence — freely redistributable. No commercial DOOM WAD is included.

plugin.toml declares GPL-2.0-or-later, and that is a statement about the BUNDLE rather than about src/. Chocolate Doom's own source headers carry the ordinary "either version 2 of the License, or (at your option) any later version" boilerplate, so the engine is GPL-2.0-or-later and an aggregate that ships it is distributed on those terms.

It said MIT until 2026-08-19, and this section said that had to be resolved before anyone could install it. It was not: the plugin was published to the catalogue twice with the wrong label, and delisted the same day once this paragraph was read. The label is now the honest one and the listing is back.

What that does NOT touch: the Rust and JavaScript in src/ and ui/doom.js remain the authors' to license as they like at the source level — the GPL term is on the combined thing that is distributed. It reaches no other plugin, and it does not reach Astra: a plugin is a separate process speaking gRPC over loopback, which is the arm's-length boundary this architecture was built with.

Build it yourself

cd examples/doom
cargo build --release
astra-plugin build

The engine and data are committed, so there is nothing to download first.

Files

  • src/main.rs — the backend: declares the page and serves its config.
  • ui/doom.js — the page: canvas, input, engine bootstrap.
  • ui/chocolate-doom.{js,wasm,data} — the engine build and Freedoom data.
  • icon.svg — the store icon, hand-drawn SVG.

MIT licensed (src/ and ui/doom.js — see the licensing section above).

Releases

0.1.32026-08-19

Protocol 1

Permissions

  • dom_access High riskThe author says: “Runs the js-dos emulator inside the Astra window, which is what playing DOOM in a panel requires”
Files and provenance
TargetSizeSHA-256
linux-x64doom-0.1.3-linux-x64.astraplugin16 MBb97b081e5d5b68c92460bb87056a3c4480248d93f561f33287a7fd63d472d911
windows-x64doom-0.1.3-windows-x64.astraplugin15.6 MBbbd51da258b5281a51f2df5391b7dfa5aa527493ce803cd4cbbda558b2bd53bb

Provenance

Repository
mihailinl/AstraPlugins
Release repository
mihailinl/AstraPlugins
Tag
doom-v0.1.3
Commit
e12b9e301a43bf5729c283d6179f012d32051a20
Older releases (3)

0.1.22026-08-19

Protocol 1

Permissions

  • dom_access High riskThe author says: “Runs the js-dos emulator inside the Astra window, which is what playing DOOM in a panel requires”
Files and provenance
TargetSizeSHA-256
linux-x64doom-0.1.2-linux-x64.astraplugin16 MBfc006318f9d0a4e7b38728f1eeb3b032f583c6fce314ba43f97d665a694bd23e
windows-x64doom-0.1.2-windows-x64.astraplugin15.6 MB84f908477dd1fcc5cd90691bb7f922d3d7b78ec34ad7260257c1872f00ecc3d0

Provenance

Repository
mihailinl/AstraPlugins
Release repository
mihailinl/AstraPlugins
Tag
doom-v0.1.2
Commit
ff566e83f89133c182dec9eb7ae19d94f858f498

0.1.12026-08-19

Protocol 1

Files and provenance
TargetSizeSHA-256
linux-x64doom-0.1.1-linux-x64.astraplugin16 MB90bfffe757c5b879bcfb7c092f438ff95bba9f5db170e703208d3ca52dfa130f
windows-x64doom-0.1.1-windows-x64.astraplugin15.6 MBcea7f51d67bd983274ff4313dbeb63a39b14fad3e29b70a33f166049d0fd569a

Provenance

Repository
mihailinl/AstraPlugins
Release repository
mihailinl/AstraPlugins
Tag
doom-v0.1.1
Commit
5b5d2605961b54271b74304f6988972edb83d598

0.1.02026-08-10

Protocol 1

No SHA-256 — this release cannot be installed.

Files and provenance
TargetSizeSHA-256
linux-x64doom-0.1.0-linux-x64.astrapluginNo SHA-256 — this release cannot be installed.
windows-x64doom-0.1.0-windows-x64.astrapluginNo SHA-256 — this release cannot be installed.

Provenance

Repository
mihailinl/AstraPlugins
Release repository
mihailinl/AstraPlugins
Tag
doom-v0.1.0
For the publisherThis listing has to be bound to a repositoryBind by 2026-12-15 06:00 UTC · cutover 2026-10-16 06:00 UTCHow

Migration notice, round 2.

The binding deadline is 2026-12-15 06:00 UTC.

Binding needs a Minice account that owns Astra, a binding line committed to the repository, a new tag, and a moderator’s approval of the first binding.

A release that is not held and passes the automated checks is published at once, marked not reviewed by moderators.

From 2026-10-16 06:00 UTC, a held release waits until this listing is bound.

Binding happens in the plugins panel; there is nowhere else to do it. Repository bindings