AYUSH~KADALI
← project index

Anchor

COMPLETED

A unified terminal for embedded and remote systems — one browser interface for every console in the lab, whether it's a board on USB serial or a server over SSH, reachable from any device on the network.

Java · WebSocket · Servlets · jSerialComm · JSch · SSH · USB Serial

The bench problem

Anchor came from a recurring bench reality: flashing a board on one laptop while its logs stream on another, an SSH session to the build server open on a third machine, and no way to hand any of it to a teammate without physically swapping seats. Every console in the lab lived on whichever machine happened to be plugged into it.

Anchor fixes that with one URL. It’s a browser-based terminal that connects to hardware on the bench over USB serial — ports are auto-detected — and to remote servers over SSH, from any device on the network. A board wired to the lab PC becomes a console you can open from your own laptop across the room.

How it works

The backend is Java 11 with servlets and JSP. Terminal I/O runs over WebSocket (JSR 356), so keystrokes and output move in real time rather than over polled HTTP. jSerialComm handles the serial side; JSch handles SSH. The whole thing sits in a three-layer architecture with a ConnectionManager core that owns every live connection and brokers it to browser sessions.

Because the manager owns connections rather than the browser tab, sessions survive page refreshes, can be shared between users, and ownership can be transferred — useful when one person starts a flash-and-debug session and someone else needs to take it over. User authentication is built in, so a shared lab server doesn’t mean a free-for-all.

What it changed

The lab’s consoles stopped being tied to specific machines. Any board, any server, one interface.