# Built a remote control for the AI agents living on my garage

> Source: <https://promptcube3.com/en/news/6905/>
> Published: 2026-08-19 10:02:12+00:00

# Built a remote control for the AI agents living on my garage

The garage server has been humming along for months: a refurbished OptiPlex running Ubuntu, 32 GB RAM, a single 3060. It's perfect for

The stack is boring on purpose: Go 1.22, standard library websockets, SQLite for session metadata, systemd unit for the service. Frontend is Vite + React + Tailwind, compiled to a single static binary via

Missing pieces I'm tackling this month: macOS/iOS builds (code-signing is the blocker), a Tailscale/WireGuard toggle so you don't need to expose port 8080, and agent-specific keybindings — Codex loves Ctrl-C, Claude Code prefers Ctrl-D.

[Claude Code](/en/tags/claude%20code/), Codex, OpenCode, and Hermes sessions that run for hours. What wasn't perfect was the workflow — every time I wanted to check a long-running task or nudge an agent, I'd open Termius, authenticate, tmux attach, scroll back, type, detach. On a phone? Forget it.So I wrote Relay. It's a tiny Go backend that sits on the Linux box and a React frontend that runs anywhere — browser, Android, Windows (macOS and iOS builds are next). The backend speaks the native protocols of each agent: Anthropic's CLI for [Claude](/en/tags/claude/) Code, OpenAI's for Codex, OpenCode's own socket, Hermes via its HTTP API. No wrapper scripts, no polling hacks. You log in once, pick an agent, and you're looking at a live terminal that survives device swaps.

What changed day-to-day:

**Session persistence**— start a refactor on the desktop, walk away, pick up the exact same scrollback on the phone at the coffee shop. The tmux session never dies unless you kill it.**File round-trips**— drag a log file down, edit a prompt template up. Works over the same WebSocket tunnel, no scp needed.** Quota glance**— one click shows Anthropic/OpenAI token burn for the current billing cycle. Saved me from two surprise $0.00 weeks already.**Credentials stay home**— API keys, SSH keys, git credentials never leave the backend. The frontend is just a viewport.

The stack is boring on purpose: Go 1.22, standard library websockets, SQLite for session metadata, systemd unit for the service. Frontend is Vite + React + Tailwind, compiled to a single static binary via

`go:embed`

. Total binary size ~12 MB. MIT licensed, repo at github.com/relay-sh/relay.Current platform matrix:

**Backend**: Linux only (amd64/arm64)** Frontend**: Web (any browser), Android APK, Windows .exe** Agents tested**: Claude Code, Codex, OpenCode, Hermes

Missing pieces I'm tackling this month: macOS/iOS builds (code-signing is the blocker), a Tailscale/WireGuard toggle so you don't need to expose port 8080, and agent-specific keybindings — Codex loves Ctrl-C, Claude Code prefers Ctrl-D.

If you've got a box collecting dust and a subscription to any of these agents, it's a 5-minute `curl | bash`

to try. Would love to hear what breaks on your hardware.

Story tracker · related coverage

[Does anyone actually care about llms. 13h ago](/en/news/6847/)

[Codex Dream Skin lets you customize your desktop UI 16h ago](/en/news/6824/)

[AI is making every side project feel like meaningless slop 1d ago](/en/news/6755/)

[HarnessRouter makes it way easier to switch between Claude Code 1d ago](/en/news/6726/)

[Codex weekly limits are disappearing way too fast for me 1d ago](/en/news/6708/)

[GitHub PRs are completely falling apart under the weight of 2d ago](/en/news/6641/)

[Next AI Takes on the Prime Number Challenge →](/en/news/6899/)

Free AI toolbox — all free to use

Detailed breakdowns of putting AI to work are in

[a guide to making money with AI](https://tanyan888.com/), with plenty of directly applicable cases.## All Replies （3）

A

Thanks for sharing! What does it do exactly? Always on the lookout for lightweight tools that don't phone home.

0

N

C
