Create a short-lived invitation
The host creates a fresh P-256 certificate, its exact SHA-256 fingerprint and a random 128-bit token that expires after 10 minutes.
JDoor is remote assistance for trusted local networks. A short-lived invitation reaches the named host; the person at that screen approves locally, starts view-only and can stop the session at any time.
These are actual desktop surfaces from the 1.0.0 codebase. The launcher separates the two roles before a connection begins; the shared computer names the viewer, shows the matching code and asks locally before revealing the screen.
Two roles, one visible boundary before anything connects.
The endpoint is redacted here; the matching code and permission boundary remain visible.
The application checks the route and constrains the protocol. Both people compare the same code; the host makes the final decision.
The host creates a fresh P-256 certificate, its exact SHA-256 fingerprint and a random 128-bit token that expires after 10 minutes.
The host sends the one-time jdoor:// link to the intended helper through
a separate, trusted channel.
The helper’s application checks the advertised host and exact certificate fingerprint before presenting the single-use token inside TLS 1.2/1.3.
Both computers show the same verification code. The host reviews the request and approves it on the machine being shared.
Primary-display frames begin only after approval. Remote input stays disabled unless the host enables it for that session.
Two student collaborators created JDoor as a school experiment in networking and remote control. The first version proved the connection could work. Years later, one maintainer rebuilt it around a narrower and more useful premise: the person sharing the machine should remain visibly present in every decision.
The modernization covers product direction, security, UX, testing and release engineering while preserving the project’s shared origin.
JDoor is not a reduced version of a remote-management suite. Its architecture follows one situation: two people, one approved support session and a trusted local network. Each omission protects that boundary, while introducing a cost we accept explicitly.
One desktop process owns the interface, screen capture, transport and input policy. Java provides mature TLS and concurrency while Swing keeps the approval surface independent of a browser runtime.
A direct route avoids creating a relay, account database or permanent control plane for an occasional support session. The network boundary remains visible to both people.
Every host run creates a fresh P-256 identity. The invitation binds the advertised host, exact certificate fingerprint and one-time token; the matching code gives both people something human-readable to compare.
Screen frames and optional input use an explicit, size-limited protocol. Viewing and control are separate permissions, so approval never silently grants the more powerful capability.
Connection evidence narrows a request to the endpoint named in that invitation for the current host run. Trust in the person—and every permission that follows—remains a local decision.
JDoor has no telemetry, analytics, crash upload, account service or public relay. It keeps a bounded local trail of security events—not a copy of the screen or what was typed.
JDoor fits a family member, classroom, lab or small office where the helper and host can coordinate on the same trusted network. If the job needs background administration or an Internet service, choose a product designed for that job.
Network boundary. Use JDoor only on a trusted LAN, share the complete pairing link through a separate trusted channel and do not expose port 8443 directly to the internet.
Residual risk. An approved helper can see the shared display and, while the host enables control, act through the host’s existing user session.
The repository identifies the current source as 1.0.0 and publishes its architecture, threat model, privacy documentation and tests. There is no signed installer or tagged GitHub release yet, so begin with the threat model and build locally. Community builds may trigger an unverified-publisher warning.