Skip to content

Releases: djinnbanter/WatchTower

WatchTower 1.2.0 Beta 1

Choose a tag to compare

@djinnbanter djinnbanter released this 02 Aug 14:42

This is a beta

This build is for NeoForge 1.21.x only. It will have bugs. Please try it on a test pack first, not your big season world.

The last public GitHub release was 1.1.2. If you're still on that jar, everything below is new. (I shipped a few private builds in between. Their notes live in this beta so you don't have to dig.)

Updating from 1.1.2

Your old dashboard login becomes the owner account. Same password. No reset. After you restart, everyone signs in again (normal after any reboot). I keep a backup of the old login file at watchtower/dashboard-auth.json.pre-1.1.18.bak.

What's new since 1.1.2

Keep the server safer

  • Soft Disable / Enable for mod jars. Renames the file to *.jar.disabled so NeoForge skips it next boot. No delete button. If the world might need that mod (extra dimensions and such), you get a world risk warning and an extra confirm. Overview shows Restart needed until you reboot.
  • Backup check: Backups can show Verified / Suspicious / Broken. Hit Verify now. Optional test restore goes under watchtower/restore-verify/ only, never your live world. If the newest backup fails the check, you get an Issue.
  • Named accounts: owner / admin / viewer. Owner adds people under Settings → Accounts. There's an audit log for settings, reviews, accounts, and sign-ins.
  • The side rail shows who you're signed in as, Sign out, and an optional Minecraft skin link.
  • Join / pack sync clinic: when a player can't join because their mods don't match (missing, wrong version, channel mismatch), WatchTower reads that from latest.log, opens an Issue, and shows it on Session → Session activity with a player-safe Copy fix.
  • Mods → Configs: edit TOML under config/ from the dashboard. Form when it parses, raw editor if not. Saves make a backup and you can undo. Admin+ only.
  • Insights → Configs RAM advice looks at your host or container memory limit, not a random heap guess.
  • Jar drift: same filename + version, but the file hash changed. That becomes an Issue so you can check it was on purpose (not labeled "corrupted").
  • Client-only jars can show up on Issues when I'm pretty sure they don't belong on a dedicated server.
  • External kill / OOM: if the host or panel killed the JVM and Minecraft left no crash report, Crashes can show a Killed entry with the right fix (raise memory vs raise the panel stop timeout).
  • Soft hang / freeze: if the server tick freezes hard, you get a critical Issue (optional dump under watchtower/hangs/). When I can tell, I add a likely cause and a suspect-mod hint.
  • Restart hygiene: Overview can say "maybe restart soon" when the server has been up a long time and GC/heap look worse, plus a historically quiet hour. Advice only. It never restarts for you.
  • Silent script / datapack fails: KubeJS, CraftTweaker, datapack JSON, and /reload errors that never crash the server still become Issues.
  • Weekly digest: Insights → Digest (and a dismissible Overview card) summarizes the week.
  • Remember me survives a Minecraft restart. Sessions live under watchtower/dashboard-sessions.json.

Find lag and pack pain

  • Spark → Map: pan and zoom a heat map of chunk entity hotspots from the profile you selected. Click a square for the same chunk details as World.
  • Insights → Storage Space map: a treemap of where disk goes (world / mods / logs / backups).
  • Insights → World: entity and chunk pressure by dimension (item storms, mob spikes, forceload share, players) plus world-pressure Issues. It never auto-cleans entities or chunks.
  • Logs: real viewer for latest.log, debug.log, rotated .log.gz, and crash report files. Filters, search, problems-only, copy/download.
  • Activity: when lag, crashes, pack changes, and backups line up in a short window, I stitch an incident story. Overview can tease the latest one with a jump to Activity.
  • Startup: boot phases and a launch/config check without waiting on a giant scheduled report.
  • Issues inbox is Critical / Warning / Info only. Drift, silent-fail, world-pressure, join-sync, soft-hang, and friends still open with the right Fix actions.
  • Mods → Log errors: Active / Reviewed + Mark reviewed.
  • Mods catalog: icons, side badges, Updates / Conflicts / Modrinth / Forensics. Modrinth lookup never downloads jars for you.
  • Support packs: pick a pack type, optional note, size strip. Customize files stays optional. Redaction and size math are tighter.
  • Dashboard timezone for Schedule / quiet-window display. Stored data stays UTC.
  • In-app Help Center (Docs) with searchable wiki pages.

Look and feel

  • Night Watch Desk look: signal-blue accent, tighter corners, clearer gauge colours (metric vs healthy/warn), shared hero plates.
  • Theme + accent: Light / Dark / Black / System plus accent presets. Rail Customize and Settings → Appearance (per account).
  • Live charts jump and flash less. Tabs scroll to top when you change pages. Tabs load lazily so the shell feels snappier.

Bugs I fixed

  • Soft-disable no longer snaps the Mods detail panel back to Enabled after a successful rename (the mod stays loaded until you reboot). Also no more duplicate catalog row when a mod's mods.toml has NeoForge template junk like #mandatory / ${file.jarVersion}.
  • Boot crash from Checker Framework colliding with Groovy: nested core no longer ships those packages.
  • Live charts used to blink empty or jitter on hover. Calmer now.
  • Opening Insights after the Storage Space map animation could blank the page. Fixed.
  • Support zips could leak unredacted ops data into the facts/brief, and the size estimate was wrong. Both fixed.
  • Spark finding detail: long method names wrap, and I stopped showing internal field names like source_rollups.own_pct.
  • Spark → World busy-chunk cards stacked in one tall column when there were lots of them. Grid again (use Map if you want every chunk).
  • When Overview says Degraded, it can say why.
  • Mission uptime no longer overflows the mission band.
  • External kill shouldn't fire after a clean /stop.
  • Normal Modrinth version bumps don't raise jar drift (drift is same name + version, different hash only).

Full detail: CHANGELOG.md.

Files

File Put it here
watchtower-neoforge-1.2.0-beta.1+mc1.21.jar Server mods/
watchtower-cli-1.2.0-beta.1.jar Same mods/ (use java -jar when the game won't boot)

GitHub only for this beta. Not on Modrinth yet.

Watchtower 1.1.2

Choose a tag to compare

@djinnbanter djinnbanter released this 26 Jul 19:16

Watchtower 1.1.2 is out

Hey, I just shipped a big update.

Who this is for: NeoForge Minecraft 1.21 servers.

How to install

  1. Download from GitHub Releases or Modrinth
  2. Get both files: watchtower-neoforge-1.1.2+mc1.21.jar and watchtower-cli-1.1.2.jar
  3. Put them in your server’s mods folder (replace older Watchtower jars)
  4. Restart the server
  5. Open the dashboard in your browser and finish setup if it’s a new install

The big changes

Watchtower keeps watching in the background.

You shouldn’t need to keep clicking “run a giant report” just to use the dashboard. After setup, it quietly checks your server while it runs.

On new installs, the old “run a report on a timer” setting starts Off, because live checks are enough for normal days. When you do need a zip for Discord or a mod author, you build a Support pack instead.

Look and feel

This build ships the new React dashboard (the old Preact UI is gone).

  • Cleaner layout — easier to scan, less clutter
  • Clearer side menu — Monitor / Triage / Ops, so related tabs sit together
  • Smoother feel when you move around pages
  • Better light / dark / black themes
  • Charts and status pages feel more modern and readable
  • Buttons and main status areas stand out more without looking busy
  • Scrolling and overall pages feel more like a normal app

There’s also an in-app Roadmap under System if you want to see what’s next.


First-time setup (clearer now)

When you first open Watchtower, it does a one-time scan of your logs, crashes, mods, and issues.

  • You can see the progress as it goes
  • You can’t skip ahead until it’s finished
  • You can turn on Modrinth (the mod website) lookups during setup if you want
  • It makes you set a real password before the wizard runs off without you
  • When setup finishes, crash and issue counts show real numbers (not blank dashes)
  • If you turn on two-factor login, you should see a scan-able QR code next to the secret key.

Overview: “how’s my server right now?”

The top of Overview is a mission status band:

  • Grade + short verdict (“needs attention”, etc.)
  • Live TPS / MSPT / players / heap / CPU
  • Server name, Minecraft version, Java, and host/panel when known

Safe to restart?
There’s a Restart section now, it shows Safe, Caution, or Wait. It looks at backups, who’s online, disk space, pregen, and recent crashes.
Important: it does not restart the server for you. You still use your host panel or stop the server yourself.

What just went wrong?
If lag, a crash, a mod change, and a missed backup line up, Overview can preview an Incident story and point you at Activity for the event trail.

Startup / boot
After the server finishes starting, Startup can show a boot timeline (how long startup took, warnings) without waiting for a big report.


Help with RAM, lag, and disk (plain answers)

Do I need more RAM?
Watchtower looks at how much memory you actually used lately vs how much you gave the server (-Xmx). If the problem is “the game tick is slow” because of mods/world, it won’t just say “add more RAM.”

Is Java fighting the memory?
On Insights → Configs, it can show if the server is spending too much time cleaning memory, and suggest better startup flags when that helps — without telling people who already use a solid custom setup.

How long until the disk is full?
WatchTower wont just show “disk is 82% full.” It tries to estimate how many days you have left, shows disk write lag, and can raise an Issue when that number gets small.

Is the server slower than last week?
You can freeze a “this week was good” baseline. If the last 7 days look clearly worse, you get a nudge. Settings for this are under Settings → Monitoring.

Server settings tips
It can gently suggest things like view distance / simulation distance. It only suggests — it will not secretly edit your files.


Spark integration (this is a highlight)

Watchtower does not replace Spark. It reads Spark’s saved profiles and turns them into clearer advice.

What you can do

  1. Capture lag the normal Spark way
    Start a profile while the server is lagging, stop it, save the file. Then open Watchtower’s Spark tab and pick that profile (Refresh if you just saved it).

  2. Import a Spark link
    On the Spark tab, Import from URL — paste a spark.lucko.me link. Watchtower downloads it once onto the server so you can study it in the dashboard.

  3. Auto-capture when lag is really bad (optional)
    In Settings → Monitoring, turn on Auto-capture Spark on critical lag.
    Needs: Spark installed on the server + “Spark enabled” on (also under Settings → Integrations).
    When bad lag hits, Watchtower can run a short profile (~45 seconds), save it, and attach it to the lag Issue. Leave this off if you’re already profiling by hand.

  4. Read it in plain steps
    The Spark tab has sections like Overview, Findings, World, Sources, Timeline, Call paths, and Compare.

  5. Shortcuts from the rest of the app
    Overview Spark summary, lag Issues → Open in Spark, Support packs can include Spark.

Honest limits: Spark proves what was heavy during that capture. It does not prove a mod is “bad forever,” and it won’t explain client-only or pure network problems by itself.

Watchtower does not upload your profiles to the internet for you. Import only pulls a link you paste onto your server.


Mods and Modrinth

  • Full mods catalog with icons and “server / client / both” style labels
  • Nested jars show under the parent, not as fake extra mods
  • Dedicated Modrinth scan tab with progress and ETA
  • Optional auto-scan when you add/remove/update jars
  • Updates view with pack-impact: Safe / Caution / Break / Unknown, plus blockers
  • Watchtower never downloads mod jars for you

Turn Modrinth options on/off in Settings → Integrations.


Issues and crashes

  • Issues provide smarter advice
  • Crashes and Issues look more like an inbox: pick a row, see what to do next
  • Fewer crash groups stuck on “Unknown”, WatchTower now understands more crash types.
  • Hitting Scan on Crashes can re-check everything, not only new files
  • Backup warnings use a simple rule: no usable backup in the last 24 hours
  • Reviewing an issue should stop it bouncing back open from tiny day-to-day number drift

Backups

  • Point Watchtower at a local backup folder on the server (best path)
  • Or try panel / cloud heartbeat tracking

Alpha warning: panel / cloud backup tracking is experimental and may not work on every host. Prefer a local folder when you can.


Asking for help (Support pack)

Bottom of the side rail: Build support pack.

  1. Choose what to include (logs Off / Tail / Full, crashes, Spark, extras)
  2. Build the pack
  3. Download the zip

Settings cleanup

  • General — preferences + legacy report options
  • Monitoring — lag warnings, baseline, Spark auto-capture, scan timing
  • Backups — folder / panel tracking
  • Alerts — disk warnings + how long to keep old reports
  • Security — password / username / 2FA
  • Integrations — Modrinth + Spark on/off
  • About — install info + relaunch setup

Password fields hide what you type; things you can’t change here (like dashboard port) show as info.

WatchTower 1.1.0

Choose a tag to compare

@djinnbanter djinnbanter released this 14 Jul 10:42

WatchTower 1.1.0 — smarter crashes, sharper mods, ops you can trust

This build is about making WatchTower actually understand your server — not just list files and guess. Crash reading, mod triage, and report/live pipelines are more accurate, more complete, and less likely to lie to you. The dashboard polish is there so that intelligence is easy to act on.

Artifacts

  • watchtower-neoforge-1.1.0+mc1.21.jar
  • watchtower-cli-1.1.0.jar

Install: replace the mod in mods/ → restart → hard-refresh the dashboard (Ctrl+Shift+R).


Smarter crash intelligence

WatchTower doesn’t stop at “something crashed.” It reads the report the way an experienced operator would:

  • Classifies failure kinds — watchdog/hang, FML mod-load, mixin/config/duplicate/worldgen/compat patterns, OOM, env locks, and more — instead of dumping raw stacks
  • Names the real suspect — primary / stall mod ids from evidence (stack, FML banners, Mod loading issue blocks), not the loudest unrelated warning
  • Scan before the next full report — light classify on crash file heads so the inbox isn’t a wall of “Unknown”
  • Titles you can act on — plain-English / exception fallbacks so groups never read blank or useless
  • Evidence-first fix plans — “Do this now” steps match the failure (e.g. stop a stuck Create assembly before blaming Flywheel); fewer generic “update the mod” dead ends
  • Declarative crash rule packs — optional YAML rules under config/watchtower/rules/ for your pack’s known patterns, without unsafe scripting

Result: fewer mystery crashes, faster triage, advice that matches what actually broke.


Sharper mod analysis

Mod troubleshooting is no longer a flat table of noise:

  • Log errors rebuilt — expandable cards with full sample lines, category breakdown, and concrete Do this next from recommendations / scan issues
  • No more fake mods — vanilla loggers (ItemStack, etc.) aren’t truncated into junk ids like itemstack
  • Conflicts stay honest — update/compat recommendations only; duplicate “Scan issues” clutter removed (Log errors is the triage surface)
  • Create / ecosystem protection — client-only scoring won’t casually recommend removing Create/Flywheel/Registrate stack pieces
  • Mod forensics — corrupt jars, config health, class/package find, UCVE owning-jar attribution when enabled
  • Optional Modrinth identity — SHA lookup for slugs, links, and outdated hints (never downloads jars for you)

Result: you see which mods are actually hurting the server, with lines of evidence and a next step — not a pile of false positives.


More reliable ops (less lying UI)

  • Live charts restored — RX/TX and disk IO from /api/samples again; Network heroes; ambient temps that don’t clip
  • Startup false-Failed fixed — last Done! boot window, not the incremental cutoff on a healthy running JVM
  • Overview uptime live — JVM RuntimeMXBean (not Linux-only /proc), with report fallbacks
  • Reports that stick — Collecting stage marks immediately; step/elapsed progress; Hide while running; hydrate on refresh so facts don’t vanish
  • Insights / Sources / Issues wiring — data on mount; schedule in hours; Don’t show again hides immediately and persists
  • Support bundles include ops-cache — scan aggregates for debugging when something still looks wrong

Result: what you see in Live, Startup, Overview, and Reports matches what the server is actually doing.


Dashboard that showcases the intelligence

Area What you’ll notice
Sidebar WatchTower brand mark, glass rail, report controls, theme on rail
Overview A/C/F grade legend, colourful By dimension bars, uptime, backup mute / Not tracking
Session Hero KPIs, Top playtime, online/offline directory
Crashes Classified groups, better titles, bug icon
Mods Real Log errors triage; Conflicts without noise
Live Network section + working IO history
Backups Status/inventory on Backups; setup in Settings → Backups

Platform

NeoForge 1.21.x · GPL-3.0-or-later

Wiki: https://github.com/djinnbanter/WatchTower/wiki
Full detail: repo CHANGELOG.md

Watchtower 1.0.0 — NeoForge 1.21.x EXPECT BUGS

Choose a tag to compare

@djinnbanter djinnbanter released this 24 Jun 14:53

Watchtower 1.0.0

First public release for NeoForge 1.21.x on Linux dedicated servers.

Download

File Where to put it
watchtower-neoforge-1.0.0+mc1.21.jar Server mods/ folder — required
watchtower-cli-1.0.0.jar Same mods/ folder — recommended (not loaded as a mod; run with java -jar for DR)

Requirements: Linux · NeoForge 1.21.x (1.21.1 through latest 1.21 patch) · Java 21

First login: http://<server-ip>:8787 — username watchtower, password password (change immediately)

What's included

  • Live ops dashboard (Overview, Live, Insights, Issues, Crashes, Mods, Backups, Activity, Session, Spark, Sources)
  • Setup wizard, scheduled health reports, performance insights
  • Spark profiler tab, external backup tracking, disaster recovery CLI
  • In-app Docs tab + GitHub Wiki

License

GPL-3.0-or-later — see LICENSE.

Full changelog: CHANGELOG.md