A single-file, offline HTML dashboard for browsing and analysing the Command:
Modern Operations database — every aircraft, ship, submarine, facility, ground
unit, sensor and weapon, with type-specific visualisations and comparison tools.
You run one small tool against the database from your own CMO install and it
builds a self-contained .html you can open in any modern browser. No internet,
no server, no accounts.
https://github.com/twistedpretzel/cmo-d ... d/releases
CMO DB Dashboard v1.7 — "First Look, First Shot" (includes v1.6)
The dashboard now covers matchups as well as browsing. The new pages answer the questions you ask before a fight:
Who shoots first? Put two platforms in Detection matchup and it tells you who can engage first head-on, and by how much. Pick an aircraft loadout to change the answer.
What can kill it? The Counter finder lists every weapon that can engage a target, and who carries each one. It works the other way too: what can this platform engage?
Does my jammer cover their radars? The EW matchup compares a platform's jammers and ESM with the other side's radars, band by band. Try a Growler against an SA-21 battalion.
Also new: an "At a glance" card on every unit page, Compare highlights the stats that differ, and operator-and-year tags tell apart the 37 entries called F-35A. There's also a sortable loadout table and a Copy Lua button that gives you a ScenEdit_AddUnit line for any unit.
Fixes: sensor "Used by" lists are accurate now (SPY-6 had claimed 93 ships; 2 fit it). Weapon reach no longer counts chaff and pods. The ORBAT loader takes the whole console output. And the AAR reader now handles logs with 12-hour dates. Thanks to MauriceB for the report.
As always, every number comes straight from your own database. The matchup pages say what they don't model: geometry, countermeasures and jamming power. Download and source: github.com/twistedpretzel/cmo-db-dashboard
v1.5.0 — ORBAT rebuilt
New in the page:
- Lasers get their own card. A laser shot writes two records: a hit roll, and a separate energy-against-durability kill roll. Different models, not pooled.
- The ORBAT tree is rebuilt. A real export gave me 256 task groups under one side, 157 of them named Flight <callsign> — because a flight still sitting on the ramp isn't airborne, so it falls through to its own row. Each side now opens to three rows — Airborne, Tasked, Has unassigned units — with expand-to-level buttons underneath.
- 381 units were never being counted in the readiness chips. Aircraft returning to base, on final approach, taxiing, queued for a runway — all landing in a bucket the chips ignored. That's why they never added up to the force.
v1.4.0 — AAR message log reader
Load a CMO message log and the dashboard reads it back as an after-action review.
Everything is parsed in your browser. The log never leaves your machine, and as always the tool ships no game data — you generate the dashboard from your own install.
Six tabs
Overview — what the log contains, an activity timeline, and how every weapon that reached an endgame actually ended. Two thirds of misses in the sample corpus never reached a probability roll at all — they ran out of energy, malfunctioned, or were seduced — so the page reports rounds-expended and engagements-scored side by side rather than blending them.
Weapons — every weapon resolved against your loaded database, so each row links to its catalog card. Hit rates carry 95% confidence intervals and anything below n=5 is dimmed rather than ranked. The logged base probability is checked against the database's own PoK value. Rows expand by target class and speed band. A separate panel lists engagements fought against targets faster than the weapon's rated TargetSpeedMax — which turns out to explain most of the hopeless shots.
Mechanics — final probability plotted against the line-of-sight rate the engine recorded, modifier incidence, worked engagement chains shown as the engine wrote them, and soft-kill systems compared declared-against-realised.
Losses — losses by cause, including units lost to fuel rather than enemy fire. Then ordnance effect: which impacts actually did damage, and which struck a target that was already finished.
ORBAT — if you also have a scenario snapshot loaded, damage taken is read against the class's database damage points, and losses against the roster. Also a rough expenditure check: rounds of each weapon seen reaching an endgame, against the quantity of that weapon held across the whole snapshot. That is a force-wide ratio, not a per-unit magazine count — the log never names the firing unit, so rounds cannot be attributed to a hull.
Denied — shots the engine refused, with the reason it gave.
Everything exports to CSV. The parsed log exports to JSON and loads straight back in.
Getting a good log
Under Options ▸ Message Log in CMO, the analysis needs Weapon Endgame Calculations, Unguided Weapon Accuracy Modifiers, Weapon Damage, Unit Damage, Unit Lost and Point Defence. Turning Scenario Events, Unit AI, Debug and User Interface off cuts the file size a lot without losing anything the page uses. CMO overwrites the log each session, so copy it aside.
Where a measure needs records your log doesn't contain, the page says so and names the setting, rather than reporting zero as though it were a finding.
Also in this release
Expanded sections stay expanded. Opening a scenario ORBAT three levels deep, clicking into a platform and pressing back used to collapse the whole tree and dump you at the top of the page. Collapsible state and scroll position now survive navigation, on every page that has them — the ORBAT tree, weapon detail blocks, AAR rows, the changelog. Reported by Parel803.
Notes
- Date formats follow your Windows regional settings. The reader works out the format from the file and shows which one it used.
- Records visible to several sides are written once per side; those duplicates are merged so counts aren't doubled.
- One log at a time. Loading another replaces it — export first if you want to keep one.
- The reader shows a count of records it could not classify, so if a scenario type produces message shapes it hasn't seen, that's visible rather than silent. Post a log and I'll add them.
Scenario ORBAT (new). Ingest a snapshot of any scenario and browse its full order of battle inside the dashboard. Open Editor ▸ Lua Script Console, paste the one-click export script shown on the new Load scenario page, run it, and paste the output back in. (Parel803)
- Grouped Side → Task group → Platform type, sides collapsed on open (no spoilers).
- Aggregated by type ("12× F/A-18E"), expandable to loadouts and tail numbers.
- A rolled-up Airborne picture, a per-side Force summary, and live status / loadout / fuel / readiness.
- Aggregated ordnance — each group totals its magazines by weapon type (e.g. "142× UGM-109E Tomahawk Blk IV TACTOM") and expands to the count each hull carries.
- Loadouts link to the exact fit; everything deep-links to the catalog.
Attributes glossary (expanded). The Feature glossary now also covers platform attributes (armor, ergonomics with OODA modifiers, autonomy with signal-loss behaviour, cockpit visibility), the comms model, and all 130 platform feature codes — 557 entries total. Attributes, codes and comms on a unit card link to their glossary entry; weapon cards show their datalink.
Search by DBID. Type a database ID (e.g. 7733) in the search box or any list to jump straight to that entity. (Parel803)
Also: per-sensor ring isolation on the coverage diagram; fixed aircraft at multi-facility airbases showing under "Independent" instead of the airfield. (thewood1)
As always: Download build_dashboard.exe from the GitHub Releases page, drop it in your DB folder, double-click. Thanks to everyone who sent feedback — DBID search, the weapon-modifier/attribute reference, and sensor-ring isolation all came from this thread.
New in v1.2.0 — "What's new" changelog
The dashboard can now show you exactly what changed between two database
versions.
- Units, weapons and sensors added, retired (deprecated) or removed
- The exact stats that changed on existing entries — ranges, Pk, service dates, cost, and more
- Component changes: mounts, sensors and loadouts per platform; sensor capabilities; weapon guidance, targets and warheads
- Filter by name, hide minor data tweaks, and click straight through to any entry
kind in the folder — so it works whether you double-click (newest vs. the one
before it) or drop a specific .db3 on it (that database vs. the one before it).
Everything is offline: the comparison is between the two files on your disk,
nothing is fetched from anywhere.
Also included — Feature Glossary (v1.1.0)
A searchable in-tool reference explaining every sensor capability, feature code,
weapon-guidance method, target class and sensor/weapon type — 251 entries.
Hover any chip on a sensor or weapon page for a plain-language tooltip, or click
it for the full write-up, sourced from the game manual where possible and tagged
OBSERVED / INFERRED / SPECULATIVE.
What the dashboard does
- Browse all five platform types plus sensors and weapons, with fast search, sortable columns, and faceted filters (guidance, features, damage points, target class, sensor capability/band, "carries weapon family", operator, era, and more). One-click CSV export of any filtered list.
- Detail pages with type-aware visualisations — radar frequency strips and detection envelopes, optics/IR zoom, sonar depth envelopes, ESM direction-finding, weapon engagement envelopes and warhead breakdowns, per-aspect signatures, propulsion speed-by-altitude curves, and the mounts, magazines and loadouts each platform carries (including radars mounted on launcher vehicles).
- Compare up to four platforms, sensors or weapons side by side with overlaid envelopes.
- Systems tools: an Electronic Warfare explainer (OECM/DECM), a Detection matchup calculator (at what range does X detect Y, by radar/IR/EO, per aspect), and Threat rings (search / engagement-radar / SAM envelopes scaled to a chosen target's RCS).
- Analysis tools: a Trend explorer (plot any metric against any other) and Leaderboards (top-N by speed, range, stealth, quietness, etc.).
- Light and dark themes, and shareable, bookmarkable URLs for any filtered view.
don't account for terrain masking, jamming, or the engine's full dynamic
detection model. Where a value is a modelled estimate rather than a stored
field, the page says so and shows the method.
How to use it — easiest way (no Python, Windows)
- Download build_dashboard.exe from the Releases page (link below).
- Drop it in your game's DB folder — the one that contains DB3K_###.db3.
- Double-click it. It finds the newest database, builds the dashboard in about ten seconds, and opens it in your browser — with a What's new page.
being cautious about a new file from an unknown indie author. Click
More info → Run anyway. Each release includes a .sha256 checksum if you'd
like to verify the download first.
To build an older database instead, drag its .db3 onto the exe. Want just the
dashboard with no changelog? Run it from a command prompt with --no-changelog.
With Python instead (Windows / macOS / Linux)
Python 3.8+, standard library only — nothing to pip install. Grab the files with
Code → Download ZIP (don't use "Save as" on individual GitHub pages — that
saves the web page, not the file), copy build_dashboard.py and
cmo_db_dashboard.template.html into your DB folder, and run:
Code: Select all
python build_dashboard.py # newest DB + changelog vs the one before it
python build_dashboard.py CWDB_517.db3 # a specific database + its changelog
python build_dashboard.py --no-changelog # just the dashboard, no What's new pageThis tool ships no game data — just the generator and an HTML template. The
generated dashboard embeds a copy of the CMO database, which is Slitherine /
WarfareSims property under the game's EULA, so please don't redistribute the
generated .html or the game's Images publicly. Share this tool instead and let
other owners build their own from their own copy of the game — which is the whole
point of a data-free release.
This is an unofficial, fan-made utility, not affiliated with or endorsed by
Slitherine or WarfareSims. Provided as-is, for personal use with a game you own.
GitHub: https://github.com/twistedpretzel/cmo-db-dashboard
Feedback and bug reports welcome — thanks to everyone who's tested it so far.