1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>AI Browser Agent Blog | dassi</title><meta name="description" content="Tips on browser automation, AI agents, and productivity. Product updates and guides from the dassi team."><link rel="canonical" href="https://www.dassi.ai/blog/"><!-- Favicon --><link rel="icon" type="image/x-icon" href="/favicon.ico"><link rel="icon" type="image/png" sizes="128x128" href="/icon128.png"><link rel="apple-touch-icon" sizes="128x128" href="/icon128.png"><!-- RSS Feed --><link rel="alternate" type="application/rss+xml" title="dassi - AI browser agent" href="/rss.xml"><!-- Open Graph --><meta property="og:type" content="website"><meta property="og:url" content="https://www.dassi.ai/blog/"><meta property="og:title" content="AI Browser Agent Blog | dassi"><meta property="og:description" content="Tips on browser automation, AI agents, and productivity. Product updates and guides from the dassi team."><meta property="og:image" content="https://www.dassi.ai/og-image.png"><meta property="og:site_name" content="dassi"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="AI Browser Agent Blog | dassi"><meta name="twitter:description" content="Tips on browser automation, AI agents, and productivity. Product updates and guides from the dassi team."><meta name="twitter:image" content="https://www.dassi.ai/og-image.png"><!-- Structured Data -->
1<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://www.dassi.ai/#website","url":"https://www.dassi.ai/","name":"dassi","description":"AI browser agent that works where you work","publisher":{"@id":"https://www.dassi.ai/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.google.com/search?q=site:dassi.ai+{search_term_string}"},"query-input":"required name=search_term_string"}},{"@type":"Organization","@id":"https://www.dassi.ai/#organization","name":"Omnify Labs","url":"https://omnifylabs.com","logo":{"@type":"ImageObject","url":"https://www.dassi.ai/icon128.png"},"sameAs":["https://discord.gg/G6K58Q7xmj","https://chromewebstore.google.com/detail/dassi-ai-browser-agent/bjcngahpcjeililljmfegmlanlpgibdi"]},{"@type":"SoftwareApplication","@id":"https://www.dassi.ai/#software","name":"dassi","applicationCategory":"BrowserApplication","operatingSystem":"Chrome","description":"AI browser agent that automates browser tasks. Connect Claude, GPT, Gemini and 5+ LLM providers.","offers":{"@type":"AggregateOffer","lowPrice":"0","highPrice":"300.00","priceCurrency":"USD","offerCount":5,"offers":[{"@type":"Offer","price":"0","priceCurrency":"USD","description":"Free credits to try dassi, good for 7 days. No card required."},{"@type":"Offer","price":"10.00","priceCurrency":"USD","description":"Developer plan"},{"@type":"Offer","price":"25.00","priceCurrency":"USD","description":"Starter plan"},{"@type":"Offer","price":"100.00","priceCurrency":"USD","description":"Pro plan"},{"@type":"Offer","price":"300.00","priceCurrency":"USD","description":"Max plan"}]},"publisher":{"@id":"https://www.dassi.ai/#organization"},"installUrl":"https://chromewebstore.google.com/detail/dassi-ai-browser-agent/bjcngahpcjeililljmfegmlanlpgibdi"}]}</script>
1<!-- Google Analytics -->
vendor: 63 bytes, line 1
1<script async src="https://www.googletagmanager.com/gtag/js?id=
1G-RGTYH1GFZ4
vendor: 11 bytes, line 1
1"></script>
1<script> 2
vendor: 136 bytes, lines 2-5
2window.dataLayer = window.dataLayer || []; 3 function gtag(){dataLayer.push(arguments);} 4 gtag('js', new Date()); 5 gtag('config', '
5G-RGTYH1GFZ4
vendor: 6 bytes, lines 5-6
5'); 6
6</script>
6<!-- Reddit Pixel. Loaded async; rdt() queues calls made before the 7 remote script arrives, so the conversion events fired from the 8 delegated listeners below and from src/utils/analytics.ts are safe 9 to call at any time. define:vars keeps the script inline and 10 un-bundled while still reading the id from the frontmatter. -->
10<script>(function(){const REDDIT_PIXEL_ID = "a2_jien20aesmtt"; 11 12 !function(w,d){if(!w.rdt){var p=w.rdt=function(){p.sendEvent?p.sendEvent.apply(p,arguments):p.callQueue.push(arguments)};p.callQueue=[];var t=d.createElement("script");t.src="https://www.redditstatic.com/ads/pixel.js",t.async=!0;var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s)}}(window,document); 13 rdt('init', REDDIT_PIXEL_ID); 14 rdt('track', 'PageVisit'); 15 })();</script>
15<!-- Meta Pixel, same contract as the Reddit block above: fbq() queues 16 calls until fbevents.js lands, so every caller is safe at any time. 17 It also mints the _fbc/_fbp cookies that utils/attribution.ts 18 snapshots for the server's Conversions API events (_shared/meta-capi 19 in the dassi repo). -->
19<script>(function(){const META_PIXEL_ID = "998097353277290"; 20 21 !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,'script','https://connect.facebook.net/en_US/fbevents.js'); 22 fbq('init', META_PIXEL_ID); 23 fbq('track', 'PageView'); 24 })();</script>
24<!-- Fonts --><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet"><!-- Page-specific head tags. /install uses it for a meta refresh, which 25 only works in the head. --><style>.breadcrumbs[data-astro-cid-ilhxcym7]{font-family:JetBrains Mono,monospace;font-size:12px;margin-bottom:16px}.breadcrumbs[data-astro-cid-ilhxcym7] ol[data-astro-cid-ilhxcym7]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;padding:0;margin:0;gap:4px}.breadcrumbs[data-astro-cid-ilhxcym7] li[data-astro-cid-ilhxcym7]{display:flex;align-items:center;gap:4px}.breadcrumbs[data-astro-cid-ilhxcym7] a[data-astro-cid-ilhxcym7]{color:#666;text-decoration:none;transition:color .2s}.breadcrumbs[data-astro-cid-ilhxcym7] a[data-astro-cid-ilhxcym7]:hover{color:#000}.separator[data-astro-cid-ilhxcym7]{color:#ccc}.current[data-astro-cid-ilhxcym7]{color:#999} 26</style> 27<link rel="stylesheet" href="/_astro/about.BBCDvH-n.css"> 28<style>.sm[data-astro-cid-cczlb56u]{margin:auto;border:1px solid #e5e5e5;border-left:3px solid #f26522;border-radius:0;padding:0;width:min(420px,calc(100vw - 32px));background:#fff}.sm[data-astro-cid-cczlb56u]::backdrop{background:#00000073}.sm-panel[data-astro-cid-cczlb56u]{position:relative;display:flex;flex-direction:column;gap:4px;padding:28px 24px 22px}.sm-close[data-astro-cid-cczlb56u]{position:absolute;top:10px;right:10px;width:30px;height:30px;border:none;background:none;font-size:14px;color:#999;cursor:pointer}.sm-close[data-astro-cid-cczlb56u]:hover{color:#000}.sm-step[data-astro-cid-cczlb56u]{display:flex;flex-direction:column;gap:14px}.sm-step[data-astro-cid-cczlb56u][hidden]{display:none}.sm-title[data-astro-cid-cczlb56u]{font-family:JetBrains Mono,monospace;font-size:19px;font-weight:700;letter-spacing:-.01em;color:#000;margin:0}.sm-text[data-astro-cid-cczlb56u]{font-family:JetBrains Mono,monospace;font-size:13px;line-height:1.6;color:#666;margin:0}.sm-text[data-astro-cid-cczlb56u] strong[data-astro-cid-cczlb56u]{color:#000}.sm-gis[data-astro-cid-cczlb56u]{display:flex;justify-content:center;min-height:44px}.sm-gis[data-astro-cid-cczlb56u][hidden],.sm-google[data-astro-cid-cczlb56u][hidden]{display:none}.sm-google[data-astro-cid-cczlb56u]{display:flex;align-items:center;justify-content:center;gap:10px;padding:13px 20px;border:1px solid #000000;border-radius:4px;background:#fff;font-family:JetBrains Mono,monospace;font-size:14px;font-weight:500;color:#000;cursor:pointer}.sm-google[data-astro-cid-cczlb56u]:hover{background:#fafafa}.sm-divider[data-astro-cid-cczlb56u]{display:flex;align-items:center;gap:10px;font-family:JetBrains Mono,monospace;font-size:11px;color:#999}.sm-divider[data-astro-cid-cczlb56u]:before,.sm-divider[data-astro-cid-cczlb56u]:after{content:"";flex:1;height:1px;background:#e5e5e5}.sm-form[data-astro-cid-cczlb56u]{display:flex;flex-direction:column;gap:10px}.sm-input[data-astro-cid-cczlb56u]{width:100%;padding:12px 16px;border:1px solid #e5e5e5;border-radius:4px;background:#fff;font-family:JetBrains Mono,monospace;font-size:16px;color:#000;box-sizing:border-box}.sm-input[data-astro-cid-cczlb56u]:focus{outline:none;border-color:#000}.sm-code-input[data-astro-cid-cczlb56u]{letter-spacing:.35em;text-align:center;font-weight:700}.sm-btn[data-astro-cid-cczlb56u]{display:flex;align-items:center;justify-content:center;padding:13px 20px;background:#000;color:#fff;font-family:JetBrains Mono,monospace;font-size:14px;font-weight:500;border:none;border-radius:4px;cursor:pointer}.sm-install[data-astro-cid-cczlb56u]{text-decoration:none;text-align:center;box-sizing:border-box}.sm-install[data-astro-cid-cczlb56u][hidden]{display:none}.sm-linkish[data-astro-cid-cczlb56u]{align-self:flex-start;padding:0;border:none;background:none;font-family:JetBrains Mono,monospace;font-size:12px;color:#999;cursor:pointer}.sm-linkish[data-astro-cid-cczlb56u]:hover{color:#000}.sm-done-row[data-astro-cid-cczlb56u]{display:flex;align-items:center;gap:12px}.sm-check[data-astro-cid-cczlb56u]{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #10b981;border-radius:50%}.sm-status[data-astro-cid-cczlb56u]{font-family:JetBrains Mono,monospace;font-size:12px;min-height:16px;margin:8px 0 0}.sm-status[data-astro-cid-cczlb56u].error{color:#d32f2f}*{margin:0;padding:0;box-sizing:border-box}html{font-family:JetBrains Mono,SF Mono,Monaco,Consolas,monospace;background:#fff;color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh}.mono{font-family:JetBrains Mono,IBM Plex Mono,SF Mono,Monaco,Consolas,monospace} 29.blog[data-astro-cid-a7wiyce3]{min-height:calc(100vh - 200px)}.container[data-astro-cid-a7wiyce3]{max-width:1440px;margin:0 auto}.breadcrumb-container[data-astro-cid-a7wiyce3]{padding:24px 240px 0}.hero[data-astro-cid-a7wiyce3]{padding:80px 240px 60px;border-bottom:1px solid #E5E5E5}.hero-title[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:48px;font-weight:700;color:#000;margin-bottom:24px}.hero-subtitle[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:16px;color:#666;line-height:1.6}.posts[data-astro-cid-a7wiyce3]{padding:40px 240px}.post-list[data-astro-cid-a7wiyce3]{list-style:none;padding:0;margin:0}.post-item[data-astro-cid-a7wiyce3]{border-bottom:1px solid #E5E5E5}.post-link[data-astro-cid-a7wiyce3]{display:block;padding:32px 0;text-decoration:none;transition:opacity .2s}.post-link[data-astro-cid-a7wiyce3]:hover{opacity:.7}.post-meta[data-astro-cid-a7wiyce3]{display:flex;align-items:center;gap:16px;margin-bottom:12px}.post-date[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:700;color:#000}.post-reading-time[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:400;color:#999}.post-title[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:20px;font-weight:700;color:#000;margin-bottom:8px}.post-description[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:14px;color:#666;line-height:1.6}.empty[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:16px;color:#666;padding:40px 0}.pagination[data-astro-cid-a7wiyce3]{display:flex;align-items:center;justify-content:center;gap:24px;padding:48px 0 16px;border-top:1px solid #E5E5E5;margin-top:8px}.pagination-link[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:500;color:#000;text-decoration:none;transition:opacity .2s}.pagination-link[data-astro-cid-a7wiyce3]:hover{opacity:.6}.pagination-link[data-astro-cid-a7wiyce3].disabled{color:#ccc;pointer-events:none}.pagination-info[data-astro-cid-a7wiyce3]{font-family:JetBrains Mono,monospace;font-size:13px;color:#999}@media(max-width:768px){.breadcrumb-container[data-astro-cid-a7wiyce3]{padding:16px 24px 0}.hero[data-astro-cid-a7wiyce3]{padding:40px 24px}.hero-title[data-astro-cid-a7wiyce3]{font-size:36px}.posts[data-astro-cid-a7wiyce3]{padding:24px}} 30</style></head> <body>
30<script type="application/ld+json">{"@context":"https://schema.org","@type":"Blog","name":"dassi Blog","description":"Thoughts on AI browser agents, browser automation, and building dassi.","url":"https://www.dassi.ai/blog/","publisher":{"@type":"Organization","name":"Omnify Labs","logo":{"@type":"ImageObject","url":"https://www.dassi.ai/icon128.png"}},"blogPost":[{"@type":"BlogPosting","headline":"Meta's Muse vs an AI Browser Agent: Only One Is Logged In to Your Work","description":"Meta put its Muse agent in a wearable and camera-free glasses. None are signed in to your work. An AI browser agent in your logged-in Chrome already is.","datePublished":"2026-09-24T00:00:00.000Z","url":"https://www.dassi.ai/blog/meta-muse-ai-agent-logged-in-browser/"},{"@type":"BlogPosting","headline":"Ema Raised $77M for AI Employees. Each One Still Needs a Connector to Reach Your Apps.","description":"Ema raised $77M for AI employees, but each one needs connectors and service accounts. Comparing three enterprise tasks against a browser agent in your SSO tab.","datePublished":"2026-09-23T00:00:00.000Z","url":"https://www.dassi.ai/blog/ema-ai-employees-need-your-logged-in-browser/"},{"@type":"BlogPosting","headline":"Ron Johnson Doesn't Buy AI Shopping. The Real Problem Is Your Agent Checks Out as a Stranger.","description":"Ron Johnson says AI shopping won't work. He's half right: AI shopping agents boot a blank cloud browser with no cart, no addresses, no loyalty tier, no history.","datePublished":"2026-09-22T00:00:00.000Z","url":"https://www.dassi.ai/blog/ai-shopping-agents-cant-see-your-cart/"},{"@type":"BlogPosting","headline":"Google's $899 Googlebook Runs Gemini Beside Your Tabs, Not Inside Them","description":"Google's $899 Googlebook is a browser in a shell, and Gemini still can't see the Salesforce tab you're logged into. Why an ai browser agent beats new hardware.","datePublished":"2026-09-21T00:00:00.000Z","url":"https://www.dassi.ai/blog/googlebook-gemini-laptop-logged-in-tabs/"},{"@type":"BlogPosting","headline":"What a Chrome Extension AI Agent Can and Can't See","description":"A concrete map of what a side-panel browser agent reads, what it can't touch, and where your data goes when you bring your own model key.","datePublished":"2026-09-20T00:00:00.000Z","url":"https://www.dassi.ai/blog/what-a-chrome-extension-agent-can-actually-see/"},{"@type":"BlogPosting","headline":"Cloud Browser Agents Boot a Second Chrome in a Datacenter","description":"A new energy-economy model says AI productivity gains raise net COâ. Cloud browser agents prove the point: a second Chrome for work your own tab already did.","datePublished":"2026-09-19T00:00:00.000Z","url":"https://www.dassi.ai/blog/cloud-browser-agents-boot-a-second-chrome/"},{"@type":"BlogPosting","headline":"Atlas Is Gone. The $200-a-Month Price It Normalized Isn't.","description":"OpenAI is winding down Atlas, but the $200 browser-agent tier lives on at Comet, Claude and Genspark. dassi does the job in your own Chrome from $10.","datePublished":"2026-09-18T00:00:00.000Z","url":"https://www.dassi.ai/blog/atlas-is-gone-the-200-dollar-price-isnt/"},{"@type":"BlogPosting","headline":"Can AI Agents Log In to Websites? Yes, but It Matters How","description":"Yes. AI agents log in to websites three ways: you give them your password, you sign in inside their cloud browser, or they use your own logins and password manager.","datePublished":"2026-09-18T00:00:00.000Z","url":"https://www.dassi.ai/blog/can-ai-agents-log-in-to-websites/"},{"@type":"BlogPosting","headline":"dassi Scores 91.5% on Odysseys, the Highest Published Result","description":"dassi fully completed 183 of 200 long-horizon Odysseys web tasks on a Flash-class model, the highest published score. Every task log is public.","datePublished":"2026-09-18T00:00:00.000Z","url":"https://www.dassi.ai/blog/dassi-odysseys-benchmark-highest-score/"},{"@type":"BlogPosting","headline":"PrismML Wants a Small Language Model to Replace Frontier AI. Context Is the Missing Half.","description":"PrismML's tiny LLM bet only works when the model stops guessing. A browser agent reading your logged-in tab needs far fewer parameters than a blind cloud one.","datePublished":"2026-09-18T
3000:00:00.000Z","url":"https://www.dassi.ai/blog/tiny-llm-browser-context/"}]}</script>
30<nav class="nav" data-astro-cid-pux6a34n> <div class="nav-container" data-astro-cid-pux6a34n> <a href="/" class="logo" data-astro-cid-pux6a34n> <img src="/icon128.png" alt="dassi" class="logo-icon" width="32" height="32" data-astro-cid-pux6a34n> 31dassi 32</a> <div class="nav-right" data-astro-cid-pux6a34n> <a href="/enterprise/" class="nav-link" data-astro-cid-pux6a34n>Enterprise</a> <a href="/use-cases/" class="nav-link" data-astro-cid-pux6a34n>Use Cases</a> <a href="/blog/" class="nav-link" data-astro-cid-pux6a34n>Blog</a> <a href="/pricing/" class="nav-link" data-astro-cid-pux6a34n>Pricing</a> <a href="https://docs.dassi.ai" class="nav-link" data-astro-cid-pux6a34n>Docs</a> <div class="nav-actions" data-astro-cid-pux6a34n> <!-- Exactly one labelled button in this row at any time. Signed 33 out this IS that button â a solid "Sign up", with no install 34 CTA beside it. Signed in it collapses to the identity circle 35 (Google picture, else the email's initial, else a person 36 icon) and hands the label over to the button below, which 37 appears only then. The circle stays because sign-out lives in 38 its dropdown and would otherwise be unreachable. --> <button type="button" class="nav-account" data-nav-account data-nav-cta="nav-signup" aria-haspopup="menu" aria-expanded="false" aria-label="Sign up" data-astro-cid-pux6a34n> <span class="nav-account-label" data-astro-cid-pux6a34n>Sign up</span> <svg class="nav-account-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-pux6a34n> <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" data-astro-cid-pux6a34n></path> <circle cx="12" cy="7" r="4" data-astro-cid-pux6a34n></circle> </svg> <span class="nav-account-initial" data-nav-account-initial aria-hidden="true" data-astro-cid-pux6a34n></span> <!-- no-referrer keeps dassi.ai out of the request to Google, 39 and googleusercontent serves the picture without it. --> <img class="nav-account-img" data-nav-account-img alt="" aria-hidden="true" referrerpolicy="no-referrer" width="38" height="38" data-astro-cid-pux6a34n> </button> <span class="nav-divider" aria-hidden="true" data-astro-cid-pux6a34n></span> <!-- Signed-in only â hidden until the status says so, which is why 40 it ships with the hidden attribute rather than appearing and 41 then vanishing. Install by default; once the extension is here 42 it offers to open it instead (see the click handler). It stays 43 an <a> so the install case is a real link â right-click, 44 middle-click and "open in new tab" all keep working â and only 45 the open case intercepts. No data-cta while it's a store link: 46 Layout.astro already reports cws_click for those and both 47 would count one click twice. --> <a href="https://chromewebstore.google.com/detail/dassi-ai-browser-agent/bjcngahpcjeililljmfegmlanlpgibdi?utm_source=dassi_website&utm_medium=website&utm_campaign=organic&utm_content=nav_cta" target="_blank" rel="noopener noreferrer" class="nav-button nav-install" data-nav-install hidden data-astro-cid-pux6a34n> <svg class="nav-install-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-pux6a34n> <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" data-astro-cid-pux6a34n></path> <polyline points="7 10 12 15 17 10" data-astro-cid-pux6a34n></polyline> <line x1="12" y1="15" x2="12" y2="3" data-astro-cid-pux6a34n></line> </svg> <svg class="nav-open-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-pux6a34n> <rect x="3" y="4" width="18" height="16" rx="2" data-astro-cid-pux6a34n></rect> <line x1="15" y1="4" x2="15" y2="20" data-astro-cid-pux6a34n></line> </svg> <span data-nav-install-label data-astro-cid-pux6a34n>Install dassi</span> </a> </div> </div> <div class="nav-mobile" data-astro-cid-pux6a34n>
47 <!-- Same control as the desktop row: the labelled button signed out, 48 the identity circle signed in. Signed in it used to print the 49 whole address, which at 390px pushed the row off-screen; the 50 circle is what fixed that, and the label stays in the DOM for 51 the accessible name. --> <button type="button" class="nav-account" data-nav-account data-nav-cta="nav-signup" aria-haspopup="menu" aria-expanded="false" aria-label="Sign up" data-astro-cid-pux6a34n> <span class="nav-account-label" data-astro-cid-pux6a34n>Sign up</span> <svg class="nav-account-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-pux6a34n> <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" data-astro-cid-pux6a34n></path> <circle cx="12" cy="7" r="4" data-astro-cid-pux6a34n></circle> </svg> <span class="nav-account-initial" data-nav-account-initial aria-hidden="true" data-astro-cid-pux6a34n></span> <img class="nav-account-img" data-nav-account-img alt="" aria-hidden="true" referrerpolicy="no-referrer" width="38" height="38" data-astro-cid-pux6a34n> </button> <!-- No install button on this row at all. Phones can't install a 52 Chrome extension, so the offer belongs where it can actually be 53 acted on: the signup modal's done step, which mails the install 54 link and carries its own "Install dassi". --> <button class="hamburger" aria-label="Menu" aria-expanded="false" data-astro-cid-pux6a34n> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" data-astro-cid-pux6a34n> <line x1="3" y1="6" x2="21" y2="6" data-astro-cid-pux6a34n></line> <line x1="3" y1="12" x2="21" y2="12" data-astro-cid-pux6a34n></line> <line x1="3" y1="18" x2="21" y2="18" data-astro-cid-pux6a34n></line> </svg> </button> </div> </div> <div class="mobile-menu" data-astro-cid-pux6a34n> <a href="/enterprise/" class="mobile-link" data-astro-cid-pux6a34n>Enterprise</a> <a href="/use-cases/" class="mobile-link" data-astro-cid-pux6a34n>Use Cases</a> <a href="/blog/" class="mobile-link" data-astro-cid-pux6a34n>Blog</a> <a href="/pricing/" class="mobile-link" data-astro-cid-pux6a34n>Pricing</a> <a href="https://docs.dassi.ai" class="mobile-link" data-astro-cid-pux6a34n>Docs</a> </div> <!-- Account dropdown â opened by clicking the signed-in nav button. --> <div class="nav-user-menu" data-nav-user-menu role="menu" hidden data-astro-cid-pux6a34n> <div class="nav-user-menu-header" data-astro-cid-pux6a34n> <span class="nav-user-menu-label" data-astro-cid-pux6a34n>Signed in as</span> <span class="nav-user-menu-email" data-astro-cid-pux6a34n> <span class="nav-user-dot" aria-hidden="true" data-astro-cid-pux6a34n></span> <span data-nav-user-menu-email data-astro-cid-pux6a34n></span> </span> </div> <button type="button" class="nav-user-menu-item" data-nav-signout role="menuitem" data-astro-cid-pux6a34n> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-pux6a34n> <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" data-astro-cid-pux6a34n></path> <polyline points="16 17 21 12 16 7" data-astro-cid-pux6a34n></polyline> <line x1="21" y1="12" x2="9" y2="12" data-astro-cid-pux6a34n></line> </svg> <span data-nav-signout-label data-astro-cid-pux6a34n>Sign out</span> </button> </div> </nav>
54<script type="module" src="/_astro/Navigation.astro_astro_type_script_index_0_lang.C5AmLfzn.js"></script>
54 <main class="blog" data-astro-cid-a7wiyce3> <div class="breadcrumb-container" data-astro-cid-a7wiyce3> <div class="container" data-astro-cid-a7wiyce3> <nav class="breadcrumbs" aria-label="Breadcrumb" data-astro-cid-ilhxcym7> <ol data-astro-cid-ilhxcym7> <li data-astro-cid-ilhxcym7> <a href="/" data-astro-cid-ilhxcym7>Home</a> <span class="separator" data-astro-cid-ilhxcym7>/</span> </li><li data-astro-cid-ilhxcym7> <span class="current" aria-current="page" data-astro-cid-ilhxcym7>Blog</span> </li> </ol> </nav>
54<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.dassi.ai/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://www.dassi.ai/blog/"}]}</script>
54 </div> </div> <section class="hero" data-astro-cid-a7wiyce3> <div class="container" data-astro-cid-a7wiyce3> <h1 class="hero-title" data-astro-cid-a7wiyce3>Blog</h1> <p class="hero-subtitle" data-astro-cid-a7wiyce3>Thoughts on AI browser agents, browser automation, and building dassi.</p> </div> </section> <section class="posts" data-astro-cid-a7wiyce3> <div class="container" data-astro-cid-a7wiyce3> <ul class="post-list" data-astro-cid-a7wiyce3> <li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/meta-muse-ai-agent-logged-in-browser/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 24, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Meta's Muse vs an AI Browser Agent: Only One Is Logged In to Your Work</h2> <p class="post-description" data-astro-cid-a7wiyce3>Meta put its Muse agent in a wearable and camera-free glasses. None are signed in to your work. An AI browser agent in your logged-in Chrome already is.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/ema-ai-employees-need-your-logged-in-browser/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 23, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>6 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Ema Raised $77M for AI Employees. Each One Still Needs a Connector to Reach Your Apps.</h2> <p class="post-description" data-astro-cid-a7wiyce3>Ema raised $77M for AI employees, but each one needs connectors and service accounts. Comparing three enterprise tasks against a browser agent in your SSO tab.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/ai-shopping-agents-cant-see-your-cart/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 22, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>4 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Ron Johnson Doesn't Buy AI Shopping. The Real Problem Is Your Agent Checks Out as a Stranger.</h2> <p class="post-description" data-astro-cid-a7wiyce3>Ron Johnson says AI shopping won't work. He's half right: AI shopping agents boot a blank cloud browser with no cart, no addresses, no loyalty tier, no history.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/googlebook-gemini-laptop-logged-in-tabs/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 21, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Google's $899 Googlebook Runs Gemini Beside Your Tabs, Not Inside Them</h2> <p class="post-description" data-astro-cid-a7wiyce3>Google's $899 Googlebook is a browser in a shell, and Gemini still can't see the Salesforce tab you're logged into. Why an ai browser agent beats new hardware.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/what-a-chrome-extension-agent-can-actually-see/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 20, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>What a Chrome Extension AI Agent Can and Can't See</h2> <p class="post-description" data-astro-cid-a7wiyce3>A concrete map of what a side-panel browser agent reads, what it can't touch, and where your data goes when you bring your own model key.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/cloud-browser-agents-boot-a-second-chrome/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 19, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Cloud Browser Agents Boot a Second Chrome in a Datacenter</h2> <p class="post-description" data-astro-cid-a7wiyce3>A new energy-economy model says AI productivity gains raise net COâ. Cloud browser agents prove the point: a second Chrome for work your own tab already did.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/atlas-is-gone-the-200-dollar-price-isnt/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 18, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>4 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Atlas Is Gone. The $200-a-Month Price It Normalized Isn't.</h2> <p class="post-description" data-astro-cid-a7wiyce3>OpenAI is winding down Atlas, but the $200 browser-agent tier lives on at Comet, Claude and Genspark. dassi does the job in your own Chrome from $10.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/can-ai-agents-log-in-to-websites/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 18, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>6 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Can AI Agents Log In to Websites? Yes, but It Matters How</h2> <p class="post-description" data-astro-cid-a7wiyce3>Yes. AI agents log in to websites three ways: you give them your password, you sign in inside their cloud browser, or they use your own logins and password manager.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/dassi-odysseys-benchmark-highest-score/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 18, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>6 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>dassi Scores 91.5% on Odysseys, the Highest Published Result</h2> <p class="post-description" data-astro-cid-a7wiyce3>dassi fully completed 183 of 200 long-horizon Odysseys web tasks on a Flash-class model, the highest published score. Every task log is public.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/tiny-llm-browser-context/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 18, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>PrismML Wants a Small Language Model to Replace Frontier AI. Context Is the Missing Half.</h2> <p class="post-description" data-astro-cid-a7wiyce3>PrismML's tiny LLM bet only works when the model stops guessing. A browser agent reading your logged-in tab needs far fewer parameters than a blind cloud one.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/ai-agent-teammate-onboarding-logins/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 17, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Onboarding an AI Teammate Means Handing It Logins It Can't Use</h2> <p class="post-description" data-astro-cid-a7wiyce3>Disrupt 2026 pitches AI agents as your next hire. Onboarding a human means 15 logins on day one. Onboarding an agent means API keys for the three with APIs.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/where-to-launch-your-ai-startup-2026/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 17, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>3 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Where to Launch Your AI Startup in 2026: Top Directories, Launchpads, and Communities</h2> <p class="post-description" data-astro-cid-a7wiyce3>A comprehensive guide for AI founders on where to launch, build early traction, and earn high-authority backlinks across top directories in 2026.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/meta-whatsapp-agent-fills-metas-forms/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 16, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>4 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Meta Built an AI Agent That Fills Out Meta's Forms</h2> <p class="post-description" data-astro-cid-a7wiyce3>Meta shipped an AI agent for WhatsApp Business onboarding â inside Meta's dashboard. Vendor setup agents stop at the property line. A browser agent doesn't.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/botsitting-is-what-happens-when-your-agent-starts-blind/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 15, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Botsitting Is Real. Most of It Is You Logging In Again for a Robot.</h2> <p class="post-description" data-astro-cid-a7wiyce3>The botsitting critique measures supervision time, but most of that time is re-authenticating and re-explaining context to an agent that opened a blank browser.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/chrome-profiles-break-browser-agents/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 14, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Your Browser Agent Connected to Chrome. Just Not the One You're Logged Into.</h2> <p class="post-description" data-astro-cid-a7wiyce3>Your agent says connected, then hits a login wall. It attached to the wrong Chrome profile. How to read chrome://version and fix the user-data-dir mixup.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/anthropic-slow-ai-your-agent-still-logged-out/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 13, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>4 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Anthropic Wants to Slow AI Down. Your Browser Agent Is Still Logged Out.</h2> <p class="post-description" data-astro-cid-a7wiyce3>Anthropic's CEO wants to slow AI down. But model capability never blocked your browser agent. Session state did, and a fresh cloud Chrome has none of it.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/robot-training-data-vs-your-browser-context/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 12, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Mecka Is Raising $500M to Teach Robots What a Kitchen Is. Your Browser Already Knows You.</h2> <p class="post-description" data-astro-cid-a7wiyce3>Mecka AI is raising ~$500M for robot training data because robots have no real-world context. Your browser already has yours. Most AI agents throw it away.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/openai-pro-signups-paused-byok-browser-agent/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 11, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>4 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>OpenAI Stopped Selling Pro. A BYOK Browser Agent Never Noticed.</h2> <p class="post-description" data-astro-cid-a7wiyce3>OpenAI paused new Pro subscriptions over Astra demand. If your assistant is wired to one vendor tier, their capacity ceiling becomes your outage.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/csv-export-paywall-browser-agent/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 10, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>5 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>They Wanted $100/Month for a CSV Button. The Data Was Already on My Screen.</h2> <p class="post-description" data-astro-cid-a7wiyce3>A SaaS tool wanted $100 a month more to unlock CSV export. So a browser agent read the rendered table in my already-logged-in tab and wrote the file instead.</p> </a> </li><li class="post-item" data-astro-cid-a7wiyce3> <a href="/blog/stolen-claude-tokens-byok-browser-agent/" class="post-link" data-astro-cid-a7wiyce3> <span class="post-meta" data-astro-cid-a7wiyce3> <span class="post-date" data-astro-cid-a7wiyce3>Sep 9, 2026</span> <span class="post-reading-time" data-astro-cid-a7wiyce3>4 min read</span> </span> <h2 class="post-title" data-astro-cid-a7wiyce3>Hackers Are Reselling Stolen Claude Tokens. Rotating Your Key Won't Save You.</h2> <p class="post-description" data-astro-cid-a7wiyce3>Attackers are lifting Claude session tokens off subscribers' machines and reselling the access. The fix isn't rotation, it's counting where your keys live.</p> </a> </li> </ul> <nav class="pagination" aria-label="Blog pagination" data-astro-cid-a7wiyce3> <span class="pagination-link disabled" data-astro-cid-a7wiyce3>← Previous</span> <span class="pagination-info" data-astro-cid-a7wiyce3>Page 1 of 12</span> <a href="/blog/2/" class="pagination-link" data-astro-cid-a7wiyce3>Next →</a> </nav> </div> </section> </main> <footer class="footer" data-astro-cid-sz7xmlte> <div class="container" data-astro-cid-sz7xmlte> <div class="top-row" data-astro-cid-sz7xmlte> <span class="link-item" data-astro-cid-sz7xmlte><a href="/enterprise/" class="link" data-astro-cid-sz7xmlte>Enterprise</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/cli/" class="link" data-astro-cid-sz7xmlte>CLI</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/blog/" class="link" data-astro-cid-sz7xmlte>Blog</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/about/" class="link" data-astro-cid-sz7xmlte>About</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/changelog/" class="link" data-astro-cid-sz7xmlte>Changelog</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/use-cases/" class="link" data-astro-cid-sz7xmlte>Use Cases</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/ai-employee/" class="link" data-astro-cid-sz7xmlte>AI Employee</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/compare/" class="link" data-astro-cid-sz7xmlte>Compare</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/chromebook/" class="link" data-astro-c
54id-sz7xmlte>Chromebook</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/ollama/" class="link" data-astro-cid-sz7xmlte>Ollama</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/zh/" class="link" lang="zh-CN" data-astro-cid-sz7xmlte>䏿</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/ru/ozon/" class="link" lang="ru" data-astro-cid-sz7xmlte>Ozon</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="/zh/ozon/" class="link" lang="zh-CN" data-astro-cid-sz7xmlte>è·¨å¢</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="https://x.com/Dassi_AI" target="_blank" rel="noopener noreferrer" class="link" data-astro-cid-sz7xmlte>X</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="https://discord.gg/G6K58Q7xmj" target="_blank" rel="noopener noreferrer" class="link" data-astro-cid-sz7xmlte>Discord</a><span class="separator" data-astro-cid-sz7xmlte>|</span></span> <span class="link-item" data-astro-cid-sz7xmlte><a href="https://www.linkedin.com/company/omnify-labs/" target="_blank" rel="noopener noreferrer" class="link" data-astro-cid-sz7xmlte>LinkedIn</a></span> </div> <div class="bottom-row" data-astro-cid-sz7xmlte> <p class="copyright" data-astro-cid-sz7xmlte>©2026 <a href="https://omnifylabs.com" target="_blank" rel="noopener noreferrer" class="copyright-link" data-astro-cid-sz7xmlte>Omnify Labs</a></p> <p class="built-by" data-astro-cid-sz7xmlte>Built by Omnify Labs in San Francisco</p> <div class="legal-links" data-astro-cid-sz7xmlte> <a href="/privacy-policy/" class="legal-link" data-astro-cid-sz7xmlte>Privacy Policy</a> <a href="/terms-of-service/" class="legal-link" data-astro-cid-sz7xmlte>Terms of Service</a> </div> </div> </div> </footer> <dialog class="sm" data-signup-modal data-astro-cid-cczlb56u> <div class="sm-panel" data-astro-cid-cczlb56u> <button type="button" class="sm-close" data-sm-close aria-label="Close" data-astro-cid-cczlb56u>â</button> <div class="sm-step" data-sm-step="choice" data-astro-cid-cczlb56u> <h2 class="sm-title" data-sm-choice-title data-astro-cid-cczlb56u>Sign up â get 10% off</h2> <p class="sm-text" data-sm-choice-text data-astro-cid-cczlb56u>Create your dassi account. We'll email your discount code + the desktop install link.</p> <!-- Google Identity Services renders its personalized "Continue as X" 55 button here; the custom button below is the fallback when GIS 56 can't load (blocked script, unauthorized origin). --> <div class="sm-gis" data-sm-gis hidden data-astro-cid-cczlb56u></div> <button type="button" class="sm-google" data-sm-google data-astro-cid-cczlb56u> <!-- Google's official multi-color "G" mark â same asset the 57 extension's sign-in ships (brand guidelines require it). --> <svg width="18" height="18" viewBox="0 0 48 48" aria-hidden="true" data-astro-cid-cczlb56u> <path fill="#EA4335" d="M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z" data-astro-cid-cczlb56u></path> <path fill="#4285F4" d="M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z" data-astro-cid-cczlb56u></path> <path fill="#FBBC05" d="M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z" data-astro-cid-cczlb56u></path> <path fill="#34A853" d="M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z" data-astro-cid-cczlb56u></path> </svg> <span data-astro-cid-cczlb56u>Sign in with Google</span> </button> <div class="sm-divider" data-astro-cid-cczlb56u><span data-astro-cid-cczlb56u>or</span></div> <form class="sm-form" data-sm-email-form data-form-event="signup_email_attempt" data-astro-cid-cczlb56u> <input type="email" class="sm-input" placeholder="[email protected]" required inputmode="email" autocomplete="email" aria-label="Email address" autofocus data-astro-cid-cczlb56u> <button type="submit" class="sm-btn" data-astro-cid-cczlb56u><span data-sm-email-label data-astro-cid-cczlb56u>
57Send code</span></button> </form> </div> <div class="sm-step" data-sm-step="code" hidden data-astro-cid-cczlb56u> <h2 class="sm-title" data-astro-cid-cczlb56u>Check your email</h2> <p class="sm-text" data-astro-cid-cczlb56u>Enter the 6-digit code we sent to <strong data-sm-email-display data-astro-cid-cczlb56u></strong>.</p> <form class="sm-form" data-sm-code-form data-form-event="signup_code_attempt" data-astro-cid-cczlb56u> <input type="text" class="sm-input sm-code-input" placeholder="000000" required inputmode="numeric" pattern="[0-9]{6}" maxlength="6" autocomplete="one-time-code" aria-label="6-digit code" data-astro-cid-cczlb56u> <button type="submit" class="sm-btn" data-astro-cid-cczlb56u><span data-sm-code-label data-astro-cid-cczlb56u>Verify</span></button> </form> <button type="button" class="sm-linkish" data-sm-back data-astro-cid-cczlb56u>â Use a different email</button> </div> <div class="sm-step" data-sm-step="done" hidden data-astro-cid-cczlb56u> <div class="sm-done-row" data-astro-cid-cczlb56u> <span class="sm-check" aria-hidden="true" data-astro-cid-cczlb56u> <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#10b981" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-cczlb56u> <polyline points="20 6 9 17 4 12" data-astro-cid-cczlb56u></polyline> </svg> </span> <h2 class="sm-title" data-sm-done-title data-astro-cid-cczlb56u>You're in!</h2> </div> <p class="sm-text" data-sm-done-text data-astro-cid-cczlb56u></p> <a class="sm-btn sm-install" href="https://chromewebstore.google.com/detail/dassi-ai-browser-agent/bjcngahpcjeililljmfegmlanlpgibdi?utm_source=dassi_website&utm_medium=website&utm_campaign=organic&utm_content=signup_modal_done" target="_blank" data-sm-install data-astro-cid-cczlb56u>Install dassi</a> </div> <p class="sm-status" aria-live="polite" data-sm-status data-astro-cid-cczlb56u></p> </div> </dialog>
57<script type="module" src="/_astro/SignupModal.astro_astro_type_script_index_0_lang.C1s-0yFz.js"></script>
57 <!-- Snapshot the campaign that brought this visitor, before they 58 navigate off the landing URL and the parameters are gone. Runs on 59 every page and keeps only the first one it sees. Bundled rather 60 than inline because it imports; nothing downstream races it, since 61 signup reads the stored record, not the URL. -->
61<script type="module" src="/_astro/Layout.astro_astro_type_script_index_0_lang.CqvgP4V8.js"></script>
61 <!-- Hand the pixels the signed-in account so their events carry match 62 keys. Runs after the head blocks have queued rdt()/fbq(), and again 63 on sign-in/out in this tab, because a visitor who signs up here 64 goes on to fire conversion events from the same page. -->
64<script type="module" src="/_astro/Layout.astro_astro_type_script_index_1_lang.jECpNoAJ.js"></script>
64 <!-- Custom event tracking for GA4 + the Reddit pixel. Delegated and 65 inline so it is listening before anything on the page can be 66 clicked; the importable equivalent for component scripts is 67 src/utils/analytics.ts. -->
67<script> 68 // Guarded per tag. gtag is defined by the head script above rather 69 // than by the remote file, so its own guard is close to inert â the 70 // load-bearing one is sendRdt's, because rdt only exists once the 71 // pixel block has run. Neither is named `ga`/`rd`: a top-level 72 // declaration here becomes a window global, and `ga` is Universal 73 // Analytics' command queue. Anything that later assigns or 74 // feature-detects window.ga would silently turn every delegated 75 // GA4 event into a malformed classic-GA command. 76 function sendGa(name, params) { 77 if (typeof gtag === 'function') gtag('event', name, params); 78 } 79 function sendRdt(name, meta) { 80 if (typeof rdt === 'function') rdt('track', name, meta || {}); 81 } 82 function sendFbq(name) { 83 if (typeof fbq === 'function') fbq('track', name); 84 } 85 86 // Reddit's pixel queues calls until the async pixel.js lands and 87 // then sends a plain image beacon â no sendBeacon, no keepalive. 88 // Fired from `click`, a Lead on a store link that navigates the 89 // current tab dies with the document, and the in-body blog links 90 // are exactly that: 23 of the site's store anchors carry no 91 // target="_blank", across 187 posts. pointerdown runs while the 92 // page is still alive. 93 // 94 // Which pointer event counts depends on the input, because 95 // pointerdown is only a reliable "they are going to the store" for 96 // a primary mouse button. A right or middle press fires it too 97 // (context menu, dismissed), and on touch it fires the instant a 98 // finger lands â before the browser has decided between a tap and 99 // a scroll, so scrolling a blog post that happens to have a store 100 // link under the thumb would report a Lead that never happened. 101 // A scroll cancels the pointer instead of releasing it, so touch 102 // counts on pointerup, which still precedes navigation. 103 // 104 // click backs both up for keyboard activation, which produces no 105 // pointer events at all. The guard is keyed to the element, so the 106 // two or three events of one activation collapse into one Lead â 107 // same link, milliseconds apart â while two different store links 108 // on the same page still count twice. 109 var lastLeadEl = null; 110 var lastLeadAt = 0; 111 function reportLead(el) { 112 var now = Date.now(); 113 if (el === lastLeadEl && now - lastLeadAt < 1000) return; 114 lastLeadEl = el; 115 lastLeadAt = now; 116 // The store listing is a product page, which is what Reddit 117 // defines ViewContent as. This fired Lead until the extension 118 // could report the install itself â the old reasoning was that 119 // leaving for Google's domain was as deep as Reddit Ads could 120 // be optimised against, and server-side reporting ended that. 121 // Lead now marks the first prompt, the one funnel stage with no 122 // other candidate in Reddit's taxonomy. See 123 // docs/superpowers/specs/2026-08-28-reddit-conversion-funnel.md 124 // in the dassi repo. 125 // No metadata: Reddit validates it per event type and its own 126 // diagnostics flagged itemCount as unsupported here. 127 sendRdt('ViewContent'); 128 // Meta's ViewContent means the same thing for the same reason; 129 // its Install/Lead/Purchase arrive server-side (_shared/meta-capi 130 // in the dassi repo), mirroring Reddit's. 131 sendFbq('ViewContent'); 132 } 133 function leadFromPointer(e) { 134 var mouse = e.pointerType === 'mouse'; 135 // pointerdown for mouse, pointerup for everything else. 136 if (mouse !== (e.type === 'pointerdown')) return; 137 // Primary button only: button 2 is the context menu, and 138 // button 1 opens a tab through auxclick, not click. 139 if (mouse && e.button !== 0) return; 140 var link = e.target.closest('a[href*="chromewebstore.google.com"]'); 141 if (link) reportLead(link); 142 } 143 document.addEventListener('pointerdown', leadFromPointer); 144 document.addEventListener('pointerup', leadFromPointer); 145 // Middle-click opens the store in a background tab â the same 146 // intent, and the one way to follow an in-body blog link without 147 // losing the post. It arrives as auxclick, never click. 148 document.addEventListener('auxclick', function(e) { 149 if (e.button !== 1) return; 150 var link = e.target.closest('a[href*="chromewebstore.google.com"]'); 151 if (link) reportLead(link); 152 }); 153 document.addEventListener('click', function(e) { 154 // Named CTAs. Buttons (and links that go somewhere on-site) are 155 // invisible to the href matches below, so anything worth 156 // counting carries data-cta. 157 // 158 // These three checks are deliberately independent rather than 159 // exclusive: a store or Discord link is already identified by 160 // its own event (cws_click carries link_url, and the UTM in it 161 // names the placement), so it must NOT also carry data-cta â 162 // that would count one click as both a cta_click and a 163 // cws_click. Chaining them with else-if instead would drop the 164 // cws_click the store funnel is measured on, which is worse. 165 var cta = e.target.closest('[data-cta]'); 166 if (cta) { 167 sendGa('cta_click', { 168 cta_id: cta.dataset.cta, 169 page_path: window.location.pathname 170 }); 171 } 172 // Track Chrome Web Store link clicks 173 var cwsLink = e.target.closest('a[href*="chromewebstore.google.com"]'); 174 if (cwsLink) { 175 sendGa('cws_click', { 176 link_url: cwsLink.href, 177 page_path: window.location.pathname 178 }); 179 reportLead(cwsLink); 180 } 181 // Track Discord link clicks 182 var discordLink = e.target.closest('a[href*="discord.gg"]'); 183 if (discordLink) { 184 sendGa('discord_click', { 185 page_path: window.location.pathname 186 }); 187 } 188 }); 189 // Form submissions, named per form via data-form-event. A form 190 // without one reports as a generic form_submit rather than
191 // borrowing another form's name â the newsletter, the signup email 192 // step and the OTP step all used to report as email_signup, which 193 // made that count unreadable. 194 document.addEventListener('submit', function(e) { 195 var form = e.target.closest('form'); 196 if (!form) return; 197 sendGa(form.dataset.formEvent || 'form_submit', { 198 form_id: form.id || form.dataset.formEvent || 'unknown', 199 page_path: window.location.pathname 200 }); 201 }); 202 </script>
202
202<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"0bbf9a16d006415190c8f65afa7ec5d9","r":1,"spa":2}' crossorigin="anonymous"></script>
202 203</body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.