{
  "schema_version": 1,
  "type": "app",
  "slug": "adom-rc",
  "title": "Adom RC",
  "brief": "Many parallel Claude Code chat threads per container — each in its own Hydrogen webview tab, kept in sync with claude.ai/code in your native browser and the Anthropic phone app.",
  "version": "0.2.0",
  "tags": [],
  "license": "MIT",
  "discovery_triggers": [
    "new claude chat thread",
    "parallel claude tabs",
    "multiple claude sessions",
    "claude in webview",
    "claude in hydrogen",
    "chat panel in container",
    "name this thread",
    "label this conversation",
    "sync claude.ai with my container",
    "open claude on my phone",
    "phone handoff",
    "continue this on my phone",
    "remote claude",
    "claude rc",
    "rc session",
    "adom rc",
    "/adom-rc",
    "kill stale claude sessions",
    "claude phone app",
    "claude.ai web client",
    "vscode chat to phone",
    "disable claude squad"
  ],
  "discovery_pitch": "Run many parallel Claude Code chat threads per Adom container — each in its own dedicated Hydrogen webview tab, kept in sync with claude.ai/code in your native browser and the Anthropic Claude phone app. Image paste, label coercion across surfaces, drive-from-CLI.",
  "install": {
    "binary_name": "adom-rc",
    "install_dir": "",
    "install_hint": "",
    "version_cmd": ""
  },
  "readme": "# Adom RC\n\n`adom-rc` runs **many parallel Claude Code chat threads on one Adom container**, each in its own dedicated Hydrogen webview tab. Every thread is also live on **claude.ai/code in your native browser** and the **Anthropic Claude phone app** — same JSONL on disk, three windows.\n\n![Adom RC chat tab](https://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-rc/hero.png)\n\n## What it does\n\n- **Spawn a chat thread per task.** Type a label, click **New chat ⧉** — you get a popped-out Hydrogen tab `RC · <label>` with a Claude-style chat surface (scrolling feed, composer, image paste with thumbnails).\n- **Three surfaces, one conversation.** The thread is live on **claude.ai/code** in your default browser (one click, no extra login) and on the **Anthropic Claude phone app**. Type from any one — the other two see it.\n- **Names you actually recognize.** Your label (`silkscreen-readability`, `tps562201-eval`, `bar-lighting-ideas`) is coerced into the thread title on every surface — Hydrogen tab, /resume picker, claude.ai history, phone-app thread list. Three coercion paths for belt-and-suspenders coverage.\n- **Image paste with thumbnails.** Paste a screenshot in the composer — it auto-resizes to ≤1000 px, uploads to a temp path, shows as an 88×88 thumbnail above the composer with click-to-zoom. The `@/tmp/...` path is hidden from your text; only injected at send time.\n- **Drive a chat tab from the CLI.** `adom-rc input <name> \"<text>\"` queues a message that the tab consumes and submits — same code path as a real Enter keystroke. Useful for ralph-loops and automation.\n\n## Quick start\n\n```bash\nadom-rc start              # daemon on 127.0.0.1:8773 + watchdog\nadom-rc open               # management UI as a Hydrogen tab\n```\n\nIn the management UI: type a label, click **New chat ⧉**. Done.\n\nThe thread shows up on **claude.ai/code** under your /history (named `adom-rc: <label>`) and on the **Anthropic Claude phone app** under Recents. Same JSONL, same conversation, three windows.\n\n## How it works\n\n```\n[hydrogen webview chat tab]\n   │ POST /api/inject {tmux_name, text}\n   ▼\n[adom-rc daemon] ── tmux send-keys ──→ [tmux session running `claude` REPL]\n   │                                            │\n   │                                            └─→ writes turn to\n   │                                                ~/.claude/projects/-home-adom-project/<uuid>.jsonl\n   │\n   └─ live-tails the JSONL ──→ chat tab polls /api/conversation/<uuid>\n                              ─→ claude.ai/code reads same conversation via bridge_session_id\n                              ─→ Anthropic phone app same way\n```\n\nEach thread is `claude --permission-mode bypassPermissions -n \"<label>\"` running in tmux. `tmux send-keys -l \"<text>\"` is the inbound channel; the JSONL on disk is the live-tail source. Three windows, one source of truth.\n\n## Drive a chat tab from CLI\n\n```bash\nadom-rc input <tmux-name-or-label-slug> \"<text>\"\n```\n\nThe tab consumes the queue on its next livetail tick (~1s) and fires the same code path as if you'd typed and hit Enter. The tab itself doesn't need to be focused.\n\n## Phone attach (legacy `claude rc` flow, still supported)\n\nFor phone-attachable threads, use `adom-rc new --label \"<topic>\"` or `/adom-rc handoff \"<label>\"` — the management UI shows a QR + a `claude.ai/code?environment=env_…` URL. Scan with the Anthropic phone app to attach.\n\n## Architecture highlights\n\n- Single Rust binary (~3 MB)\n- Bounded thread pool (8 workers, 32-slot queue) — chat-tab polling cannot OOM the daemon\n- Streaming JSONL parse + mtime-keyed LRU cache + per-UUID inflight coalescer\n- Background watchdog respawns crashed `keepalive: true` sessions every 15s\n- State persisted to `~/.adom-rc/state.json`\n- All UI rendered from embedded HTML/CSS — no node, no bundler\n\n## Source\n\nGitHub: [adom-inc/adom-rc](https://github.com/adom-inc/adom-rc) (v0.2.0)\n",
  "author": {
    "id": "695820315b5f1e4db2fcf602",
    "name": "Kyle Bergstedt",
    "email": "kyle@adom.inc"
  },
  "visibility": {
    "public": true
  },
  "hero": null,
  "sample_prompts": [],
  "metadata": {},
  "created_at": "2026-05-28T05:29:17.998Z",
  "updated_at": "2026-05-28T05:29:17.998Z",
  "skills": []
}