explaingit

daniel-farina/grok-remote

19TypeScriptAudience · developerComplexity · 3/5ActiveSetup · moderate

TLDR

Web dashboard to run xAI grok coding agents on one always-on host and drive them from any device on your Tailscale network.

Mindmap

mindmap
  root((grok-remote))
    Inputs
      Grok CLI agent
      Tailscale tailnet
      Image attachments
    Outputs
      Live web dashboard
      Streamed tool calls
      Persisted conversations
    Use Cases
      Phone access to agents
      Multi-agent control plane
      Always-on coding box
    Tech Stack
      TypeScript
      Node
      PM2
      Vite
      Tailscale

Things people build with this

USE CASE 1

Drive grok coding agents from a phone across your tailnet

USE CASE 2

Keep multiple agent conversations alive across machine reboots

USE CASE 3

Turn one always-on machine into a multi-agent server

Tech stack

TypeScriptNodePM2ViteTailscale

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Node 20, PM2, an authenticated grok CLI, and a Tailscale account for tailnet mode.

In plain English

grok-remote lets a person run grok coding agents on one always-on computer and drive them from any other device on the same private network. The agents themselves come from xAI's grok command line tool. This project adds a web dashboard around them so the user can talk to several agents in parallel from a laptop or phone instead of being tied to a terminal on the host machine. The author notes that the project is not affiliated with xAI, grok, or Tailscale. The networking trick is Tailscale, a service that builds a small private network between a person's own devices. The dashboard runs on the host computer and is reachable across that private network without exposing anything to the public internet. PM2, a Node.js process manager, keeps the dashboard server alive across restarts. A single installer script checks for Node 20, PM2, and Tailscale, builds the dashboard, and registers a short command called gr on the user's PATH for opening or controlling the app. Each conversation spawns its own grok agent process with a working directory under ~/.grok-remote/agents. The dashboard talks to that process using the Agent Client Protocol, which is the message format grok expects, so it can act as a full host: the agent can run shell commands, read and write files, and request permission, all visible in the browser as live cards. Tool calls show status pills moving from pending to running to completed or failed, alongside the assistant's streamed text and a token usage footer. Conversations are stored on disk and survive restarts. Users can drag or paste image attachments, browse the agent's workspace through a Files tab with previews for text, HTML, images, audio, and video, and run slash commands that grok exposes. Conversations can be starred, archived, restored, or deleted forever. The interface installs as a mobile progressive web app and ships with dark, light, hacker, and unicorn themes.

Copy-paste prompts

Prompt 1
Walk me through running grok-remote on a Mac mini and reaching it from my iPhone over Tailscale
Prompt 2
Show me how the ACP host implementation in grok-remote handles terminal and fs tool calls
Prompt 3
Help me add a fifth theme to grok-remote next to dark, light, hacker, and unicorn
Prompt 4
Explain how grok-remote reconnects an archived conversation using session/load and lastSessionId
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.