Runtime SDKsJVM bridge

JVM bridge

Attach the Java 17+ JDI sidecar to a privately exposed JDWP endpoint with full debug metadata.

Install the artifact

The Maven coordinates are io.liveprobe:liveprobe-bridge:0.3.0. The pilot publishes to GitHub Packages, so Maven needs a GitHub token with read:packages and repository access.

shell
gh auth refresh --scopes read:packages
export GITHUB_ACTOR="$(gh api user --jq .login)"
export GITHUB_TOKEN="$(gh auth token)"

mvn dependency:get \
  -Dartifact=io.liveprobe:liveprobe-bridge:0.3.0 \
  -DremoteRepositories=github::default::https://maven.pkg.github.com/mohammed2945/LiveProbe

Prepare the target JVM

Compile with javac -g so class files include line-number and local-variable tables. Start JDWP on loopback or a private authenticated network boundary:

shell
java \
  -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5005 \
  -jar application.jar
Never expose JDWP publicly

JDWP is a powerful debugging interface. Keep it on loopback, a sidecar network, or another private boundary that only the bridge can reach.

Run the bridge

shell
export LIVEPROBE_API_KEY="lp_service_<secret>"
export LIVEPROBE_PROJECT_ID="inventory"
export LIVEPROBE_ENVIRONMENT="production"

java --add-modules jdk.jdi \
  -jar "$HOME/.m2/repository/io/liveprobe/liveprobe-bridge/0.3.0/liveprobe-bridge-0.3.0.jar" \
  --service inventory-service \
  --attach 127.0.0.1:5005 \
  --broker https://liveprobe.tryastrea.tech \
  --commit "$LIVEPROBE_COMMIT_SHA"

Current limitations

The JVM integration is a JDI sidecar, not a full -javaagent. Source files use suffix matching and require class debug metadata. JDI breakpoint requests may briefly suspend the executing thread. The bridge reports rate_limited while its breakpoint requests are suspended by the hit-rate safeguard.