PageSourceSearch

https://dassi.ai/blog/

html dassi.ai collected 2026-09-24 14:07:14 UTC 56,046 bytes, 203 lines download raw bytes

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&#39;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&#39;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&#39;t work. He&#39;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&#39;s $899 Googlebook Runs Gemini Beside Your Tabs, Not Inside Them</h2> <p class="post-description" data-astro-cid-a7wiyce3>Google&#39;s $899 Googlebook is a browser in a shell, and Gemini still can&#39;t see the Salesforce tab you&#39;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&#39;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&#39;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&#39;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&#39;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&#39;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&#39;s Forms</h2> <p class="post-description" data-astro-cid-a7wiyce3>Meta shipped an AI agent for WhatsApp Business onboarding — inside Meta&#39;s dashboard. Vendor setup agents stop at the property line. A browser agent doesn&#39;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&#39;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&#39;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&#39;t Save You.</h2> <p class="post-description" data-astro-cid-a7wiyce3>Attackers are lifting Claude session tokens off subscribers&#39; machines and reselling the access. The fix isn&#39;t rotation, it&#39;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>&larr; 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 &rarr;</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.