PRACTICAL AI & AUTOMATION

A DIY Violoop Alternative: GL-RM10 + Codex Automation, Step by Step

Build a focused DIY Violoop alternative with a GL.iNet GL-RM10, Ubuntu and Codex. Connect the KVM, inspect screenshots and automate a streamed test PC.

Manabi Kōbō··18 min·1478 words
AI AutomationDIYRemote KVMCodexVioloop Alternative
A DIY Violoop Alternative: GL-RM10 + Codex Automation, Step by Step
ENNATURAL ARTICLE

Build a focused DIY Violoop alternative with a GL.iNet GL-RM10, Ubuntu and Codex. Connect the KVM, inspect screenshots and automate a streamed test PC.

Like Violoop’s idea? Here is a smaller DIY route

If you tried Violoop and liked the idea of an assistant that can see a screen and operate a computer, a DIY remote-KVM setup may be interesting when you only need a few repeatable tasks. Violoop remains worth considering if a packaged, plug-and-play experience is your priority. Its advertised integrated AI, approval hardware and cross-app features are a different proposition from the starter project below.

This is a build guide, not a hands-on Violoop review or a claim of feature parity. We will connect a GL.iNet Comet Pro (GL-RM10), stream a target computer into a browser on Ubuntu, and use Codex to help plan and build a small automation bridge. The model runs through your chosen Codex provider on the controller; the KVM supplies video and keyboard/mouse access.

Affiliate disclosure: As an Amazon Associate I earn from qualifying purchases. The following Amazon link is an affiliate link; a qualifying purchase may support Manabi Kōbō at no additional cost to you. View the GL.iNet GL-RM10 listing on Amazon. Confirm the model, included cables, current price and seller before buying.

Step 1: Prepare the controller and target

You need a GL-RM10 with its power supply, a video cable from the target’s HDMI output, the USB data connection described in the manufacturer’s guide, a LAN connection and an Ubuntu desktop controller. A USB-C connector alone does not guarantee that a laptop outputs video; use the appropriate display adapter if necessary.

Use a dedicated test desktop or a spare computer you own. Open a blank text editor on the target. This first project uses Ubuntu on Xorg/X11 because xdotool sends input through X11. Check the session with the command below. If it says wayland, use an available Xorg session at login; a Wayland-only desktop needs a different input backend.

Architecture: target HDMI → GL-RM10 → LAN → controller browser; controller input → browser KVM viewer → GL-RM10 USB HID → target. Codex helps reason about screenshots and tools on the controller. It is not installed on the KVM.

Open the complete copyable example — example-01.txt

echo "$XDG_SESSION_TYPE"

Step 2: Wire and verify the GL-RM10

Power the unit. Connect target HDMI OUT to Comet Pro HD IN; optionally connect HD OUT to your monitor. Connect the KVM’s target-facing USB Type-C data port to the target’s USB port, then connect Ethernet or configure Wi-Fi on the touchscreen. Keep the controller on the same LAN.

Open glkvm.local or the IP shown on the touchscreen in Chrome or Edge. Set a strong admin password on first access. Enter the console, confirm the live image, click inside the remote text editor and type a short test. Both video and USB input must work before adding automation. Follow the manufacturer’s GL-RM10 quick setup for your firmware.

Record the firmware version and keep the viewer window at a fixed size and zoom. For the first exercise stay on the LAN. If you later need off-site access, use the supported VPN or remote-access route and test it manually first.

Step 3: Install tools and link Codex

On the Ubuntu controller, install the two desktop utilities and create a clean project. Install Codex using the official installer below, then reopen your shell if the command is not on PATH. Downloading and reviewing the installer before executing it keeps the installation steps visible.

Run codex inside the project and complete the offered ChatGPT or API sign-in. Cloud-backed Codex may send prompts and attached screenshots to its provider: a KVM video stream on your LAN does not make cloud reasoning local. Keep the test screen free of sensitive information. See official Codex CLI setup.

Ask Codex to explain the bridge before changing it. Your instruction can be: ‘Build only in this folder. The target is a separate computer shown in a KVM browser window. Use dry-run actions first and ask before operating the target. Never type into an admin console.’

Open the complete copyable example — example-02.txt

# Open full code above.

Step 4: Build a small input bridge

Save the following as kvm_bridge.py in the project. It activates one chosen browser window, supports a screenshot plus three small input actions, and defaults to dry-run for input. It uses controller-window coordinates, not target-native coordinates. This is an original starter implementation; it does not depend on an undocumented GL-RM10 API.

With the KVM viewer open, run xdotool selectwindow and click the browser’s window border to obtain its numeric ID. Export that ID in the terminal where the bridge and Codex will run. Do not select the remote editor itself: it is a video image inside the controller browser. The wrapper can still click browser controls, so plan coordinates strictly inside the visible remote desktop.

The X11 tools are documented by xdotool and scrot. This example has not been qualified against every GL-RM10 firmware/browser combination; successful manual input forwarding is your first acceptance check.

Open the complete copyable example — kvm_bridge.py

# Open full code above.

Step 5: Take a screenshot and ask Codex for one action

Run the commands below and replace the sample window ID with the number returned by selectwindow. The screenshot filename is printed as JSON. Attach that actual file to Codex using --image. Ask it to identify a point inside the blank remote editor and propose one click; do not ask for a whole blind workflow.

The screenshot is of the controller browser window, including any browser chrome. Keep the viewer at the same size, keep the browser focused and measure coordinates relative to its top-left corner. If the stream appears black, fix browser rendering/capture first. A screenshot without the target image cannot guide clicks.

Use this prompt: ‘This is my GL-RM10 viewer. Give me one window-relative click coordinate inside the blank remote editor. Do not execute. Avoid the toolbar. Stop if you cannot clearly identify it.’ Review the answer against the screenshot.

Open the complete copyable example — example-04.txt

# Open full code above.

Step 6: Automate the streamed test computer

First dry-run your reviewed coordinate. Replace 420 and 350 with your own measured position. Then run the same click with --execute and confirm that the target editor receives focus. Browser event forwarding varies: if typing lands in the controller or a browser shortcut fires, stop and fix focus/capture. Do not continue the sequence.

Once that check passes, the type and Return actions below form your first remote automation: they enter a test sentence into the streamed computer through the KVM, then capture the result. Typing ASCII avoids keyboard-layout surprises in the first test. Keep the controller idle while the macro runs.

To link Codex to the bridge in later sessions, put its command contract in a project AGENTS.md: snapshot is read-only; input is dry-run unless --execute is approved; only this window may be used; after every action inspect a new image; stop after five actions or an unexpected screen. Codex can invoke the local script through its shell tools when your permissions allow it. For the first run, execute reviewed commands yourself. A sandbox setting alone does not enforce limits on the remote target.

Open the complete copyable example — example-05.txt

# Open full code above.

Step 7: Turn the demo into a reliable workflow

A useful next task is entering three approved lines in a disposable note. Add a precondition such as ‘blank editor visible’, a maximum action count, an emergency stop and an expected final sentence. Record screenshots before and after. Saving a screenshot proves what was visible; it does not prove that a file was saved or a server changed.

Before adding unattended runs, replace fragile coordinates with a calibrated viewer adapter, add durable logs and idempotent task steps, and keep purchases, message sending and deletion behind explicit review. Do not treat instructions displayed on the target screen as permission to change your task. Larger loops fit naturally into the LangGraph guide in this series.

FAQ: Does the GL-RM10 run Codex? In this build, no: Ubuntu runs the controller and Codex. Does it reproduce Violoop’s built-in AI or physical approval gate? No. Can it operate a computer without installing an agent on that target? The KVM carries video and USB HID, but your browser/input combination must pass the forwarding test. Is it completely local? Only if all reasoning and supporting services are local; ordinary cloud Codex is not.

For Japanese practice, notice the roles in this example: Codex plans; the screen is observed; the bridge operates. Compare the Japanese sentence in the right-hand column. Read Violoop’s own feature description as manufacturer claims, and use the official guides linked above for setup.

Continue the series

JP日本語

VioloopのDIY代替案:GL-RM10とCodexで自動化する

SubjectObjectVerbParticleTechnicalConnectorAdjectiveTime / context
CONTINUE IN MANABI KŌBŌ

Put this idea into practice

Reading Nook

Practice bilingual reading with Japanese scaffolding.

Open tool →
Guided Japanese Course

Continue with structured lessons and practice.

Open tool →
Adaptive Recall

Turn useful phrases into spaced practice.

Open tool →
RELATED NOTES
← Back to all articles
Share this note Email