Run an AI SEO Agency from Your Phone: Grok Bot + Tailscale Dual-Machine Architecture
Run a two-machine SEO agency from your phone via Grok Bot: Tailscale private net, passwordless SSH, driver-neutral runbook, run locks, and approval hooks
- Who
- Technical operators who need to manage multi-machine workflows from a phone
- You get
- Grok Bot as front door, scheduling mac (business) and x1 (client work) via Tailscale SSH, with dual drivers sharing runbook and locks
- You need
- Grok Bot
Constraints
Prerequisites: Grok Bot account, Tailscale account, two SSH-capable machines (mac + Linux/ThinkPad), phone access to Grok Bot. Costs: Tailscale personal tier is free; Grok Bot priced per xAI. Source shows full network architecture and scripts, but does not provide complete implementations like ops-dispatch; reader must fill in some scripts. Not tested by this site.
What they did
Author brendenvonhouse built a system to remotely operate an SEO agency from a phone via Grok Bot: the Grok Bot cloud computer serves as front door, connecting over Tailscale private-net SSH to mac (business/keys) and x1 (client execution). A main bot handles routing, specialist bots own lanes, and HANDOFF templates standardize task handoffs. Both machines use scripts at identical paths and a driver-neutral runbook; ops-lock prevents duplicate runs, and a pre-tool hook intercepts sensitive operations pending human approval.
How it went
Author reports: the morning brief arrives as a single message, voice memos go verbatim into a log, releases and deployments go through Hermes/Telegram where the hook waits for confirmation, and all other work completes without opening the physical machines. (author_report, unverified)
Worth knowing
1. The ops-dispatch script is described but not fully implemented; reader must develop it. 2. Author is currently A/B testing Droid (FactoryAI) and Prime Agent as long-running task harnesses; results pending. 3. Grok Bot official docs state that bots under one account share files, browser sessions, and command-line credentials; screens are not separate security boundaries. 4. Source recommends treating agent credentials with the same seriousness as production credentials, citing Anthropic's September 2026 threat intelligence report. 5. If replicating, run one driver cleanly for a week before adding a second.
Steps
Build private network with Tailscale and configure SSH
Install Tailscale on Grok Bot's cloud computer and join your tailnet; do the same on mac and x1. Generate a dedicated SSH key pair for the bot, add the public key to ~/.ssh/authorized_keys on both mac and x1. Create ~/.ssh/config on the bot's computer with short names (mac / shed). Test ssh mac and ssh shed should log in without password. For a fresh tailnet, consider using tags to restrict the bot to SSH-only access to your machines.
Execution prompt · Source text。Grok Bot cloud computer terminal; tailscale status should list bot, mac, x1 after run
# on grok bot's cloud computer curl -fsSL https://tailscale.com/install.sh | sh # no /dev/net/tun on the box? run the daemon in userspace mode # sudo tailscaled --tun=userspace-networking & # join the tailnet. it prints a login url. approve it from your phone. sudo tailscale up --hostname=<bot-box> tailscale status # your mac and x1 should be listed by name
Execution prompt · Source text。Terminal on mac and x1; add bot public key to authorized_keys
# on the mac and on the x1 # the bot's public key only. one line per key, easy to revoke. echo 'ssh-ed25519 AAAA<bot-public-key> grokbot' >> ~/.ssh/authorized_keys
Execution prompt · Source text。~/.ssh/config on Grok Bot's cloud computer
# ~/.ssh/config on grok bot's computer Host mac HostName <mac-name>.<your-tailnet>.ts.net User <user> Host shed HostName <x1-name>.<your-tailnet>.ts.net User <user> Port <ssh-port>Setup guidance · Source text。Tailscale ACL console (optional, author recommends for fresh tailnets)
{ "tagOwners": { "tag:agent": ["autogroup:admin"], "tag:home": ["autogroup:admin"] }, "grants": [ { "src": ["tag:agent"], "dst": ["tag:home"], "ip": ["tcp:<ssh-port>"] } ] }Split roles: mac for business, x1 for client work
mac handles GTM, finance, proposals, and business-side work; also runs Hermes (if used) and Prime Agent business chats. All keys and billing credentials stay on mac. x1 (the AI shed) handles all client execution, with one dedicated Prime Agent chat and folder per client; every job ends with a written receipt. Rule: never run agent work on the machine you're sitting at—mac orchestrates, x1 executes.
Configure main router, HANDOFF template, and SSH dispatch
The main bot acts as router: all phone commands land here first, then get routed to owners. Specialist bots each own one lane; HANDOFF messages use a fixed shape so the receiving bot can start with nothing else. For work on machines, the router sends a brief to the owning chat over SSH, then waits for receipt. The dispatch script must implement: refusing jobs when the chat is busy or already holds a claim, and rejecting duplicate briefs for the same job. Each chat owns one job at a time.
Execution prompt · Source text。HANDOFF message format from Grok Bot main router to specialist bot
HANDOFF <id> from: main to: <specialist> task: list this week's inbox threads that need a decision from me context: /workspace/<project>/rules.md and /workspace/<project>/clients.md done = one line per thread with the link and the decision needed, saved to /workspace/<project>/decisions/<date>.md limits: read only. no replies, no labels, no archiving. return: one line to main: verified | needs yes | blocked: <cause>Execution prompt · Source text。Grok Bot cloud computer terminal; SSH brief to Prime Agent on shed and read receipt
# from grok bot's computer: brief the client chat on the shed ssh shed 'prime-agent send <session-id> "$(cat ~/<workspace>/Runtime/briefs/<occ-id>.md)"' # later: read the receipt the chat wrote when it finished ssh shed 'cat ~/<workspace>/Runtime/receipts/<occ-id>.md'
Build driver-neutral runbook, run locks, and scheduled routines
Place scripts at identical paths on both machines so any driver (Hermes/Grok Bot) calls the same ops-* commands. Write the runbook in markdown, using 'the driver' everywhere a name would appear. Before each routine, use ops-lock to create a daily lock file; if it exists, the second driver prints SKIP and stops. Routines (e.g., morning brief) are saved prompts with strict schedules and output formats; cron on mac triggers the same pre-run lock when Hermes holds the clock.
Execution prompt · Source text。Grok Bot saved routine prompt, or runbook entry read before cron trigger
ROUTINE morning brief when: every day 06:45 local first: take the lock. ops-lock R1. if it prints SKIP, stop. read: the evidence pack in Runtime/, today's calendar, inbox labels write: one message, 250 words max. drop empty sections. money. client deadlines. approvals waiting. today's calendar. inbox items that need me. rule: every money or client line carries its source path. never: send, publish or change anything.Execution prompt · Source text。ops-lock script on mac and x1; place at ~/workspace/ops/bin/ or identical path
#!/usr/bin/env bash # ops-lock <routine> [slot]: one run per routine per day (or per slot) set -euo pipefail routine="$1"; slot="${2:-}" day="$(date +%F)" lock="$HOME/<workspace>/Runtime/locks/${routine}-${day}${slot:+-$slot}.lock" mkdir -p "$(dirname "$lock")" # noclobber makes the create atomic: the first driver wins if ( set -o noclobber printf '{"routine":"%s","driver":"%s","host":"%s","started":"%s"}\n' \ "$routine" "${OPS_DRIVER:-unknown}" "$(hostname)" "$(date -Iseconds)" > "$lock" ) 2>/dev/null; then echo "LOCKED $lock" else echo "SKIP: $routine already run or running ($(cat "$lock"))" exit 0 fiExecution prompt · Source text。Runbook markdown entry for R2; describes dispatch scheduling logic
## R2 due-work router when: 08:30 and 13:30 driver: the scheduled driver (see 3a). anyone may run it on demand. steps: 1. ops-lock R2 <HHMM>. SKIP means another driver has it. stop. 2. read Runtime/due.md. pick items whose owner chat is idle. 3. ops-dispatch <chat> <occ-id> <brief-file> 4. log the occurrence id in the work log. done: every due item is dispatched, or listed as blocked with one cause. gate: none. dispatch is internal. sends and releases need a yes. ## 3a who holds the clock scheduled driver: <hermes | grokbot> on-demand: either, same scripts, same locks.
Execution prompt · Source text。mac crontab example (when Hermes holds the clock)
# illustrative crontab line on the mac 45 6 * * * OPS_DRIVER=hermes ~/<workspace>/ops/bin/ops-r1.sh >> ~/<workspace>/logs/r1.log 2>&1
Set up approval hook and security boundaries
Security boundaries rest on network, keys, and approval hook: keys live on the machine that uses them, nothing sensitive on the shared cloud computer; the bot accesses via dedicated SSH key on a private network with no public ports; a pre-tool hook on mac blocks send/publish/deploy/delete until you explicitly reply yes in that chat. Grok Bot's cloud computer and bot screens are not separate security boundaries (per official docs), so all writes are restricted to an inbox folder and append-only dump log; everything else is read-only.
Execution prompt · Source text。pre_tool_call hook implementation on mac; integrate with your agent framework
# pre_tool_call hook (illustrative) GATED = ("send", "publish", "deploy", "delete") def pre_tool_call(tool: str, args: dict, ctx) -> dict: if any(word in tool for word in GATED): # only my own message in this chat counts as a yes if not ctx.approved_by_owner(tool, args, channel=ctx.channel): return {"allow": False, "reason": f"needs a yes: {tool}"} return {"allow": True}
Prompt you can copy
Reference prompt · Editorial suggestion。Confirm the destination, input variables and output format before use.
This block is the prompt. Ads are never placed here.
No prompt needed — just follow the steps.
This template has no single master prompt; the core is architecture configuration and script deployment. Follow the steps to set up Tailscale networking, SSH config, runbook authoring, and lock scripts.
Source
手机驾驭 SEO 机构:Grok Bot 前门 + Tailscale/SSH + runbook/锁 + 审批钩 · brendenvonhouse · X · 2026-10-10T23:57:05.000Z
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.