JLib Inspector 1.0.0

The first stable release of JLib Inspector is now available.

Artifacts

Download shaded JARs from the GitHub Releases page:

GitHub Releases: v1.0.0

Verify SHA256 checksums listed in the release before running in production.

Frontend Container Image

A pre-built container image for the dashboard (UI + REST proxy + WebSocket) is published.

macOS / Windows (Docker Desktop) quick start (Linux differs; see below):

docker run \
  -e JLIB_SERVER_URL=http://host.docker.internal:8080 \
  -ti -p 3000:3000 -p 3001:3001 \
  brunoborges/jlib-frontend:1.0.0

Then open: http://localhost:3000

WebSocket default port: 3001 (exposed). Change via PORT / WS_PORT if needed.

Running the Server (Java)

java -jar jlib-inspector-server-1.0.0-shaded.jar 8080

Health check:

curl -s http://localhost:8080/health

Attaching the Agent to Your App

java -javaagent:/path/to/jlib-inspector-agent-1.0.0-shaded.jar=server:8080 -jar your-app.jar

Explicit host & port:

java -javaagent:/path/agent.jar=server:my-host.example.com:8080 -jar your-app.jar

Environment variable override (takes precedence over agent arg):

export JLIB_SERVER_URL="http://my-host.example.com:8080"
java -javaagent:/path/agent.jar -jar your-app.jar

Docker Networking Notes (Linux vs macOS / Windows)

Host networking differs across platforms; this affects a containerized frontend reaching a server running on your host.

Linux

True host networking is available:

docker run --rm --network host brunoborges/jlib-frontend:1.0.0

macOS & Windows (Docker Desktop)

--network host is a partial emulation; container localhost != host. Use the special DNS name:

JLIB_SERVER_URL=http://host.docker.internal:8080

Example:

docker run \
  -e JLIB_SERVER_URL=http://host.docker.internal:8080 \
  -p 3000:3000 -p 3001:3001 \
  brunoborges/jlib-frontend:1.0.0

Why:

Verifying Connectivity

macOS / Windows container reaching host server:

docker run --rm alpine sh -c "apk add --no-cache curl >/dev/null && curl -v http://host.docker.internal:8080/health"

Linux host-network quick check:

docker run --rm --network host alpine curl -s http://localhost:8080/health

Troubleshooting

Symptom Cause Fix
Frontend shows no apps Agent not sending or server unreachable Verify agent arg / env + server /health
Connection refused (macOS) Used localhost inside container Use host.docker.internal
Slow shutdown w/ server reporting Agent async send finishing Accept or lower timeout (future config)
Multiple apps overwrite Same computed App ID Add distinguishing jars / params

Security Considerations

Roadmap Highlights After 1.0.0

Feedback

Open issues or discussions: https://github.com/brunoborges/jlib-inspector

Happy inspecting!