Kindling - a collection of tools to help with Ignition

Public version has jumped to 0.4.1, for reasons that aren’t very important.

Release 0.4.1 · paul-griffith/kindling · GitHub

Highlighting some changes:

  • Standalone executables are available for Windows and Linux users who don’t want to use JDeploy; see the releases page above
  • CSV and XLSX exports for some data formats (see #55, thanks to Josh Hansen)
  • ‘Legacy’ thread dump parsing from prior versions that didn’t output a JSON export (see #63, thanks again to Josh and to Corbin)
  • Support for pasting logs and thread dumps directly from the clipboard (see #65)
  • Added some UI and parsing for deadlocked threads (see #68, thanks again to Josh)

And some other miscellaneous UI tweaks and improvements on the backend. Anyone using JDeploy should automatically receive the update the next time they launch.


I’m not sure if it would even be possible but one thing that would be extremely useful is the ability to snapshot what queries are actually being run against a database connection.

Database Status Queries per second and long running aren’t very helpful to try and cut down on what is hitting certain databases.

Maybe it could turn on deeper logging for x amount of seconds, then parse it out the log?

Hmm. Currently Kindling doesn’t have any way to ‘reach in’ to a gateway and configure anything. Adding extra parsing to the logs to try to pull out patterns is doable, but tricky to generalize.

Out of curiosity I noticed that v1.3.4 includes the .dmg installer for MacOS, however any version after that no longer do.

Is this a potential bug in the release mechanism using Deploy? Or am I missing something here?

Also, downloading the 1.3.4 version provides the following error, which leads me to believe the removal was intentional:

Yeah, I didn’t feel like diving into what was going wrong with JPackage to build the direct .dmg, and even if it was building successfully, without signing there would be a bunch of additional gatekeeper hurdles to get it running anyways. JDeploy works on MacOS fine though:

1 Like

Patch 0.4.2 just published.
Fixes one edge case with thread dumps, where I didn’t expect a field to be nullable, causing errors when attempting to parse.
Also adds a toggle to log views to show either the full logger name or just the last substring after the ‘.’. This fixes the sorting logic on the logger name column.


Is it possible to update an internal users password from here? I just restored a gateway backup. It has an internal user datasource I can see with the following as the the top row of information -

This is who I want ot update the PASSWORD field to so that I can actually login to the gateway. Is that possible with this and what would the query look like? I know it's not right but I tried `UPDATE INTERNALUSERTABLE SET PASSWORD='blah' WHERE USERID=1'; and I get "Query did not return results" and selecting it again shows the same hashed password. If password resetting is not a feature of Kindling I would ask that it be one if possible.

uf a password reset of the admin should never be that easy xd

Why not? Why do you think this is any different than what the GCU would do? This requires local access to the server and its internal DB, it's already game over from a security perspective.


I mean I could just use the gcu to reset the password as this is a 7.9.20 project but as I understand that it erases the entire default internal userbase which is currently used as a soft failover from the AD login so it possible I'd only like to change that one. So I'd like to see if I can just change a single internal user password with Kindling.

The GCU only resets the admin password.


ah uh Kindling only runs on the pc with the gateway? (not like the designer)
Havent rly used it

gcu does also require admin rights of the pc. no idea what kindling needs my bad

1 Like

Great then I can just use the GCU to Reset password and that would only affect admin, so that solves my problem. Thanks @Matrix_Engineering


Currently, all SQLite connections are read-only: Click to edit idb table Values · Issue #53 · paul-griffith/kindling · GitHub
Bidirectional editing would be possible, but gets tricky if you're, for instance, talking about the embedded .idb inside a .gwbk. Not impossible, but tricky, and so far I haven't felt compelled to do it :wink:

Kindling doesn't know or care about any running gateways or designers. All it can do is open various file formats (.gwbk, thread dump .json, S+F cache .zip, etc) generated by Ignition.


0.5.0 out now.


0.6.0 now available:

Highlight feature is a snazzy new multi-thread comparison view:

There's also some quality of life improvements, and a nicer dark/light theme for MacOS, thanks to a FlatLaf update. More details in the release notes.

Users who previously downloaded the JDeploy-hosted installer may need to download fresh, rather than relying on auto-updates, as the backing storage changed from NPM to Github.


Hi Paul, I presume this right column shouldn't be blank? I've done this previously and it showed me a full trace of what went wrong with the data attempted to be inserted etc..

Gateway S&F status page shows this unhelpful error:

Hmm, are you able to DM me the file you're attempting to open? There's probably an error quietly happening that you can't easily see from the running application.

0.6.1 out now, quick bugfix that adds support for S+F data generated by the system.db.runSF* and a minor initial layout bug with the details pane.


Hey Paul, I'm trying to view some logs from a 7.9.9 system. They all show up when I start it, but when I only check off RunUpdateQuery, I can wait 10 minutes and nothing appears. After unchecking the RunQuery, if I check it back on, it doesn't reappear it stays blank.

I thought it had something to do with the number of records but opening up the .idb in DB Brower I was able to run a query and get a result very quickly so I don't know what is going on.

Don't know if this is expected and 7.X is just not supported or what but it's odd because it does show data at open, only when I try filtering it does it go blank and never reappear no matter what I do.