Skip to content

About

Community web administration dashboard for Pumpkin: official WASM API plugin and local Node.js companion.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Pumpkin Dashboard

A community administration plugin for Pumpkin 0.1.0-dev+26.2-26.45, the latest published release checked on September 14, 2026. Uses the official Pumpkin WASM plugin API with the stock, unmodified server. Derived from Aryaa2020's fork. Official endorsement or marketplace publication requires Pumpkin-MC approval.

Install

Requires Node.js 22+ and the Pumpkin release above. The same .wasm plugin works across Pumpkin platforms; the companion runs anywhere Node does. Download the plugin and companion bundle from this repository's Releases page. The server executable and a world are not included in the plugin release.

  1. Extract the dashboard release archive into a separate folder. Copy pumpkin-dashboard.wasm to your server's plugins/ directory.

  2. Add this per-plugin permission section to the server's pumpkin.toml (merge it if that section already exists), or approve those two permissions in Pumpkin's normal plugin prompt on first startup:

    [plugins.overrides.pumpkin-dashboard]
    allowed_permissions = ["fs.read.data", "fs.write.data"]
  3. From the dashboard folder, run:

    node scripts/setup.mjs "/absolute/path/to/your/server"
    node scripts/launch.mjs

    Setup generates a password and dashboard.local.json; it does not overwrite an existing configuration. Set executable in that JSON if your server binary is not named pumpkin.exe (Windows) or pumpkin (other platforms). Set port to change the dashboard port. The launcher captures server stdout, stderr and command replies in logs/dashboard-console.log, retaining the previous run as .previous. The log grows during a run; normal server logs remain managed by Pumpkin. The browser reads only a bounded tail.

The dashboard binds to loopback only. It is a local administrator interface. If Pumpkin is already managed by another process, start only node server.mjs and set logFile to that process manager's captured stdout/stderr file. Pumpkin's ordinary logs/latest.log omits command replies, because those use stdout.

On Windows, after setup, ./Start-Dashboard.ps1 starts the launcher. Open http://127.0.0.1:8080 and sign in as owner with the generated password in runtime/dashboard-login.txt. Ctrl+C asks Pumpkin to save and stop. Do not start a second server copy while it is running. The plugin supports both online and offline-mode servers; it does not change Minecraft authentication settings.

What works

The interface uses the locally bundled Tabler 1.5.1 dashboard template and Tabler Icons 3.46.0, customized with indigo panels, pumpkin-orange accents, responsive navigation and an original voxel illustration. No CDN connection is needed. Template/icon license notices are included in web/vendor.

  • Responsive overview, searchable players, performance charts and editable settings.
  • Start, graceful stop, restart, and explicitly confirmed force stop. The panel stays available when Pumpkin is stopped. Launch with --no-start to start only the panel.
  • Validated options, resource packs and advanced TOML editing; changes apply after restart.
  • Operators, whitelist, player bans and IP bans, online or while stopped. Exact UUIDs are required; offline and online player identities differ.
  • File browsing, text editing, upload/download, rename, folders and recovery copies.
  • WASM plugin upload, enable/disable and removal. Host compatibility and permissions are checked by Pumpkin on startup; downloaded plugins are not sandbox-reviewed here.
  • World generation, selection, regeneration and ZIP import/export.
  • Local backups of configuration, player lists, plugins and all discovered worlds; checked restores keep a safety backup and a recovery copy.
  • Additional administrator accounts with per-feature permissions and session revocation.
  • Recurring backups, restarts and console commands while the companion is running.
  • Official Pumpkin release downloads with SHA-256 verification and executable recovery.
  • Administration activity history. See FEATURES.md for scope and limits.
  • Live TPS measured from completed tick events and monotonic elapsed time. The release API's get_tps() reports reciprocal work time, so it is deliberately not used as the actual tick rate.
  • MSPT from Pumpkin, live player UUIDs, ping, world and game mode.
  • Java and Bedrock kick paths; permanent bans through the host ban manager.
  • Console history, pause/resume, export, command recall, and command submission.
  • World/player save with an explicit acknowledgement.
  • Cookie sessions with 8-hour expiry, logout revocation, bounded session count, login throttling, same-origin checks, host validation and a strict CSP.
  • Offline detection, chart gaps during outages, bounded command queues, expiring requests bound to the current server boot, and no automatic retries of commands whose outcome is uncertain.

Architecture and limits

Browser → local Node HTTP service → plugin-private request files → WASM plugin → Pumpkin API. The plugin writes atomic status snapshots and action acknowledgements back to its private data folder. It needs no network or system-information permission. No server patch, Rust dynamic-library ABI, npm installation or frontend build service is required. This is a WASM plugin plus a companion process, not a single self-hosting .wasm or a Fabric/Forge mod.

Snapshots refresh about once per 20 game ticks; browser polling is every 2 seconds. Uptime is since plugin load. Charts retain five minutes in the current browser session. Management features require the launcher; node server.mjs retains the read-only configuration mode for externally supervised servers. Process memory is unavailable through this API and is not fabricated from host-wide memory. Commands run with console authority; the API supplies no result text, so submission acknowledgements are distinct from command success. Inspect the captured console for the result.

Save acknowledgements confirm that Pumpkin handled the request, not that every disk write succeeded. With the launcher, known chunk-save failures in captured logs remain visible as a warning for that server run, and subsequent save requests return a warning/error instead of claiming success. This detects reported failures; it does not validate or repair world files and depends on available host logging.

Requests time out after 12 seconds and are never retried automatically. A timeout after an action began cannot prove whether it finished. Inspect the server before retrying. Access lists can also be managed from the dashboard while the server is stopped.

The companion owns the server process. Stop other server launchers before using it. Mutating world/file/plugin operations require a stopped server. Backups and world ZIPs are limited to 256 MiB expanded and 20,000 entries; uploads to 64 MiB (plugins: 32 MiB); the text editor to 512 KiB. Larger worlds need filesystem backup tools. Backup archives contain server configuration and may include secrets; store them privately. Generated plugin caches, bridge data, dashboard credentials and logs are excluded from backups. Recovery copies and audit logs are kept in the server's .dashboard folder and need periodic disk-space maintenance. Schedules run only while the companion runs, and missed executions are coalesced into one run. Console, Files, Backups and Software are powerful permissions intended for trusted administrators.

This provides local server management, not Aternos hosting infrastructure. Cloud compute, public networking, DDoS protection, hosted DNS and Google Drive backup integration are not included. The interface never implies that these are connected.

Build and verify

rustup target add wasm32-wasip2
cargo build --locked --release --target wasm32-wasip2 -p pumpkin-dashboard
node --test tests/*.test.mjs
node tests/runtime-smoke.mjs "/path/to/pumpkin"
node scripts/package.mjs

Built plugin: target/wasm32-wasip2/release/pumpkin_dashboard.wasm. The opt-in integration test creates a separate loopback-only offline test server under test-results, checks a real Java connection, kick, permanent ban after restart, commands and world saving, then stops it. It never uses your live world.

See VALIDATION.md for results and remaining test limits, and NOTICE.md and provenance.json for source attribution and exact compatibility revisions.

About

Community web administration dashboard for Pumpkin: official WASM API plugin and local Node.js companion.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages