Takipi was built with extensive emphasis on the security of your data and code.
All data produced by Takipi on your server is encrypted using an AES-256 cipher. It can only be decrypted using a set of private AES encryption keys issued to you during installation. These keys are never stored on Takipi's servers and are only available to you.
When an event such as an exception occurs within your app, Takipi collects the most relevant variable data and source code which caused it. The data is encrypted on your server using your installed encryption key before it's sent to Takipi in encrypted form. This includes both variable values and the source code on which they are shown. Data can only be decrypted by you locally using your private encryption key. You can generate AES encryption keys here.
To collect the most relevant variable data, Takipi performs a set of graph analyses to identify the most relevant variables and conditions triggering an exception within your app. As the JVM loads your Java/Scala, Takipi converts this bytecode into an abstract graph structure which does not contain symbols, values or operators. This structure is used to analyze exceptions and compile breakpoints you set.
Takipi removes all jar, package, class, field, method and variable names (for both your code and any Java or 3rd party frameworks). Takipi also removes all logical and numeric operators, number and string constants and code attributes. The resulting graph cannot be used to reverse-engineer or reveal application logic.
Here's how Takipi works -
Takipi indexes and queries your code graph in the cloud to log only the most relevant variables and conditions (e.g. "log only when this variable is assigned null") - offloading this work from your servers.
Takipi dynamically generates custom algorithms to compress and log data for each exception in your app to get 10x faster logging compared to standard Java file logging.
Takipi doesn't perform any IO calls (disk or network) from within your process. Data is placed directly in shared memory and is asynchronously encrypted and sent to Takipi's servers by a daemon process.
Takipi lets you dynamically control logging frequency to a CPU/RAM cap you select (between 2-5%) directly from the app's 'Servers' dialog.
Since Takipi only collects data directly related to an exception or breakpoint when they occur, it doesn't have to continuously upload data from your servers - keeping bandwidth use to a minimum.
Takipi hard-limits the number of exceptions and breakpoints it collects at any given time to support even your most extreme performance peaks.
Takipi's JVM agent is written in native C++ and Assembly and does not allocate Java objects or captures any reference to your own - helping ensure zero impact on your GC.