Seems interesting. I can't decipher from the docs nor demo if this is about debugging _live_ behavior of the systems under observation, (e.g. it only captures stuff for which there are queries), or if it actually stores all your requests and responses in a psql db.
Just to add to that: yes, it actually starts querying once the query has been entered. It basically sends that instruction to the application that has the WireQuery SDK integrated, which, in turn, only sends back data to WireQuery that meets the requirements of the query. Thus, it does not store hundreds of thousands logs in a very large database like most logging tools do. This way, you can deploy the application with _far_ fewer resources - yet, by allowing the end-user to instantiate a session (as well as a WireQuery user), you only capture what is actually relevant to be captured.
When using the Explore functionality, the data is directly captured and sent back to the user when the query is entered. However, when the query is part of a Session or if it's saved as a Query, the data is stored in the database :-)
WireQuery uses rrweb for capturing the frontend interactions. However, perhaps I can answer a similar question, which is how it compares to other offerings.
The main difference between existing tools and WireQuery is that WireQuery was designed for capturing the interactions within the complete stack. This manifests itself in the following ways:
- The frontend recording is paired with the network calls on the backend, which can consist of the entire trace (i.e. the data of system A calling system B, system B calling system C, etc.), including the actual request and response bodies, headers, etc;
- There is an exploration and query-in-the-background feature. These features allow you to run arbitrary queries against a backend system that will capture any network request that meets your criteria, optionally paired with the complete trace and some transformations. For instance, this can be helpful when you want to know what the API calls were with their payloads when a system in the middle of your landscape retuns a status code of 500.
- The SDKs contain masking facilities to ensure that sensitive data is scrubbed. For instance, using Java, you can simply use @Masked on a field to have the sensitive data removed. Similar offerings often require you to do that manually.