[{"data":1,"prerenderedAt":442},["ShallowReactive",2],{"docs-\u002Fdocs\u002Froadmap":3,"docs-nav":343},{"id":4,"title":5,"body":6,"description":334,"extension":335,"meta":336,"navigation":337,"order":338,"path":339,"seo":340,"stem":341,"__hash__":342},"docs\u002Fdocs\u002F12.roadmap.md","Roadmap and status",{"type":7,"value":8,"toc":326},"minimark",[9,13,18,203,210,214,237,241,293,297,319],[10,11,12],"p",{},"jawb is scaffolded from a product\u002Ftechnical\u002Fbusiness blueprint whose full\narchitecture spans a multi-year roadmap. This page tracks what's\nimplemented today versus planned. Nothing under \"Planned\" is available\nyet.",[14,15,17],"h2",{"id":16},"implemented-today","Implemented today",[19,20,21,48,61,87,135,150,165,173,186],"ul",{},[22,23,24,28,29,33,34,37,38,41,42,47],"li",{},[25,26,27],"strong",{},"Install",": one-command installers for macOS, Linux and Windows that\nput ",[30,31,32],"code",{},"jawb"," and its pinned ",[30,35,36],{},"jawbd"," on your machine, checked against\npublished SHA-256 sums and, with ",[30,39,40],{},"minisign"," installed, signatures\n(",[43,44,46],"a",{"href":45},"\u002Fdocs\u002Fgetting-started\u002Finstallation","Installation","). The CLI starts\nthe daemon when it isn't running.",[22,49,50,53,54,56,57,60],{},[25,51,52],{},"Daemon and sessions",": ",[30,55,36],{}," with token-authenticated, loopback-only\nHTTP; encrypted-at-rest profiles (",[30,58,59],{},"default"," included); tabs and\nsessions that persist independently of the CLI process; incognito\nsessions; parallel tabs.",[22,62,63,53,66,69,70,73,74,77,78,82,83,86],{},[25,64,65],{},"Read",[30,67,68],{},"observe"," (element list with stable, retargeting-aware IDs\nand revision diffs), ",[30,71,72],{},"read"," (Markdown\u002Ftext\u002FJSON page or element\ncontent), ",[30,75,76],{},"tools"," (",[43,79,81],{"href":80},"\u002Fdocs\u002Fwebmcp","WebMCP"," discovery: names and\ndescriptions, no invocation), ",[30,84,85],{},"wait",".",[22,88,89,92,93,96,97,96,100,96,103,106,107,110,111,96,114,96,117,96,120,96,123,96,126,106,129,96,132,86],{},[25,90,91],{},"Act"," (via the compatibility bridge — a real, locally installed\nChrome\u002FChromium driven headlessly): ",[30,94,95],{},"click",", ",[30,98,99],{},"fill",[30,101,102],{},"type",[30,104,105],{},"select",",\n",[30,108,109],{},"check","\u002F",[30,112,113],{},"uncheck",[30,115,116],{},"press",[30,118,119],{},"hover",[30,121,122],{},"scroll",[30,124,125],{},"upload",[30,127,128],{},"download",[30,130,131],{},"submit",[30,133,134],{},"media",[22,136,137,140,141,96,144,96,147,86],{},[25,138,139],{},"See"," (same bridge): ",[30,142,143],{},"viewport",[30,145,146],{},"emulate",[30,148,149],{},"screenshot",[22,151,152,155,156,159,160,164],{},[25,153,154],{},"Policy and confirmation",": upload\u002Fdownload\u002Fsubmit\u002Fcredential\nconfirmation flows, and a stricter human-confirmation flow for\nclassified purchase-like actions that ",[30,157,158],{},"--yes"," never satisfies. It is a\nsafeguard for honest checkout flows, not a guarantee against a hostile\npage (",[43,161,163],{"href":162},"\u002Fdocs\u002Fsecurity","Security and trust",").",[22,166,167,170,171,164],{},[25,168,169],{},"Security hardening",": owner-only data directory, isolated-world\nbridge helpers, certificate errors fail navigation, and link-local and\ncloud-metadata addresses are always refused\n(",[43,172,163],{"href":162},[22,174,175,53,178,181,182,185],{},[25,176,177],{},"JavaScript-rendered pages",[30,179,180],{},"observe --js"," \u002F ",[30,183,184],{},"read --js"," promote a\ntab to the bridge; a promoted tab stays there for its lifetime.",[22,187,188,189,193,194,197,198,202],{},"A ",[43,190,192],{"href":191},"\u002Fdocs\u002Fsdk\u002Frust-sdk","Rust client SDK"," for the daemon's ",[30,195,196],{},"\u002Fv1"," HTTP\nAPI, and a ",[43,199,201],{"href":200},"\u002Fdocs\u002Fsdk\u002Fwebsite-sdk","website SDK"," helper that declares\nWebMCP tools.",[10,204,205,206,86],{},"Full detail: the ",[43,207,209],{"href":208},"\u002Fdocs\u002Fcli","CLI reference",[14,211,213],{"id":212},"in-development","In development",[19,215,216],{},[22,217,218,221,222,225,226,229,230,233,234,236],{},[25,219,220],{},"Desktop application."," A desktop app that is a client of the same\nlocal daemon, not a second browser engine. It shows the daemon's\nstatus, the trace of every step, and a sidebar of the agent's open\ntabs with the steps run on each, and a tab's page as Markdown. An\naddress bar opens or navigates a tab through the daemon, under the\nsame policy as ",[30,223,224],{},"jawb open",". An Approvals screen lists purchase-like\nactions the daemon is holding and lets you approve one (after typing\n",[30,227,228],{},"purchase",") or deny it. It uses the same credential file as\n",[30,231,232],{},"jawb confirm",", so it is a convenience, not a stronger check: a\nprogram running as you can still approve until an OS-mediated\napproval exists (",[43,235,163],{"href":162},"). It is not\nreleased yet; there is no installer to download.",[14,238,240],{"id":239},"planned-next","Planned next",[19,242,243,249,255,269,275,287],{},[22,244,245,248],{},[25,246,247],{},"Routing."," One router that picks the cheapest route that works for\neach action: a tool the site declares, the page's semantic structure,\nor the Chrome bridge. It must add no performance cost: the route is\ndecided from what the daemon already holds, with no extra page read or\nbrowser call, and the timing benchmark checks for any slowdown. A tab\ncan come back from the bridge once it no longer needs it.",[22,250,251,254],{},[25,252,253],{},"Budgeted, perception-faithful observation."," Ask for a size budget\nand get the most relevant elements first, with repeated structures\n(lists, tables, navigation) collapsed into groups the agent can expand,\nand a note of what was left out. The observation holds only what a\nperson would see; hidden text is flagged and page content is labelled\nas untrusted.",[22,256,257,260,261,263,264,268],{},[25,258,259],{},"Tools first."," Invoking the ",[43,262,81],{"href":80}," tools a site\ndeclares, behind the same policy checks as a click. The\n",[43,265,267],{"href":266},"\u002Fdocs\u002Fmcp","MCP server"," that lets agents call jawb directly over the\nsame API is built and ships in the next release.",[22,270,271,274],{},[25,272,273],{},"Workflow recording and replay."," Every run recorded in a form that\ncan be replayed, then deterministic replay of a recorded workflow\nwithout new model calls.",[22,276,277,280,281,284,285,164],{},[25,278,279],{},"Guardrails."," Content-integrity checks for hidden text and hidden\ninstructions, a local-network rule (explicit ",[30,282,283],{},"localhost"," stays allowed;\na public page reaching into your network is blocked), encrypted\nper-session downloads, an OS-mediated purchase approval, and one\npolicy gate that every route goes through\n(",[43,286,163],{"href":162},[22,288,289,292],{},[25,290,291],{},"A timing benchmark."," Time to first actionable observation,\nconventional Chromium automation vs. jawb, published as median and p95\nonce the harness runs reproducibly.",[14,294,296],{"id":295},"later","Later",[19,298,299,310,313,316],{},[22,300,301,305,306],{},[43,302,304],{"href":303},"\u002Fdocs\u002Fextensions","Extensions"," and the WebAssembly plugin host behind\nthem; see the ",[43,307,309],{"href":308},"\u002Fextensions","planned first extensions",[22,311,312],{},"Licensing and team features: jawb is free for personal developers, and\nbusiness and team use will need a paid licence. Everyone will sign in\nwith a jawb account; sign-in never sends browsing content, and a\nsigned-out or offline install keeps browsing during a grace period.",[22,314,315],{},"TypeScript and Python SDKs (placeholders only)",[22,317,318],{},"Native (non-bridge) execution of Act and See commands — they run on\nthe Chromium bridge today; moving them to jawb's own engine crates is\nfuture work",[10,320,321,322,325],{},"See ",[30,323,324],{},"jawb-core","'s own README for the crate-by-crate implementation status.",{"title":327,"searchDepth":328,"depth":328,"links":329},"",2,[330,331,332,333],{"id":16,"depth":328,"text":17},{"id":212,"depth":328,"text":213},{"id":239,"depth":328,"text":240},{"id":295,"depth":328,"text":296},"What's implemented today versus planned.","md",{},true,null,"\u002Fdocs\u002Froadmap",{"title":5,"description":334},"docs\u002F12.roadmap","bo8dVKkY9xu-yyhoouGHNpsPOUu7WkZtUqu1LLX44Vs",[344],{"title":345,"path":346,"stem":347,"children":348},"Documentation","\u002Fdocs","docs\u002F1.index",[349,350,354,356,357,377,416,428,432,434,438,440],{"title":345,"path":346,"stem":347},{"title":351,"path":352,"stem":353},"Protocol adapters","\u002Fdocs\u002Fprotocol","docs\u002F10.protocol",{"title":304,"path":303,"stem":355},"docs\u002F11.extensions",{"title":5,"path":339,"stem":341},{"title":358,"path":359,"stem":360,"children":361},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F2.getting-started\u002F1.index",[362,363,365,369,373],{"title":358,"path":359,"stem":360},{"title":46,"path":45,"stem":364},"docs\u002F2.getting-started\u002F2.installation",{"title":366,"path":367,"stem":368},"Desktop app","\u002Fdocs\u002Fgetting-started\u002Fdesktop-app","docs\u002F2.getting-started\u002F3.desktop-app",{"title":370,"path":371,"stem":372},"Running the daemon","\u002Fdocs\u002Fgetting-started\u002Frunning-the-daemon","docs\u002F2.getting-started\u002F4.running-the-daemon",{"title":374,"path":375,"stem":376},"Using the CLI","\u002Fdocs\u002Fgetting-started\u002Fusing-the-cli","docs\u002F2.getting-started\u002F5.using-the-cli",{"title":209,"path":208,"stem":378,"children":379},"docs\u002F3.cli\u002F1.index",[380,381,385,389,393,397,401,405,409,412],{"title":209,"path":208,"stem":378},{"title":382,"path":383,"stem":384},"JSON envelope and exit codes","\u002Fdocs\u002Fcli\u002Fjson-and-exit-codes","docs\u002F3.cli\u002F10.json-and-exit-codes",{"title":386,"path":387,"stem":388},"jawb status","\u002Fdocs\u002Fcli\u002Fstatus","docs\u002F3.cli\u002F2.status",{"title":390,"path":391,"stem":392},"Tabs, profiles and sessions","\u002Fdocs\u002Fcli\u002Ftabs-and-profiles","docs\u002F3.cli\u002F3.tabs-and-profiles",{"title":394,"path":395,"stem":396},"jawb observe [\u003Curl>] [--full] [--interactive-only] [--js]","\u002Fdocs\u002Fcli\u002Fobserve","docs\u002F3.cli\u002F4.observe",{"title":398,"path":399,"stem":400},"jawb read [--format md|text|json] [--element \u003Cid>] [--full] [--js]","\u002Fdocs\u002Fcli\u002Fread","docs\u002F3.cli\u002F5.read",{"title":402,"path":403,"stem":404},"Act commands","\u002Fdocs\u002Fcli\u002Fact","docs\u002F3.cli\u002F6.act",{"title":406,"path":407,"stem":408},"See commands","\u002Fdocs\u002Fcli\u002Fsee","docs\u002F3.cli\u002F7.see",{"title":154,"path":410,"stem":411},"\u002Fdocs\u002Fcli\u002Fpolicy","docs\u002F3.cli\u002F8.policy",{"title":413,"path":414,"stem":415},"Install lifecycle and profile settings","\u002Fdocs\u002Fcli\u002Flifecycle","docs\u002F3.cli\u002F9.lifecycle",{"title":417,"path":418,"stem":419,"children":420},"SDK reference","\u002Fdocs\u002Fsdk","docs\u002F4.sdk\u002F1.index",[421,422,425],{"title":417,"path":418,"stem":419},{"title":423,"path":191,"stem":424},"Rust SDK — jawb-sdk-rust","docs\u002F4.sdk\u002F2.rust-sdk",{"title":426,"path":200,"stem":427},"Website SDK — @4hum-ai\u002Fjawb-sdk","docs\u002F4.sdk\u002F3.website-sdk",{"title":429,"path":430,"stem":431},"Configuration","\u002Fdocs\u002Fconfig","docs\u002F5.config",{"title":81,"path":80,"stem":433},"docs\u002F6.webmcp",{"title":435,"path":436,"stem":437},"Agents","\u002Fdocs\u002Fagents","docs\u002F7.agents",{"title":267,"path":266,"stem":439},"docs\u002F8.mcp",{"title":163,"path":162,"stem":441},"docs\u002F9.security",1792595702272]