1:"$Sreact.fragment"
2:I[39756,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"default"]
3:I[37457,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"default"]
4:I[22016,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js","/_next/static/chunks/0rjdy2rge2uv4.js"],""]
5:I[85437,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js","/_next/static/chunks/0rjdy2rge2uv4.js"],"Image"]
c:I[68027,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"default",1]
:HL["/_next/static/chunks/0job0bwh~0y5i.css","style"]
:HL["/_next/static/media/IBMPlexSans_Bold-s.p.0~z9rsupns3rv.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/IBMPlexSans_Medium-s.p.0s-1qbqc6wgag.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/IBMPlexSans_Regular-s.p.0l-vv37ssd90w.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/IBMPlexSans_SemiBold-s.p.0u.mw9ignqukb.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/JetBrainsMono_Bold-s.p.0m9n5azko2fxt.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/JetBrainsMono_Medium-s.p.0sp08a3_wd31b.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/JetBrainsMono_Regular-s.p.0~~285bd0hytg.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
0:{"P":null,"c":["","docs","concepts"],"q":"","i":false,"f":[[["",{"children":["docs",{"children":["concepts",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0job0bwh~0y5i.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/01xlw8hd842-c.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0t2xr05rlu96l.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"dark","children":["$","body",null,{"className":"ibmplexsans_fafc4a19-module__oC6suW__variable jetbrainsmono_11cf4849-module__DeLwxa__variable antialiased","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[[["$","script","script-0",{"src":"/_next/static/chunks/0rjdy2rge2uv4.js","async":true,"nonce":"$undefined"}]],["$","div",null,{"className":"min-h-screen bg-surface text-on-surface selection:bg-primary/30 mesh-bg","children":[["$","nav",null,{"className":"fixed top-0 z-50 w-full border-b border-border-faint mesh-panel pt-[env(safe-area-inset-top)]","children":["$","div",null,{"className":"mx-auto flex h-14 max-w-7xl items-center justify-between px-4 sm:px-6 lg:px-8","children":[["$","$L4",null,{"href":"/","className":"flex items-center gap-3","children":[["$","$L5",null,{"src":"/brand/logo-mark-copper.svg","alt":"","width":24,"height":26,"priority":true}],["$","span",null,{"className":"font-headline text-sm font-bold uppercase tracking-[0.2em] text-on-surface","children":"REPOWIRE"}]]}],["$","div",null,{"className":"flex items-center gap-5","children":[["$","$L4",null,{"href":"/docs/quickstart","className":"font-mono text-[10px] font-semibold uppercase tracking-[0.16em] text-primary-fixed","children":"Docs"}],["$","$L4",null,{"href":"/dashboard","className":"hidden font-mono text-[10px] font-semibold uppercase tracking-[0.16em] text-outline transition-colors hover:text-primary-fixed sm:inline","children":"Dashboard"}],["$","$L4",null,{"href":"https://github.com/prassanna-ravishankar/repowire","target":"_blank","rel":"noopener noreferrer","className":"text-outline transition-colors hover:text-on-surface","children":[["$","span",null,{"className":"sr-only","children":"GitHub"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-github h-5 w-5","aria-hidden":"true","children":[["$","path","tonef",{"d":"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"}],["$","path","9comsn",{"d":"M9 18c-4.51 2-5-2-7-2"}],"$undefined"]}]]}]]}]]}]}],["$","div",null,{"className":"mx-auto flex max-w-7xl gap-10 px-4 pb-24 pt-24 sm:px-6 lg:px-8 lg:pt-28","children":["$L6","$L7"]}]]}]]}],{"children":["$L8",{"children":["$L9",{},null,false,null]},null,false,"$@a"]},null,false,null]},null,false,null],"$Lb",false]],"m":"$undefined","G":["$c",["$Ld"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"0ZK0hjj5IppzpNzyT6GpO"}
e:I[44368,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js","/_next/static/chunks/0rjdy2rge2uv4.js"],"default"]
16:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"ViewportBoundary"]
18:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"MetadataBoundary"]
19:"$Sreact.suspense"
6:["$","$Le",null,{"sections":[{"label":"Start","items":[{"slug":"quickstart","href":"/docs/quickstart","label":"Quickstart","summary":"Install, set up, and route your first ask across two repos."},{"slug":"concepts","href":"/docs/concepts","label":"Concepts","summary":"Peers, circles, ask/notify/broadcast, control surfaces."}]},{"label":"Reference","items":[{"slug":"reference/tools","href":"/docs/reference/tools","label":"MCP tools","summary":"ask, ack, notify_peer, broadcast, list_peers, spawn_peer, kill_peer."},{"slug":"reference/client","href":"/docs/reference/client","label":"Python client","summary":"AsyncRepowireClient: typed async surface over the daemon API."},{"slug":"reference/cli","href":"/docs/reference/cli","label":"CLI","summary":"repowire setup, serve, build-ui, telegram start, slack start."}]}]}]
7:["$","main",null,{"className":"min-w-0 flex-1","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]
8:["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}]
9:["$","$1","c",{"children":[["$","article",null,{"className":"max-w-3xl","children":[["$","p",null,{"className":"font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-primary","children":"Concepts"}],["$","h1",null,{"className":"mt-3 font-headline text-3xl font-bold text-on-surface sm:text-4xl","children":"How the mesh thinks"}],["$","p",null,{"className":"mt-4 text-base leading-7 text-on-surface-variant","children":"Repowire is a routing hub for live agent sessions. The daemon holds peer state; everything else is a transport. Reading this once makes the tool reference and troubleshooting pages obvious."}],["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Peers"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":["A peer is one running agent session. Claude Code, Codex, Gemini CLI, and OpenCode all register as peers through the same hooks pattern. Peers have a ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"name"}],", a ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"project"}],", a ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"circle"}],", a ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"status"}]," (online / busy / offline), and a free-form ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"description"}]," the agent sets via ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"set_description"}],"."]}],["$","p",null,{"children":["Peer state lives in the local daemon at ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"127.0.0.1:8377"}],". It is not synced anywhere by default. Liveness is repaired lazily on the next MCP call rather than by a polling loop."]}]]}]]}],["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Circles"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":"A circle is a logical subnet. Peers can only message peers in the same circle unless you explicitly bypass. Circles map to tmux sessions by default, so opening agents in the same tmux session puts them in the same circle."}],["$","p",null,{"children":"Use circles to keep work-domain peers from talking to home-project peers when you don’t want them to. They are scoping, not authorization."}]]}]]}],["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Message types"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":"The daemon routes four message types. Pick by lifecycle, not by content."}],["$","dl",null,{"className":"mt-4 grid gap-px overflow-hidden border border-border-faint bg-border-faint","children":[["$","div",null,{"className":"grid gap-2 bg-surface-container-low p-4 sm:grid-cols-[140px_1fr] sm:gap-6","children":[["$","dt",null,{"className":"font-mono text-xs font-semibold text-primary-fixed","children":"ask"}],["$","dd",null,{"className":"text-sm leading-6 text-on-surface-variant","children":"Non-blocking. Returns a correlation_id immediately. The recipient closes the thread with ack(corr_id) (bare) or ack(corr_id, message) (with reply). Chain follow-ups with ask(reply_to=corr_id, ...)."}]]}],["$","div",null,{"className":"grid gap-2 bg-surface-container-low p-4 sm:grid-cols-[140px_1fr] sm:gap-6","children":[["$","dt",null,{"className":"font-mono text-xs font-semibold text-primary-fixed","children":"ack"}],["$","dd",null,{"className":"text-sm leading-6 text-on-surface-variant","children":"Close an open ask thread. Bare close signals 'seen, no action needed'. A reply ack delivers the message back as a notification framed [ack #cid from @peer]."}]]}],"$Lf","$L10"]}]]}]]}],"$L11","$L12","$L13"]}],null,"$L14"]}]
15:[]
a:"$W15"
b:["$","$1","h",{"children":[null,["$","$L16",null,{"children":"$L17"}],["$","div",null,{"hidden":true,"children":["$","$L18",null,{"children":["$","$19",null,{"name":"Next.Metadata","children":"$L1a"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}]
d:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0job0bwh~0y5i.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
1b:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"OutletBoundary"]
f:["$","div",null,{"className":"grid gap-2 bg-surface-container-low p-4 sm:grid-cols-[140px_1fr] sm:gap-6","children":[["$","dt",null,{"className":"font-mono text-xs font-semibold text-primary-fixed","children":"notify_peer"}],["$","dd",null,{"className":"text-sm leading-6 text-on-surface-variant","children":"Fire-and-forget. No lifecycle, no response expected. Use for status updates and announcements."}]]}]
10:["$","div",null,{"className":"grid gap-2 bg-surface-container-low p-4 sm:grid-cols-[140px_1fr] sm:gap-6","children":[["$","dt",null,{"className":"font-mono text-xs font-semibold text-primary-fixed","children":"broadcast"}],["$","dd",null,{"className":"text-sm leading-6 text-on-surface-variant","children":"Fan-out to all peers in your circle. Use sparingly."}]]}]
11:["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Lazy repair"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":"Repowire avoids polling. Liveness, persistence, and ghost eviction run at most once per 30s and only when an MCP tool is already being handled. Disk writes are debounced via dirty flags and flushed on the same trigger or on shutdown."}],["$","p",null,{"children":"The practical consequence: a fully idle mesh consumes near-zero CPU. Peers do not heartbeat. State catches up the moment something happens."}]]}]]}]
12:["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"The orchestrator pattern"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":"An orchestrator is a peer whose job is coordinating other peers. Nothing in the daemon enforces this. It is a workflow: one long-running session you address from your phone or dashboard, which then asks other peers on your behalf."}],["$","p",null,{"children":"Worth setting up when you have more than a few peers and find yourself routing decisions manually. Skip it for two-peer setups."}]]}]]}]
13:["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Control surfaces"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":["The dashboard, Telegram bot, and Slack bot are peers too. They show up in ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"list_peers"}]," alongside agents and can ask, notify, and broadcast."]}],["$","ul",null,{"className":"mt-4 space-y-2 text-sm leading-6 text-on-surface-variant","children":[["$","li",null,{"children":[["$","code",null,{"className":"font-mono text-primary-fixed","children":"dashboard"}]," — Next.js UI at ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"localhost:8377/dashboard"}]," with a live mesh log and per-peer chat."]}],["$","li",null,{"children":[["$","code",null,{"className":"font-mono text-primary-fixed","children":"telegram"}]," — bot you talk to from your phone. Sticky routing: ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"/select peer"}]," sends subsequent messages to that peer."]}],["$","li",null,{"children":[["$","code",null,{"className":"font-mono text-primary-fixed","children":"slack"}]," — Socket Mode bot. Same sticky-routing pattern with Block Kit peer pickers."]}]]}],["$","p",null,{"className":"mt-4","children":["Messages from ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"@telegram"}]," and ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"@dashboard"}]," are humans. Agents treat them as direct user instructions."]}]]}]]}]
14:["$","$L1b",null,{"children":["$","$19",null,{"name":"Next.MetadataOutlet","children":"$@1c"}]}]
17:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, interactive-widget=resizes-content"}]]
1d:I[27201,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"IconMark"]
1a:[["$","title","0",{"children":"Concepts · Repowire Docs"}],["$","meta","1",{"name":"description","content":"Repowire documentation: install, concepts, tools, comparisons."}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.0x3dzn~oxb6tn.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L1d","3",{}]]
1c:null
