<?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: Ori Tzvielli</title>
    <description>The latest articles on DEV Community by Ori Tzvielli (@orit).</description>
    <link>https://dev.to/orit</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%2F3707010%2F6c7f6e7a-42b6-44f7-ba07-b91950fe84c7.png</url>
      <title>DEV Community: Ori Tzvielli</title>
      <link>https://dev.to/orit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/orit"/>
    <language>en</language>
    <item>
      <title>Introducing "Token Proof of Work"</title>
      <dc:creator>Ori Tzvielli</dc:creator>
      <pubDate>Thu, 27 Aug 2026 04:49:06 +0000</pubDate>
      <link>https://dev.to/orit/introducing-token-proof-of-work-5d7p</link>
      <guid>https://dev.to/orit/introducing-token-proof-of-work-5d7p</guid>
      <description>&lt;p&gt;Every contact form, webhook receiver, and "submit a listing" endpoint you've ever built shares one unspoken assumption baked into the code: a human is on the other end, typing slowly, one submission at a time. That assumption is aging badly.&lt;/p&gt;

&lt;p&gt;Agents are now the client. Sometimes via WebMCP, sometimes just a headless browser with a model driving it. And that's fine — plenty of that traffic is legitimate, a user's agent doing a user's errand. The problem is the traffic that isn't: an agent that can generate ten thousand unique, coherent, non-repetitive messages for the price of API calls, aimed at any endpoint that's "free to submit."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The old anti-spam toolkit doesn't transfer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rate limiting catches volume from one source, not distributed volume. Content filters catch repetition and boilerplate, and an LLM has neither — every message it writes is genuinely different. CAPTCHAs solve a problem you may not even have anymore: "are you human?" is the wrong gate when you want agents submitting things on behalf of real users. You just don't want the flood.&lt;/p&gt;

&lt;p&gt;The property you actually want to check for is much simpler: did generating and sending this cost the sender something non-trivial?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Borrowing the PoW primitive, aimed at a different resource&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Proof-of-work doesn't authenticate identity — it verifies expended effort, and prices abuse by making repetition at scale expensive. Bitcoin pointed this at hash computation. For AI agents, two resources are actually scarce in the same way:&lt;/p&gt;

&lt;p&gt;Tokens — every unit of model output has a real, non-zero inference cost&lt;br&gt;
Time — wall-clock time can't be parallelized away by throwing more compute at it&lt;/p&gt;

&lt;p&gt;Token Proof of Work is a small protocol sketch built on exactly those two primitives. The flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent  -&amp;gt; Receiver:  "I want to submit X"&lt;/li&gt;
&lt;li&gt;Receiver -&amp;gt; Agent:   one-time challenge, bound to this exact submission
                    (not precomputable, not replayable)&lt;/li&gt;
&lt;li&gt;Agent solves it:     burns a minimum number of tokens actually
                    engaging with the challenge + the payload&lt;/li&gt;
&lt;li&gt;Receiver accepts iff:

&lt;ul&gt;
&lt;li&gt;the token-work checks out, AND&lt;/li&gt;
&lt;li&gt;a minimum time interval has elapsed since step 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both thresholds are set by the receiver. A contact form might require ~30-50k tokens of work and a 30-second minimum latency. A directory or marketplace submission — historically a much juicier spam target — can dial both numbers up. A genuine sender never notices the friction. Running this at spam volume means paying real inference cost and real wall-clock time, per message, with no way to amortize either one away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two independent knobs, not one&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This only works because token cost and time cost fail in different ways when used alone.&lt;/p&gt;

&lt;p&gt;Token-only degrades over time. Inference gets cheaper every year, and an attacker can trivially parallelize across N instances to keep aggregate cost flat even as unit cost drops.&lt;br&gt;
Time-only degrades the same way in the other direction — spin up N parallel identities, wait out the clock on all of them concurrently, and the "cost" of time disappears.&lt;/p&gt;

&lt;p&gt;Two independent knobs close both gaps. Raise the token requirement to attack the attacker's budget. Raise the time requirement to attack the attacker's throughput. You can't optimize around both simultaneously the way you can around either alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it sits relative to x402 / pay-per-call&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're already comfortable with the idea of agents paying for API access — x402-style pay-per-call, USDC micropayments, no accounts — this will look adjacent but distinct. Where charging money outright is the honest, direct solution (an agent calling a paid API), that's already a solved shape.&lt;/p&gt;

&lt;p&gt;Token Proof of Work is for the adjacent case where charging money is the wrong answer: a customer shouldn't have to pay to ask your store a question, an applicant shouldn't pay to submit a job application. But "free" still needs a cost function attached to it, or it gets abused. That's the gap this fills — contact forms, directory/marketplace submissions, app store listings, reviews, comments, support tickets, applications: anywhere "free to submit" has historically meant "free to flood."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's actually unsolved here&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To be upfront: this is a proposal, not a shipped implementation. There's no reference server, no SDK, nothing running in prod. The interesting open problem is verification — how does a receiver confirm the token-work was genuinely produced by the challenge-solving process, rather than shortcut through a cheaper model, a cache, or a lookup table? The working hypothesis is that challenge design can be structured so that cheating the verification costs about as much as honestly complying — which is the only invariant proof-of-work systems have ever actually needed to hold. That's a claim worth stress-testing, not one to take on faith.&lt;/p&gt;

&lt;p&gt;Full write-up, threat model, and open questions are in the whitepaper (MIT licensed) on GitHub: &lt;a href="https://github.com/onescales/token-proof-of-work" rel="noopener noreferrer"&gt;https://github.com/onescales/token-proof-of-work&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you can break the challenge design, have a cleaner verification scheme, or want to prototype a receiver/verifier — that's exactly the discussion this was written to start.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webspam</category>
      <category>cryptography</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why We're Building Apps for the Internet — Here's Our Direction</title>
      <dc:creator>Ori Tzvielli</dc:creator>
      <pubDate>Mon, 02 Mar 2026 02:26:19 +0000</pubDate>
      <link>https://dev.to/onescales/why-were-building-apps-for-the-internet-heres-our-direction-380d</link>
      <guid>https://dev.to/onescales/why-were-building-apps-for-the-internet-heres-our-direction-380d</guid>
      <description>&lt;h1&gt;
  
  
  Why We're Building Apps for the Internet
&lt;/h1&gt;

&lt;p&gt;There's a simple reason we do this: we want to give more than we take.&lt;/p&gt;

&lt;p&gt;Before One Scales, I ran a web development company with up to 38 people. We built websites, we sold hours — we were more like a factory. One Scales is a different bet. Use code and content to reach a lot of people, reduce waste, build things once that keep working.&lt;/p&gt;




&lt;h2&gt;
  
  
  Finding What's Missing
&lt;/h2&gt;

&lt;p&gt;We look for gaps. Underserved niches, tools that don't exist yet, problems people are quietly frustrated by. When we find one, we build something and create content around it to help people save time and do something useful.&lt;/p&gt;




&lt;h2&gt;
  
  
  What We're Building Right Now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AI SEO / llms.txt&lt;/strong&gt; — We believe AI discoverability is the next generation of SEO. Just like websites had to learn to speak Google's language, they'll need to speak AI's. The llms.txt standard is part of that shift. Our flagship project is &lt;strong&gt;&lt;a href="https://hillms.com" rel="noopener noreferrer"&gt;Hi LLMs&lt;/a&gt;&lt;/strong&gt; — a suite of tools that help websites connect with AI systems, including an embeddable AI Summary Widget, free Chrome extensions, and more in the pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Apify Apps&lt;/strong&gt; — We publish automation and scraping tools on the Apify marketplace. &lt;a href="https://apify.com/onescales" rel="noopener noreferrer"&gt;21 apps live&lt;/a&gt;, 3,800+ users and growing. A few examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LLMS.txt Generator&lt;/strong&gt; — Make websites discoverable to AI assistants&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulk Image Downloader&lt;/strong&gt; — Download thousands of images at scale&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sitemap URL Extractor&lt;/strong&gt; — Extract all URLs from any sitemap&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bulk AI Markdown Maker&lt;/strong&gt; — Convert pages to clean markdown with AI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website Screenshot Pro&lt;/strong&gt; — Capture high-quality screenshots at scale&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple SEO Data Extractor&lt;/strong&gt; — Pull SEO metadata from websites&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  We Share Everything We Learn
&lt;/h2&gt;

&lt;p&gt;On our &lt;a href="https://www.youtube.com/@onescales" rel="noopener noreferrer"&gt;YouTube channel&lt;/a&gt; we publish tutorials and walkthroughs. One video on improving &lt;code&gt;.mbox&lt;/code&gt; files from Google Takeout/Gmail has helped over 100,000 people.&lt;/p&gt;

&lt;p&gt;We also write articles on &lt;a href="https://onescales.com" rel="noopener noreferrer"&gt;onescales.com&lt;/a&gt; — anything we can share that either doesn't exist online or we think we can explain better. It's not always tech. We timestamped &lt;a href="https://onescales.com/blogs/main/skipping-scary-parts-moana" rel="noopener noreferrer"&gt;all the scary parts of Moana&lt;/a&gt; so parents of toddlers know exactly what to skip. Simple, useful, real.&lt;/p&gt;

&lt;p&gt;And we open-source tools on &lt;a href="https://github.com/onescales" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; — a Google Sheet API wrapper, a Calendar ICS exporter, an IPFS bulk uploader, and more. If we build something useful, we share it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Honest About Where We Are
&lt;/h2&gt;

&lt;p&gt;One Scales isn't a full-time income yet. It's a side mission we believe in, built step by step, with the goal of becoming something sustainable. We're learning, adjusting, and continuing.&lt;/p&gt;

&lt;p&gt;If any of this resonates, we'd love to connect.&lt;/p&gt;

&lt;p&gt;Follow along: &lt;a href="https://www.youtube.com/@onescales" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; · &lt;a href="https://github.com/onescales" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://apify.com/onescales" rel="noopener noreferrer"&gt;Apify&lt;/a&gt; · &lt;a href="https://twitter.com/one_scales" rel="noopener noreferrer"&gt;Twitter/X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>trying to figure out browser-use</title>
      <dc:creator>Ori Tzvielli</dc:creator>
      <pubDate>Mon, 12 Jan 2026 13:12:03 +0000</pubDate>
      <link>https://dev.to/orit/trying-to-figure-out-browser-use-1jf3</link>
      <guid>https://dev.to/orit/trying-to-figure-out-browser-use-1jf3</guid>
      <description></description>
    </item>
  </channel>
</rss>
