5× deeper traces.
Zero code changes.
Drop one or several compiled JARs. Pick your observability goals and APM. Maestro builds the cross-service call graph, scores every method against your goals, and generates an OTel extension JAR per service that adds method-level spans at runtime. No source access. No annotations. No rewrites.
The OTel agent sees your service.
It can't see inside it.
The standard OpenTelemetry Java Agent instruments frameworks — HTTP, JDBC, Kafka. It treats your business logic as a black box. You know an endpoint was slow. You don't know which method.
JARs in. Cross-service traces out.
Under 5 minutes.
No source code access. No code changes. No new agents. Maestro extends the OTel Java Agent you already run — adding a precise, scored instrumentation layer on top.
Drag one or several compiled JARs into the Maestro web app. For multi-service systems, drop them all at once — Maestro builds the cross-service call graph (Feign ↔ controller, Kafka producer ↔ consumer, JPA / Redis / MongoDB) automatically. Source code never leaves your environment; Maestro reads bytecode only.
🔒 Bytecode only · Source never required 🔗 Multi-JAR · Cross-service call graphapp.oteligence.com → New Project
# 2. Drag in your JAR(s) — one or many
Drag .jar files → "Upload"
# 3. Walk through the steps
Pick Observability Goals →
Pick APM backend →
Review Cross-Service Preview →
Generate & Download
Select your Observability Goals (Debug Latency, Track Errors, General Visibility) and your APM backend (Datadog, New Relic, Grafana, Dynatrace, …). Maestro's scoring engine then evaluates every method against those goals — weighting exception handling, branching, I/O boundaries, sync blocks. The Cross-Service Preview screen shows exactly which methods score across all your services; toggle any individual method on or off before generating.
3 observability goals · stack to broaden coverage Per-method toggles on the preview screen────────────────────────────────────────
HTTP / RPC handlers high (latency)
DB / external I/O high (latency)
Exception handling high (errors)
Cross-service edges high (both)
Branching complexity medium
Framework internals excluded
4 services · 247 methods · 18 selected · ~1.3× overhead
Maestro produces one ~18 KB OTel Extension JAR per service, already compiled — plugs into the OTel Agent's Extension API. You also get the resolved javaagent.config, the OTel Collector config for your APM, and an HTML Instrumentation Summary — an interactive report with every instrumented method, scoring breakdown, and cross-service edges.
├─ fund-transfer-ext.jar ← 18 KB · per-service extension
├─ account-ext.jar
├─ transaction-ext.jar
├─ notification-ext.jar
├─ javaagent.config ← OTel agent settings
├─ collector.config ← OTel Collector (for your APM)
└─ Instrumentation-Summary.html
One -D flag added to your existing startup command. The extension plugs into the OTel Agent Extension API. Oteligence spans appear tagged [oteligence], nested inside HTTP server spans.
-javaagent:opentelemetry-javaagent.jar \
-Dotel.javaagent.extensions=.o11y/fund-transfer-ext.jar \
-Dotel.javaagent.configuration-file=.o11y/javaagent.config \
-Dotel.service.name=fund-transfer \
-jar your-application.jar
# Traces appear: library.name = [oteligence]
One request. Three services.
Now traceable.
Spring Boot 3.4 banking app — fund-transfer + account + transaction (3 JARs uploaded to Maestro together). Same multi-service request, all traces exported to Jaeger via OTel Collector. Every span is from a live test run — Feb 26, 2026.
POST /api/transfers [310 ms]
http.response.status_code=200 · http.route=/api/transfers
(no child spans — business logic invisible · cross-service calls untracked)
POST /api/transfers [310 ms] [fund-transfer]
AccountClient.getUser [120 ms] ⇢ Feign → account
processLedgerEntry() in transaction-service consumed 172 ms of the 178 ms Feign call to it. The bottleneck isn't in fund-transfer at all — it's three frames deep into a sibling service. Found in one trace, across services, zero code changes.@WithSpan adds 10–30×. You get 5× more diagnostic insight at a fraction of the ingestion cost. Estimated APM cost reduction: ~30%.Tell Maestro what you care about.
The engine scores from there.
Maestro doesn't pick methods in a vacuum — it scores them against the goals you select. Stack goals to broaden coverage; focus on one to instrument less. Methods relevant to any selected goal score higher.
Find slow requests. HTTP handlers + DB queries scored deeply.
Exception capture on every service method.
Balanced depth across all method types.
Four plain files.
No proprietary formats.
Every Maestro output is a standard file you can commit to source control, review in a PR, or pipe into any build tool. No lock-in.
-D flag. No new agent, no new infrastructure. Spans appear tagged [oteligence].java -javaagent command to run your instrumented application. Save alongside your extension JAR as permanent documentation.SRE. Developer.
Platform. Manager.
How Maestro shows up in real workdays — the scenarios, the decisions, the shifts. 4 roles · ~5 min read. Pick yours.
Available today.
Ship-ready.
Everything below is live at app.oteligence.com. No waitlist, no beta flags.
Engineer questions.
Direct answers.
.jar files via bytecode inspection. Your source code never leaves your environment. You upload the same artifact your JVM runs — Maestro analyzes the binary. This works on legacy services where source may not be available, and gives security teams confidence that proprietary logic stays internal.MAX(weight) per signal across selected goals: methods relevant to any selected goal score higher. Stack goals for broader coverage; focus on one to instrument less. You can still toggle individual methods on or off in the Cross-Service Preview before generating.@FeignClient outbound calls to the receiving @RestController endpoints, Kafka producers to consumers, JPA / Redis / MongoDB databases. The Cross-Service Preview shows the chain with protection indicators (Retry, Circuit Breaker, Unprotected) before you generate. One Extension JAR is produced per service, all aware of each other.{service}-ext.jar — ~18 KB OTel Extension JAR (one per service)
javaagent.config — OTel Java Agent configuration (resolved for your goals + APM)
collector.config — OTel Collector configuration for your APM
Instrumentation-Summary.html — Interactive report: methods · scores · cross-service edgesThe Extension JARs are pre-built — no compile step needed on your side. Drop them anywhere in your project (we suggest .o11y/) and reference them from the run command (see next question).java -javaagent:opentelemetry-javaagent.jar \ -Dotel.javaagent.extensions=.o11y/fund-transfer-ext.jar \ -Dotel.javaagent.configuration-file=.o11y/javaagent.config \ -Dotel.service.name=fund-transfer \ -jar your-application.jarOteligence spans appear in Jaeger, Grafana Tempo, Datadog, etc. with
library.name = [oteligence], nested as children of the OTel agent's HTTP server span. The collector.config is for your OTel Collector deployment (tail sampling, PII redaction, APM export), not for the app container.1. Precision spans replace debug-logging cycles. With method-level traces always present, you eliminate the add-logging → rebuild → redeploy cycle — saving hours of engineer time per incident.
2. Scored instrumentation controls span volume. Oteligence adds 1.2–1.5× baseline. Blanket
@WithSpan on all methods adds 10–30×. Fewer noisy spans means less data ingested by your APM platform.oteligence/maestro-action) is in active development — it'll let every push run analysis automatically, generate fresh per-service Extension JARs, and feed them into your existing Docker / Kubernetes deploy. For now you can run the Web UI analysis once per release and commit the downloaded artifacts (we suggest under .o11y/) so the team shares the same extensions and configs.support@oteligence.com to let us know what you need.