An independent, Pulse-inspired operations theme for Komari. It presents Komari nodes as a compact, topology-first infrastructure workspace while keeping Komari as the source of truth.
- Site, Proxmox host, VM, LXC, WSL, Docker, NAS, router, and host views
- Compact live CPU, memory, disk, network, GPU, and uptime indicators
- Filtering, sorting, collapsible groups, inline resource details, and public metric history
- Mountpoint-aware disk details with aggregate fallback
- Docker Standalone, Compose project, and Swarm service grouping from komari-bridge metadata
- Responsive density stages for wide, compact, tablet, and mobile layouts
- English and Simplified Chinese interfaces
- Anonymous
?demo=1mode for local development and screenshots
This is not a fork of komari-web. The frontend is a standalone React and Vite application with a small Komari adapter:
src/api/ WebSocket-first Komari JSON-RPC transport and DTO normalization
src/domain/ Framework-independent resource and live-metric models
src/features/ Operations topology, health, sorting, and responsive column models
src/hooks/ Komari data lifecycle and persistent UI behavior
src/components UI and interaction components
src/mocks/ Anonymous development data
The adapter prefers Komari's public RPC methods and a persistent WebSocket connection. HTTP polling remains an automatic compatibility fallback for older deployments and reverse proxies. It does not reproduce Komari's admin console, terminal, task, or configuration UI.
When nodes are reported by komari-bridge, the operations view reads
bridge_site, bridge_external_id, bridge_parent_external_id, and
bridge_resource_type from Komari tags. Site totals are derived automatically:
Standalone infrastructure resources are shown as nodes. QEMU and the Bridge resource
types docker_container, docker_compose_container, and docker_swarm_task remain
workloads; direct QEMU/LXC children still define PVE VM/CT counts. Docker workloads are
grouped by their attached host and then by Standalone engine, Compose project, or Swarm
service. Health, OOM, restart, image, and runtime metadata are read from docker_* tags.
For regular Komari Agent nodes, the Komari group field remains the manual way
to place multiple nodes in one site.
Requires Node.js 22 or newer.
npm install
npm run devOpen http://127.0.0.1:5173/?demo=1 for anonymous demo data. To connect to a local Komari server:
cp .env.example .env.local
npm run devnpm run packageThe installable archive is written to release/komari-theme-pulse-v<version>.zip and contains:
komari-theme.json
preview.png
dist/
Until the theme is included in Komari's official marketplace, add this repository as a custom source in Marketplace → Theme marketplace → Manage sources:
https://raw.githubusercontent.com/LJAYi/komari-theme-pulse/refs/heads/main/v1.json
Komari will read the current version, preview, download URL, and SHA-256 checksum from v1.json. To package a new version and regenerate the source metadata locally:
npm version <new-version> --no-git-tag-version
npm run market:sourcePublish the generated archive as a GitHub Release asset using the matching v<version> tag, then run node scripts/update-market-source.mjs once more. The second run reads GitHub's finalized asset digest so the catalog checksum matches what Komari downloads.
Komari currently has no stable public parent_uuid topology field. The theme derives a first-level presentation from Komari groups, names, operating systems, and virtualization types. A future topology API can replace this derivation without changing the table components.
Thanks to Komari, Komari Web, Komari Agent, and Pulse. See THIRD_PARTY_NOTICES.md.
MIT