Attach a small agent to your Spring app. We capture every HTTP request, every SQL query and every outbound call — and show you what's slow, what's failing, and where the N+1 queries hide. Your data, our infrastructure.
Free forever · Cloud from €5/month · no credit card for Free.
$ java \ -javaagent:ot4j-agent.jar \ -Dot4j.token=$OT4J_TOKEN \ -Dot4j.service=checkout-api \ -Dot4j.environment=prod \ -jar your-spring-app.jar [ot4j] Connected. Streaming to ot4j.com. Open the access link we sent you. ^C
Features
The agent instruments Spring requests, JDBC, Apache HttpClient, OkHttp and Elasticsearch. You sign in to our dashboard and see everything in one place.
For every request you see how many SQL queries ran and how often the same pattern repeats. Yellow badge means more than 2×, red 5+. The N+1 problem is visible at a glance.
Periodic stack sampling builds a call tree. The dominant path is auto-expanded, so within a second you can tell which method burned most of the time.
Spring RestTemplate, OkHttp, Elasticsearch — every outbound call with URL, method, status and duration. You can copy the request and response straight into your own curl.
Requests per second, response time, heap usage, CPU. Sliding window, second-level granularity — anomalies pop out immediately.
Tag your instances with a service name and an environment (e.g. checkout-api / prod). Filter in the dashboard, share links to a specific request.
Every customer gets a private URL and token. Traffic between agent and cloud is encrypted. We don't share, sell or analyse your data beyond your own dashboard.
How it works
Email info@ot4j.com and we'll send you ot4j-agent.jar. The Free plan needs no account, just the JAR.
Add -javaagent and a service name. No code change, no new dependency in pom.xml.
Free: a local dashboard at localhost:9999. Cloud: the private URL we sent you.
# Free — local, no account, last 2 minutes of history java -javaagent:ot4j-agent.jar -jar your-spring-app.jar # then open http://localhost:9999/ # Cloud — data goes to ot4j.com, 24h history, multi-instance java -javaagent:ot4j-agent.jar \ -Dot4j.token=$OT4J_TOKEN \ -Dot4j.service=checkout-api \ -Dot4j.environment=prod \ -jar your-spring-app.jar # then open the access link we emailed you
Who it's for
Every captured request stays in the dashboard. Open it the next day and you see the SQL, the outbound calls and the hot path — and you know what hit you.
Click on a request and see how the time splits between SQL, HTTP and your own code. N+1 queries and repeated calls are flagged automatically.
Setup takes five minutes. No instrumentation SDK, no annotations, no extra build pipeline. You see data right away.
Each instance gets a tag (service + environment) and the dashboard lets you filter. See the whole system or one service in one environment.
Pricing
No surprise charges. Price scales with the number of services you watch.
Prices excl. VAT. Billed monthly per connected service × environment pair.
Example: checkout-api in prod + staging = 2 pairs = €10/month.
Start free with the local agent, or drop us a line — we can have you on Cloud in a few days.
For Cloud you'll receive an access link and a token. Free runs locally — no account required.
FAQ
No. You add the agent to the JVM via the -javaagent flag and three system properties (token, service name, environment). No library in pom.xml, no annotations, no rebuild.
By default we target under 1% CPU overhead. Measurement is inline (no large data transfers) and stack sampling can be turned off any time.
Java 11 and up, Spring Boot 2 and 3 (Spring MVC). For outbound HTTP: Apache HttpClient, OkHttp, Elasticsearch RestClient. SQL: any JDBC driver. WebFlux is on the roadmap.
Depends on the plan. Free never sends data anywhere — it stays in the JVM's memory for 2 minutes and never leaves your process. Cloud stores data in our EU infrastructure with a 24-hour retention. Enterprise can do longer retention or on-premise. We don't share, sell or analyse your data beyond your own dashboard.
The agent keeps a small in-memory queue. When the link comes back it ships whatever it managed to retain. During longer outages the oldest records are dropped — your traffic isn't affected.
By default we send URLs, headers, durations and status codes. HTTP request/response bodies and SQL parameters are opt-in — turn them on only when you want, off whenever you don't. You stay in control.
OT4J is built and operated by INDIVIDUAL STARTUP s.r.o., based in Prague, Czech Republic. Reach us at info@ot4j.com.