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"]
d:I[68027,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"default",1]
:HL["/_next/static/chunks/13krdc8w89vja.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","reference","client"],"q":"","i":false,"f":[[["",{"children":["docs",{"children":["reference",{"children":["client",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/13krdc8w89vja.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",{"children":["$La",{},null,false,null]},null,false,"$@b"]},null,false,"$@b"]},null,false,null]},null,false,null],"$Lc",false]],"m":"$undefined","G":["$d",["$Le"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"sWYEWpi2AN0uvqVN1zZ-e"}
f:I[44368,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js","/_next/static/chunks/0rjdy2rge2uv4.js"],"default"]
19:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"ViewportBoundary"]
1b:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"MetadataBoundary"]
1c:"$Sreact.suspense"
6:["$","$Lf",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":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}]
a:["$","$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":"Reference"}],["$","h1",null,{"className":"mt-3 font-headline text-3xl font-bold text-on-surface sm:text-4xl","children":"Typed Python client"}],["$","p",null,{"className":"mt-4 text-base leading-7 text-on-surface-variant","children":[["$","code",null,{"className":"font-mono text-primary-fixed","children":"repowire.client.AsyncRepowireClient"}],"is the supported way to talk to the daemon from Python code that is not an agent. It wraps the daemon’s HTTP API in a typed async surface using pydantic models for every response. Apps and scripts should depend on this rather than reach into daemon internals."]}],["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Construction"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":["Pass a base URL and optional auth token. The default targets a local daemon at ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"127.0.0.1:8377"}],". The client is async-context-managed; ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"aclose()"}]," is wired into ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"__aexit__"}],"."]}],["$","pre",null,{"className":"overflow-x-auto border border-border-faint bg-surface-container-low p-4 font-mono text-xs leading-6 text-on-surface","children":["$","code",null,{"children":"from repowire.client import AsyncRepowireClient\n\nasync with AsyncRepowireClient() as client:\n    health = await client.health()\n    print(health.version)\n\n# with auth and a custom base\nasync with AsyncRepowireClient(\n    \"https://repowire.io\",\n    auth_token=\"rw_...\",\n    timeout=10.0,\n) as client:\n    peers = await client.list_peers(status=\"online\")"}]}],["$","p",null,{"children":["You can also inject your own ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"httpx.AsyncClient"}]," via the ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"client="}]," kwarg, in which case ownership stays with you and ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"aclose()"}]," becomes a no-op."]}]]}]]}],["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Identity"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":["Every routing call takes a ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"from_peer"}]," kwarg. Unlike MCP tools, the client does not auto-detect identity from the tmux pane. Pass the registered name explicitly. Register first if the caller is not already a peer:"]}],["$","pre",null,{"className":"overflow-x-auto border border-border-faint bg-surface-container-low p-4 font-mono text-xs leading-6 text-on-surface","children":["$","code",null,{"children":"reg = await client.register_peer(\n    name=\"my-script\",\n    path=\"/home/me/scripts\",\n    backend=\"python\",\n)\nprint(reg.peer_id, reg.display_name)"}]}]]}]]}],["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Ask, ack, notify, broadcast"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":["The four routing primitives mirror the MCP tool surface. Asks are non-blocking and return a ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"correlation_id"}],"; the recipient closes them with ","$L10",". Reply content rides on the same ack call."]}],"$L11"]}]]}],"$L12","$L13","$L14","$L15","$L16"]}],null,"$L17"]}]
18:[]
b:"$W18"
c:["$","$1","h",{"children":[null,["$","$L19",null,{"children":"$L1a"}],["$","div",null,{"hidden":true,"children":["$","$L1b",null,{"children":["$","$1c",null,{"name":"Next.Metadata","children":"$L1d"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}]
e:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/13krdc8w89vja.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
1e:I[97367,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"OutletBoundary"]
10:["$","code",null,{"className":"font-mono text-primary-fixed","children":"ack"}]
11:["$","pre",null,{"className":"overflow-x-auto border border-border-faint bg-surface-container-low p-4 font-mono text-xs leading-6 text-on-surface","children":["$","code",null,{"children":"result = await client.ask(\n    to_peer=\"project-b\",\n    text=\"Which port is the daemon on?\",\n    from_peer=\"my-script\",\n)\ncid = result.correlation_id\n\n# elsewhere, on the recipient side or from an orchestrator:\nawait client.ack(cid, from_peer=\"project-b\", message=\"8377\")\n\nawait client.notify(\n    to_peer=\"telegram\",\n    text=\"long task done\",\n    from_peer=\"my-script\",\n)\n\nbc = await client.broadcast(\n    \"rebasing main\",\n    from_peer=\"my-script\",\n)\nprint(bc)"}]}]
12:["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Listing and inspection"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":["Pull current mesh state. ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"list_peers"}]," accepts daemon-supported filters; ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"get_peer"}]," resolves a single peer by name or id. ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"pending_asks"}]," returns open asks targeting one pane or peer."]}],["$","pre",null,{"className":"overflow-x-auto border border-border-faint bg-surface-container-low p-4 font-mono text-xs leading-6 text-on-surface","children":["$","code",null,{"children":"for peer in await client.list_peers(status=\"online\"):\n    print(peer.name, peer.circle, peer.description)\n\npeer = await client.get_peer(\"project-b\")\n\nasks = await client.pending_asks(peer_id=peer.peer_id)"}]}]]}]]}]
13:["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Spawning and lifecycle"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":[["$","code",null,{"className":"font-mono text-primary-fixed","children":"spawn"}]," launches a new agent session subject to ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"daemon.spawn.allowed_commands"}],". ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"spawn_config"}]," reports what the daemon will accept without attempting a spawn. ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"kill_peer"}]," terminates a peer cleanly."]}],["$","pre",null,{"className":"overflow-x-auto border border-border-faint bg-surface-container-low p-4 font-mono text-xs leading-6 text-on-surface","children":["$","code",null,{"children":"info = await client.spawn_config()\nif \"claude\" in info.allowed_commands:\n    spawn = await client.spawn(\n        path=\"/home/me/projects/project-c\",\n        command=\"claude\",\n        circle=\"docs\",\n        message=\"help me draft a reference page\",\n    )\n    print(spawn.display_name, spawn.tmux_session)"}]}]]}]]}]
14:["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Errors"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":[["$","p",null,{"children":["All methods raise one of three typed errors from ",["$","code",null,{"className":"font-mono text-primary-fixed","children":"repowire.protocol.errors"}],":"]}],["$","ul",null,{"className":"mt-2 space-y-2","children":[["$","li",null,{"children":[["$","code",null,{"className":"font-mono text-primary-fixed","children":"DaemonConnectionError"}],": the daemon is not reachable (most often, not running)."]}],["$","li",null,{"children":[["$","code",null,{"className":"font-mono text-primary-fixed","children":"DaemonTimeoutError"}],": the daemon accepted the connection but did not respond in time."]}],["$","li",null,{"children":[["$","code",null,{"className":"font-mono text-primary-fixed","children":"DaemonHTTPError(status, body)"}],": the daemon returned a non-2xx response."]}]]}]]}]]}]
15:["$","section",null,{"className":"mt-10","children":[["$","h2",null,{"className":"font-headline text-xl font-semibold text-on-surface","children":"Stability"}],["$","div",null,{"className":"mt-4 space-y-4 text-sm leading-6 text-on-surface-variant","children":["$","p",null,{"children":"The client is the public Python surface; depend on it rather than the daemon HTTP routes, which may shift between releases. Repowire is pre-1.0, so method signatures and pydantic models may still adjust across minor versions. Additions are preferred over breaks, but explicit breaks will happen when the design wants them."}]}]]}]
16:["$","div",null,{"className":"mt-12 border-t border-border-faint pt-8","children":[["$","div",null,{"className":"mb-3 font-mono text-[10px] font-semibold uppercase tracking-[0.2em] text-outline","children":"See also"}],["$","p",null,{"className":"text-sm leading-6 text-on-surface-variant","children":["Agents call the same primitives through ",["$","a",null,{"className":"text-primary-fixed underline-offset-4 hover:underline","href":"/docs/reference/tools","children":"MCP tools"}],". The semantics are identical; only the identity resolution differs."]}]]}]
17:["$","$L1e",null,{"children":["$","$1c",null,{"name":"Next.MetadataOutlet","children":"$@1f"}]}]
1a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, interactive-widget=resizes-content"}]]
20:I[27201,["/_next/static/chunks/01xlw8hd842-c.js","/_next/static/chunks/0t2xr05rlu96l.js"],"IconMark"]
1d:[["$","title","0",{"children":"Python client · 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"}],["$","$L20","3",{}]]
1f:null
