Summary by plan
| Plan | Sent to us | Kept by us |
|---|---|---|
| Free | Usage events: which tool ran and how it went | Your email and name, and those events |
| Pro | The same | The same, and your subscription |
| Team | The same, and a graph of tokens on upload | The same, and that graph |
| Enterprise | Nothing. The server runs in your network | Arranged with you, by contract |
What a recording holds
The recorder writes files to tmp/runtime_analysis in your project. They hold class names, method
names, file paths and line numbers, the integer ids Ruby gives objects during a run, and the classes
of exceptions. They hold no values, which means no strings, numbers, attributes, SQL or inspect
output. What is written to disk lists every field by tier.
Class and method names describe your domain model, so the files stay on your disk.
Free and Pro
Recording makes no network call, and the gem never talks to us. The tools read the files on your machine and print the answer there. Your licence is a signed key the tools verify themselves, in CI or anywhere else, with no call to us.
These do cross the network. None contains a recording.
- A usage event after an answer, described below, unless you said no.
ra loginasks our server for a code and waits for you to enter it in the browser. The terminal never sees a password.ra upgradeopens checkout, andra activatedownloads the Pro build, once for each machine.- A coding agent you connect sees the answers it asks for. Those contain class and method names, and they go to whichever model provider that agent uses. Runtime Analysis makes no call to a language model itself.
Usage events
ra login ends with one question: “Send usage events to runtimeanalyz.ing (which tools you run and
how they went, never your code)?” The answer is kept beside your licence, and RA_TELEMETRY=0 in
the environment turns them off anywhere, whatever was answered. Each event is sent after the answer
is printed, with a one-second timeout and never a message on failure; one that could not be sent
waits for the next run.
| Field | Example | Never |
|---|---|---|
| event | tool, record, lsp, mcp, login, activate, upgrade_shown, upgrade_clicked | |
| tool | what_calls | its argument: the method, file or class |
| edition | free | |
| version | 0.3.1 | |
| platform | darwin-arm64 | hostname, username, project name or path |
| outcome | ok, error, no_recording, locked | the error text |
| ms | 412 | |
| rows | 30 | the rows |
| trees, runs | 1200, 3, for a record event | any name in the recording |
The rule: a count, a number, or a name of ours. Our server keeps only those fields and has no
column for anything else. ra doctor shows the last event sent, and your account page lists the
tools you ran in the last thirty days, by name alone, so this claim can be checked by anyone.
Team: what an upload contains
The hosted graph is built and runs as described here, and it is not open to customers yet.
Nothing is uploaded until you run the upload for a project. Before the upload is sent, every class
and method name is replaced by a token, such as C1 for a class and m1 for a method. The table
that turns tokens back into names stays on your machines. An answer from the server comes back in
tokens, and your machine puts the names back.
One upload contains:
| Field | Example | What it is |
|---|---|---|
| Project | shop | The name you give the application |
| Git sha | abc123 | The commit the run was recorded at |
| Environment, label | test, suite | Where the run happened and what you called it |
| Tier | 4 | How much the recorder captured |
| Methods | C1#m1 | A token for each class and each method |
| Calls | C1#m1 → C2#m4, 3 | Which token called which, and how many times |
It contains no file paths, line numbers or values.
The server keeps that graph, your team’s members by email and name, and your subscription. Card details go to Stripe. Our server does not receive them.
This website
The site sets no cookie and loads no analytics script. For each page view its server keeps the page, the referring site, the browser’s user agent and a salted hash of the visitor’s address. It keeps no address.
If you ask for a trial, it keeps your email and which plan you asked about. If you send a message through the contact form, it keeps your name, email and message, and forwards them by email to the person who answers.
What tokens do not hide
Tokens are pseudonyms. Someone who held your team’s graph could not read a class name from it. They could see how many classes and methods you have, which ones call which and how often, your project names, your commit shas, and when you upload. Someone who held the graph and your source code could match the shapes back to names.
Designed and not built
The design we are working towards encrypts the graph with a key your team holds, so that our server stores data it cannot read and questions are answered on your machines. None of that is built. Until it is, the server stores what the upload section lists.
These are also not available yet: a SOC 2 report, a data processing agreement, and SAML single sign-on for the account pages.
Enterprise: the server in your own network
Enterprise is for running the same server inside your own network or cloud account, so the graph is not sent to us. It is arranged with you and has no self-serve install. Tell us what your review needs and a person will answer.