diff --git a/package/gluon-announce/files/lib/gluon/announce/nodeinfo.d/hardware/nproc b/package/gluon-announce/files/lib/gluon/announce/nodeinfo.d/hardware/nproc
new file mode 100644
index 0000000000000000000000000000000000000000..3072f8f8e30003d9131020073c2cbeb848b8dff4
--- /dev/null
+++ b/package/gluon-announce/files/lib/gluon/announce/nodeinfo.d/hardware/nproc
@@ -0,0 +1,14 @@
+local n = 0
+
+local cpus = util.trim(fs.readfile('/sys/devices/system/cpu/online'))
+
+for _, entry in ipairs(cpus:split(',')) do
+  local x, y = entry:match('(%d+)-(%d+)')
+  if x then
+    n = n + tonumber(y) - tonumber(x) + 1
+  else
+    n = n + 1
+  end
+end
+
+return n