<?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: Sayan Mohsin</title>
    <description>The latest articles on DEV Community by Sayan Mohsin (@sayanmohsin).</description>
    <link>https://dev.to/sayanmohsin</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%2F857034%2F2e279e02-8b32-4158-99a6-d67f7931fc14.jpeg</url>
      <title>DEV Community: Sayan Mohsin</title>
      <link>https://dev.to/sayanmohsin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sayanmohsin"/>
    <language>en</language>
    <item>
      <title>The Production Leap: Scaling Agent Workflows Globally on thingd.cloud (Part 4)</title>
      <dc:creator>Sayan Mohsin</dc:creator>
      <pubDate>Mon, 13 Jul 2026 19:33:20 +0000</pubDate>
      <link>https://dev.to/sayanmohsin/the-production-leap-scaling-agent-workflows-globally-on-thingdcloud-part-4-1cai</link>
      <guid>https://dev.to/sayanmohsin/the-production-leap-scaling-agent-workflows-globally-on-thingdcloud-part-4-1cai</guid>
      <description>&lt;p&gt;Over the last three posts, we explored the concept of "Zero-UI" software, deep-dived into our high-performance Rust core engine, and wrote local agent scripts using the TypeScript SDK. &lt;/p&gt;

&lt;p&gt;But eventually, every developer hits the production wall. &lt;/p&gt;

&lt;p&gt;Running a local-first agent data engine on your MacBook is a beautiful experience. But scaling that engine to support thousands of concurrent autonomous agents—while keeping latencies near zero and ensuring total tenant isolation—requires a completely different architectural playbook.&lt;/p&gt;

&lt;p&gt;This is the story of how we built &lt;strong&gt;thingd.cloud&lt;/strong&gt;, the managed hosting layer for agent-native infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Production Challenge: Multi-Tenancy for Machines
&lt;/h2&gt;

&lt;p&gt;When humans use a SaaS cloud application, they are forgiving. If a dashboard takes 1.5 seconds to load because of a cold start or a busy database connection pool, a human might sigh, but they won't break the app.&lt;/p&gt;

&lt;p&gt;When an &lt;strong&gt;AI Agent&lt;/strong&gt; hits a database layer, it has zero patience. If your cloud API experiences latency spikes, the agent’s execution loop stalls, context windows can timeout, and inference costs skyrocket.&lt;/p&gt;

&lt;p&gt;To scale our local Rust/SQLite primitives to the cloud, we had to solve two major architectural pillars:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Absolute Tenant Isolation:&lt;/strong&gt; Ensuring Agent A’s memory structures can never bleed into or affect Agent B’s data assets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-Concurrency Orchestration:&lt;/strong&gt; Handling thousands of active tool invocations per second without creating database deadlocks.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Stack: Scaling with NestJS, React, and TypeScript
&lt;/h2&gt;

&lt;p&gt;While our core execution engine (&lt;code&gt;engine.thingd.cloud&lt;/code&gt;) stays lean and fast in Rust, we built the control plane and orchestration layer of &lt;a href="https://thingd.cloud" rel="noopener noreferrer"&gt;thingd.cloud&lt;/a&gt; using a robust enterprise stack: &lt;strong&gt;NestJS&lt;/strong&gt; on the backend and &lt;strong&gt;React&lt;/strong&gt; for the developer dashboard.&lt;/p&gt;

</description>
      <category>nestjs</category>
      <category>react</category>
      <category>cloud</category>
      <category>saas</category>
    </item>
    <item>
      <title>Ditching JSON &amp; SQL Friction: Designing an Object-Shaped Memory Engine (Part 2)</title>
      <dc:creator>Sayan Mohsin</dc:creator>
      <pubDate>Mon, 13 Jul 2026 19:32:46 +0000</pubDate>
      <link>https://dev.to/sayanmohsin/ditching-json-sql-friction-designing-an-object-shaped-memory-engine-part-2-140n</link>
      <guid>https://dev.to/sayanmohsin/ditching-json-sql-friction-designing-an-object-shaped-memory-engine-part-2-140n</guid>
      <description>&lt;p&gt;For a long time, backend engineering has been divided into two camps: Relational databases (SQL) for rigid, structured tables, and Document stores (NoSQL/JSON) for flexible, unstructured data. &lt;/p&gt;

&lt;p&gt;But when you are building for AI Agents, both of these traditional approaches introduce massive architectural friction. &lt;/p&gt;

&lt;p&gt;AI agents don't think in rows, columns, or complex foreign key joins. They don't want to parse heavily nested, arbitrary JSON text blobs either. Agents think in &lt;strong&gt;state, context, and entities&lt;/strong&gt;. They operate best when data looks exactly like the object structures they manipulate in their runtime environments.&lt;/p&gt;

&lt;p&gt;When I designed the core primitives for &lt;strong&gt;thingd&lt;/strong&gt;, I wanted the absolute speed of a local relational database combined with the flexibility of an object-first paradigm. Here is how we bypassed the typical ORM bloat and built an object-shaped memory engine natively in Rust.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why typical DB abstractions break for Agents
&lt;/h2&gt;

&lt;p&gt;If you hook an autonomous agent loop up to a traditional Postgres or MySQL instance using an ORM like Prisma or TypeORM, you run into three main problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Context Bloat:&lt;/strong&gt; ORMs generate heavy, verbose SQL queries and return heavily structured responses packed with metadata that the agent doesn't need, wasting valuable context tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema Inflexibility:&lt;/strong&gt; Agents are dynamic. They discover new data shapes, store arbitrary runtime memories, and alter data structures on the fly. Migrating a SQL schema mid-agent loop is an absolute nightmare.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Local I/O Bottleneck:&lt;/strong&gt; Forcing a local agent loop to constantly hit a remote cloud database for every minor micro-step adds hundreds of milliseconds of network latency, compounding until the agent feels unusable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We needed something local-first, structurally dynamic, and blazing fast.&lt;/p&gt;




&lt;h2&gt;
  
  
  Under the Hood: SQLite Performance + Rust Objects
&lt;/h2&gt;

&lt;p&gt;To solve this, &lt;code&gt;thingd&lt;/code&gt; uses &lt;strong&gt;SQLite&lt;/strong&gt; as its storage engine, but exposes it completely as a high-performance &lt;strong&gt;Object Store&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Instead of forcing developers (or agents) to write queries or handle migrations, &lt;code&gt;thingd&lt;/code&gt; abstracts the database into an entity-first system. Every data point is treated as a "thing"—an object primitive with its own identity, properties, and relationships.&lt;/p&gt;

&lt;p&gt;Because the underlying engine is written in Rust, we get to take advantage of zero-cost abstractions:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
rust
// A simplified look at how thingd handles dynamic object primitives internally
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct ThingObject {
    pub id: String,
    pub entity_type: String,
    pub properties: HashMap&amp;lt;String, serde_json::Value&amp;gt;,
    pub updated_at: i64,
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>database</category>
      <category>rust</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Killing the Frontend: Building the Agent-Native Stack (Part 1)</title>
      <dc:creator>Sayan Mohsin</dc:creator>
      <pubDate>Mon, 13 Jul 2026 19:32:16 +0000</pubDate>
      <link>https://dev.to/sayanmohsin/killing-the-frontend-building-the-agent-native-stack-part-1-2oma</link>
      <guid>https://dev.to/sayanmohsin/killing-the-frontend-building-the-agent-native-stack-part-1-2oma</guid>
      <description>&lt;p&gt;For the last two decades, software engineering has followed a predictable formula: build a database, write an API, and build a massive, complex frontend web app (React, Vue, Next.js) so a human can interact with your data. &lt;/p&gt;

&lt;p&gt;If you are building something like an Order Management System (OMS) today, you will spend months designing dashboards, sorting data tables, managing state, and handling complex pagination hooks—all just so a human can click a button to change a status from "Pending" to "Shipped."&lt;/p&gt;

&lt;p&gt;But what happens when your user isn't a human looking at a screen, but an &lt;strong&gt;autonomous AI Agent&lt;/strong&gt; running in a background loop? &lt;/p&gt;

&lt;p&gt;The agent doesn't care about your custom Tailwind CSS components or your beautifully optimized pagination hooks. In fact, forcing an AI agent to scrape a web UI or deal with bloated, unstructured HTTP REST endpoints is slow, token-expensive, and highly unpredictable. &lt;/p&gt;

&lt;p&gt;If we are moving into a world of &lt;strong&gt;Zero-UI&lt;/strong&gt;, where software is entirely agent-driven, we need a fundamentally new backend stack. We need &lt;strong&gt;Agent-Native Infrastructure&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Paradigm Shift: From Features to "Invocable Capabilities"
&lt;/h2&gt;

&lt;p&gt;When you strip away the frontend, an application becomes a collection of raw, high-performance capabilities that an LLM can trigger deterministically. &lt;/p&gt;

&lt;p&gt;Imagine an agent-driven application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A human simply tells a chat interface, a Slack bot, or an internal AI handler: &lt;em&gt;"Cancel order #1042 and refund the user because it’s out of stock."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The Agent takes that intent, calculates the correct execution path, and triggers a direct data operation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To make this reliable at scale, the agent needs a data engine that speaks its language natively—via the &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;—at sub-millisecond speeds. &lt;/p&gt;

&lt;p&gt;That is exactly why I built &lt;strong&gt;thingd&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I didn't want to build another dashboard. I wanted to build an open-source, ultra-fast data engine designed specifically to give agents native access to application state and memory without the traditional web app fluff. &lt;/p&gt;

&lt;p&gt;To prove this architectural pattern worked, I didn't start with a simple todo app. I built a real-time, high-concurrency npm registry lookup engine directly native to AI agents: &lt;a href="https://engine.thingd.cloud" rel="noopener noreferrer"&gt;engine.thingd.cloud&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack: Why Rust + MCP is the Zero-UI Sweet Spot
&lt;/h2&gt;

&lt;p&gt;Building for agents requires two things that traditional web apps often compromise on: &lt;strong&gt;extreme speed&lt;/strong&gt; and &lt;strong&gt;rigid predictability&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;If an LLM takes 800ms waiting for a server response during an autonomous loop of 10 sequential tasks, the compounding latency destroys the user experience. &lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Protocol: Model Context Protocol (MCP)
&lt;/h3&gt;

&lt;p&gt;Instead of inventing a custom JSON schema or letting the LLM guess how to query an endpoint, &lt;code&gt;thingd&lt;/code&gt; utilizes the open standard Model Context Protocol. MCP acts as a secure, bidirectional bridge between LLMs (like Claude Code, Cursor, or custom frameworks) and data sources. &lt;/p&gt;

&lt;p&gt;By exposing my engine via an MCP server, any agent can inspect the tool schema natively:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
json
{
  "name": "thingd_npm_lookup",
  "description": "Query the high-speed thingd engine for real-time npm package metadata and dependency trees",
  "input_schema": {
    "type": "object",
    "properties": {
      "package_name": { "type": "string" }
    },
    "required": ["package_name"]
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>rust</category>
      <category>mcp</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Local-First Agents: Building with the thingd CLI &amp; TypeScript Clients (Part 3)</title>
      <dc:creator>Sayan Mohsin</dc:creator>
      <pubDate>Mon, 13 Jul 2026 17:17:39 +0000</pubDate>
      <link>https://dev.to/sayanmohsin/local-first-agents-building-with-the-thingd-cli-typescript-clients-part-3-4ia1</link>
      <guid>https://dev.to/sayanmohsin/local-first-agents-building-with-the-thingd-cli-typescript-clients-part-3-4ia1</guid>
      <description>&lt;p&gt;A great data engine is completely useless if the developer experience (DX) makes you want to tear your hair out. &lt;/p&gt;

&lt;p&gt;When building tools for AI agents, DX is twice as difficult. You aren't just designing a clean API for the human engineer writing the code; you are also designing an intuitive interface for the AI agent that will be manipulating the system autonomously.&lt;/p&gt;

&lt;p&gt;In this post, we’re looking at how to build with &lt;strong&gt;thingd&lt;/strong&gt; using the local CLI and our native TypeScript SDK to create low-latency, local-first agent loops.&lt;/p&gt;




&lt;h2&gt;
  
  
  Local-First DX: The thingd CLI
&lt;/h2&gt;

&lt;p&gt;When an agent is autonomously modifying data, updating system states, or resolving something complex like our npm lookup tool on &lt;a href="https://engine.thingd.cloud" rel="noopener noreferrer"&gt;engine.thingd.cloud&lt;/a&gt;, human developers need a window into what the hell is happening under the hood.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;thingd&lt;/code&gt; CLI acts as that bridge. It allows you to spin up the local engine, inspect the object memory pools, and view real-time logs of what your agents are querying.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
# Start the local engine instance
thingd start

# Inspect live agent-created object entities
thingd objects:list --type memory_stream
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>cli</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
