<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luan Mariz</title>
    <description>The latest articles on DEV Community by Luan Mariz (@sayhitogambit).</description>
    <link>https://dev.to/sayhitogambit</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3251661%2F575d56f5-30ac-4cd7-8dea-7cf7112b947c.jpg</url>
      <title>DEV Community: Luan Mariz</title>
      <link>https://dev.to/sayhitogambit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sayhitogambit"/>
    <language>en</language>
    <item>
      <title>DeepLook is open source: real Chrome, a CLI, an HTTP API, and MCP</title>
      <dc:creator>Luan Mariz</dc:creator>
      <pubDate>Tue, 20 Oct 2026 20:46:46 +0000</pubDate>
      <link>https://dev.to/sayhitogambit/deeplook-is-open-source-real-chrome-a-cli-an-http-api-and-mcp-2e15</link>
      <guid>https://dev.to/sayhitogambit/deeplook-is-open-source-real-chrome-a-cli-an-http-api-and-mcp-2e15</guid>
      <description>&lt;p&gt;I’m releasing &lt;strong&gt;DeepLook&lt;/strong&gt;, an open-source browser tool that turns public web pages into readable text and structured data for AI agents.&lt;/p&gt;

&lt;p&gt;It runs real Chrome, renders the page, and gives your application the visible text together with its title, final URL, HTTP status, and browser observations. You can use the same reading capability from a local CLI, a self-hosted HTTP API, or a coding agent through MCP.&lt;/p&gt;

&lt;p&gt;The original project code is licensed under &lt;strong&gt;Apache-2.0&lt;/strong&gt;. You can inspect it, run it on your own infrastructure, and contribute improvements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sayhitogambit/DeepLook" rel="noopener noreferrer"&gt;Browser engine, CLI and MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sayhitogambit/DeepLook-API" rel="noopener noreferrer"&gt;Self-hosted HTTP API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prefer a hosted endpoint? &lt;a href="https://getdeeplook.dev/account.html" rel="noopener noreferrer"&gt;Create a DeepLook account&lt;/a&gt;, verify your email, and generate your own named API key. The account page lets you rotate and revoke keys. The hosted endpoint is &lt;code&gt;https://api.getdeeplook.dev/v1/open&lt;/code&gt;; your key belongs in your private application environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The reading step in an agent’s workflow
&lt;/h2&gt;

&lt;p&gt;Research and coding agents often need the actual page behind a URL. A lightweight HTTP fetch works for many sources; other pages need JavaScript rendering before useful text appears.&lt;/p&gt;

&lt;p&gt;DeepLook handles that browser-reading step. Give it one public URL and consume the result in your own workflow. Search, research planning, deciding which links to follow, and writing a final answer remain your application’s responsibility.&lt;/p&gt;

&lt;p&gt;I wanted the boundary to be easy to understand: a page request, a structured result, and an explicit error when the page cannot be read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it locally
&lt;/h2&gt;

&lt;p&gt;You need &lt;strong&gt;Node.js 22.14+&lt;/strong&gt; and &lt;strong&gt;Google Chrome&lt;/strong&gt;. Local use does not require a DeepLook account, an LLM API key, or a shared project token.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/sayhitogambit/DeepLook.git
&lt;span class="nb"&gt;cd &lt;/span&gt;DeepLook
npm ci
npm run build

node dist/cli.js doctor &lt;span class="nt"&gt;--json&lt;/span&gt;
node dist/cli.js open https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use JSON when your application needs page metadata, or the versioned machine format when you need a consistent success/error envelope:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node dist/cli.js open https://example.com &lt;span class="nt"&gt;--json&lt;/span&gt;
node dist/cli.js open https://example.com &lt;span class="nt"&gt;--machine&lt;/span&gt; &lt;span class="nt"&gt;--timeout-ms&lt;/span&gt; 30000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These commands install from GitHub source. They do not depend on a public npm registry release. You can also build and install your own tarball with &lt;code&gt;npm pack&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give your agent an MCP tool
&lt;/h2&gt;

&lt;p&gt;DeepLook includes a &lt;strong&gt;stdio MCP server&lt;/strong&gt;. After building the project, configure your MCP host to launch it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"deeplook"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"/absolute/path/to/DeepLook/dist/cli.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configuration field names vary between hosts. The command exposes &lt;code&gt;deeplook_open&lt;/code&gt;, which accepts a URL and an optional timeout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"https://example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"timeoutMs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;30000&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Successful calls return page text and a structured result. Failed calls return a typed error. Each MCP process allows one active read, and cancellation propagates to the browser operation.&lt;/p&gt;

&lt;p&gt;Page content remains untrusted input. An agent must treat instructions found inside a page as source material, rather than instructions from its user or developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run your own HTTP API
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/sayhitogambit/DeepLook-API" rel="noopener noreferrer"&gt;DeepLook-API&lt;/a&gt; wraps the browser CLI with an HTTP interface, authentication, account quotas, concurrency limits, and lifecycle management.&lt;/p&gt;

&lt;p&gt;Its page-reading endpoint is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /v1/open
Authorization: Bearer &amp;lt;your-own-browser-key&amp;gt;
Content-Type: application/json

{"url":"https://example.com","timeoutMs":30000}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API returns the page object on success. It reports errors such as invalid input, unauthorized access, an exhausted quota, a busy browser, a timeout, or a page that returned a challenge instead of useful content.&lt;/p&gt;

&lt;p&gt;The operator generates and manages the server’s credentials. Administrator credentials and client browser keys have separate roles. There is no founder-owned token for everyone to share, and the source does not provide access to my accounts or infrastructure.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/sayhitogambit/DeepLook-API/blob/main/docs/credentials.md" rel="noopener noreferrer"&gt;credential guide&lt;/a&gt; walks through creating your own secrets and keeping them outside Git. The CLI and MCP tool can also connect to your own API through private environment variables.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for agent workflows
&lt;/h2&gt;

&lt;p&gt;DeepLook reads a public HTTP(S) URL with real Chrome and returns visible text, page metadata, and structured JSON through a consistent interface. The CLI, HTTP API, and MCP tool make that reading step easy to integrate into research tools, coding agents, and automation workflows.&lt;/p&gt;

&lt;p&gt;Chrome runs with its sandbox enabled. Destination validation, per-account quotas, concurrency controls, and lifecycle management support self-hosted operation.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/sayhitogambit/DeepLook/blob/main/docs/reference.md" rel="noopener noreferrer"&gt;technical reference&lt;/a&gt; covers the response contract, configuration, and deployment details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built to be inspected and improved
&lt;/h2&gt;

&lt;p&gt;The repositories include deterministic tests, tests with a real sandboxed browser, package-installation checks, and HTTP/container integration tests. They exercise practical failure cases as well as successful reads.&lt;/p&gt;

&lt;p&gt;The README is available in &lt;strong&gt;English, Brazilian Portuguese, and Simplified Chinese&lt;/strong&gt;. The DeepLook website also offers an optional newsletter with confirmation and unsubscribe links, separate from account registration. The browser and API themselves do not require email credentials.&lt;/p&gt;

&lt;p&gt;I’m opening the project early so developers can try real workflows, inspect the implementation, and help shape what comes next. Useful contributions include reproducible page-reading bugs, documentation improvements, platform testing, and agent integrations.&lt;/p&gt;

&lt;p&gt;Start with the &lt;a href="https://github.com/sayhitogambit/DeepLook" rel="noopener noreferrer"&gt;DeepLook repository&lt;/a&gt;, follow the &lt;a href="https://github.com/sayhitogambit/DeepLook/blob/main/docs/getting-started.md" rel="noopener noreferrer"&gt;getting-started guide&lt;/a&gt;, and tell me what you build.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This announcement was prepared with AI assistance and checked against the released project.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>cli</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
