<?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: Arshdeep Singh</title>
    <description>The latest articles on DEV Community by Arshdeep Singh (@arshkharbanda2010).</description>
    <link>https://dev.to/arshkharbanda2010</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F419697%2Faa40df9d-1d41-4d3c-8193-b728c9e58e8e.jpeg</url>
      <title>DEV Community: Arshdeep Singh</title>
      <link>https://dev.to/arshkharbanda2010</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arshkharbanda2010"/>
    <language>en</language>
    <item>
      <title>SentrySearch: Semantic Search Over Dashcam Footage Using Gemini Embedding 2</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Thu, 26 Mar 2026 09:59:49 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/sentrysearch-semantic-search-over-dashcam-footage-using-gemini-embedding-2-2ni8</link>
      <guid>https://dev.to/arshkharbanda2010/sentrysearch-semantic-search-over-dashcam-footage-using-gemini-embedding-2-2ni8</guid>
      <description>&lt;h1&gt;
  
  
  SentrySearch: Semantic Search Over Dashcam Footage Using Gemini Embedding 2
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Scrubbing through hours of dashcam footage to find one specific moment is exactly as tedious as it sounds. You remember &lt;em&gt;something&lt;/em&gt; happened — a car cut you off, someone ran a red light — but now you're stuck fast-forwarding through gigabytes of MP4 files like it's 2003.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SentrySearch&lt;/strong&gt; solves this. It's an open-source Python CLI that lets you search raw video files in plain English. Type what you're looking for, get a trimmed clip back.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sentrysearch search &lt;span class="s2"&gt;"red truck running a stop sign"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is SentrySearch?
&lt;/h2&gt;

&lt;p&gt;SentrySearch is a command-line tool built by &lt;a href="https://github.com/ssrajadh/sentrysearch" rel="noopener noreferrer"&gt;@ssrajadh&lt;/a&gt; that brings semantic search to any folder of MP4 files. It was originally built for Tesla Sentry Mode footage (hence the name), but it works with any dashcam or video library.&lt;/p&gt;

&lt;p&gt;The core idea:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Index&lt;/strong&gt; your footage once&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search&lt;/strong&gt; it with natural language queries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get back&lt;/strong&gt; an auto-trimmed clip of the matching moment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No transcriptions. No frame captioning. No OCR. Just raw video → vectors → search.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works: The Technical Core
&lt;/h2&gt;

&lt;p&gt;The secret sauce is &lt;strong&gt;Google's Gemini Embedding 2&lt;/strong&gt; — the first natively multimodal embedding model that maps text, images, audio, and video into a single unified vector space.&lt;/p&gt;

&lt;p&gt;Here's what that means in practice:&lt;/p&gt;

&lt;p&gt;When you search for &lt;em&gt;"car cutting me off at an intersection"&lt;/em&gt;, Gemini converts that text into a 768-dimensional vector. It can also convert a 30-second video clip into a vector in that &lt;strong&gt;same space&lt;/strong&gt;. So text and video become directly comparable — no intermediate step required.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Pipeline
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MP4 Files → ffmpeg chunking → Gemini video embeddings → ChromaDB (local vector store)
                                                              ↓
                                              Text query → Gemini text embedding → cosine similarity → top match → trimmed clip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step by step:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Chunking&lt;/strong&gt; — ffmpeg splits each MP4 into overlapping 30-second chunks (configurable). Overlap ensures events that span chunk boundaries aren't missed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Still-frame skipping&lt;/strong&gt; — chunks with no meaningful visual change (parked car, nothing happening) are skipped automatically. This saves API calls and reduces cost.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Embedding&lt;/strong&gt; — each chunk is uploaded to the Gemini Embedding API, which processes exactly 1 frame per second and returns a dense vector.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Storage&lt;/strong&gt; — vectors are stored in a local ChromaDB database alongside metadata (source file, timestamp offset).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Search&lt;/strong&gt; — your query is embedded as text into the same vector space, matched via cosine similarity, and the top result is trimmed from the original file.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Gemini Embedding 2: The Breakthrough That Makes This Possible
&lt;/h2&gt;

&lt;p&gt;Before Gemini Embedding 2, building something like SentrySearch would require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running a vision model on each frame to generate captions&lt;/li&gt;
&lt;li&gt;Embedding those captions as text&lt;/li&gt;
&lt;li&gt;Hoping the captions captured what you actually care about&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's slow, lossy, and expensive.&lt;/p&gt;

&lt;p&gt;Gemini Embedding 2 eliminates the middleman. It's Google's first model where video, text, images, audio, and PDFs all project into a &lt;strong&gt;single joint embedding space&lt;/strong&gt;. A text query is directly comparable to a video clip at the vector level.&lt;/p&gt;

&lt;p&gt;This is what makes sub-second semantic search over hours of footage practical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key specs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;768-dimensional&lt;/strong&gt; vectors (search mode)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native video support&lt;/strong&gt; — 1 frame/second processed regardless of source FPS&lt;/li&gt;
&lt;li&gt;Available via Gemini API and Vertex AI&lt;/li&gt;
&lt;li&gt;Works with LangChain, LlamaIndex, Haystack, ChromaDB, Qdrant, Weaviate&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;ffmpeg (or let it use bundled &lt;code&gt;imageio-ffmpeg&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Gemini API key (free tier available at &lt;a href="https://aistudio.google.com/apikey" rel="noopener noreferrer"&gt;aistudio.google.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Install
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ssrajadh/sentrysearch.git
&lt;span class="nb"&gt;cd &lt;/span&gt;sentrysearch
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sentrysearch init
&lt;span class="c"&gt;# Prompts for your Gemini API key, writes to .env, validates with a test embedding&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Index Your Footage
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sentrysearch index /path/to/dashcam/footage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;Indexing file 1/3: front_2024-01-15_14-30.mp4 [chunk 1/4]
Indexing file 1/3: front_2024-01-15_14-30.mp4 [chunk 2/4]
&lt;/span&gt;&lt;span class="c"&gt;...
&lt;/span&gt;&lt;span class="go"&gt;Indexed 12 new chunks from 3 files. Total: 12 chunks from 3 files.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Search
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sentrysearch search &lt;span class="s2"&gt;"red truck running a stop sign"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#1 [0.87] front_2024-01-15_14-30.mp4 @ 02:15-02:45
#2 [0.74] left_2024-01-15_14-30.mp4 @ 02:10-02:40
#3 [0.61] front_2024-01-20_09-15.mp4 @ 00:30-01:00

Saved clip: ./match_front_2024-01-15_14-30_02m15s-02m45s.mp4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Tesla Dashcam Overlay (Bonus Feature)
&lt;/h2&gt;

&lt;p&gt;For Tesla owners, SentrySearch can burn speed, GPS location, and timestamp directly onto your trimmed clips:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sentrysearch search &lt;span class="s2"&gt;"car cutting me off"&lt;/span&gt; &lt;span class="nt"&gt;--overlay&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This reads SEI metadata embedded in Tesla dashcam files and renders a HUD showing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed (MPH)&lt;/li&gt;
&lt;li&gt;Date and time&lt;/li&gt;
&lt;li&gt;City and road name (via OpenStreetMap reverse geocoding)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Requires Tesla firmware 2025.44.25+ and HW3+.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;".[tesla]"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Pricing: Is It Practical?
&lt;/h2&gt;

&lt;p&gt;Indexing 1 hour of footage costs approximately &lt;strong&gt;$2.84&lt;/strong&gt; with Gemini's embedding API at default settings (30s chunks, 5s overlap).&lt;/p&gt;

&lt;p&gt;Breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 hour = 3,600 seconds → 3,600 frames at $0.00079/frame = ~$2.84&lt;/li&gt;
&lt;li&gt;Still-frame skipping can cut this significantly for parked/security footage&lt;/li&gt;
&lt;li&gt;Search queries cost almost nothing (text embeddings only)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cost optimization levers:&lt;/strong&gt;&lt;br&gt;
| Option | Effect |&lt;br&gt;
|--------|--------|&lt;br&gt;
| &lt;code&gt;--chunk-duration 60&lt;/code&gt; | Fewer chunks = fewer API calls |&lt;br&gt;
| &lt;code&gt;--overlap 0&lt;/code&gt; | No overlap = minimum chunks |&lt;br&gt;
| Still-frame skipping (default ON) | Skips idle footage = direct savings |&lt;br&gt;
| &lt;code&gt;--no-preprocess&lt;/code&gt; | Raw chunks (no ffmpeg downscaling) |&lt;/p&gt;




&lt;h2&gt;
  
  
  Limitations &amp;amp; Honest Caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chunk boundary problem&lt;/strong&gt; — events that span two chunks may not match perfectly. Overlapping windows help, but aren't perfect.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini Embedding 2 is in preview&lt;/strong&gt; — API behavior and pricing may change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No local model option&lt;/strong&gt; — currently requires Gemini API. The community is watching for open-source multimodal embedding models to reach this quality level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Driving footage only for Tesla overlay&lt;/strong&gt; — SEI telemetry isn't present in parked/Sentry Mode clips.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Bigger Picture: Multimodal RAG Is Here
&lt;/h2&gt;

&lt;p&gt;SentrySearch is a clean, practical example of what becomes possible when embedding models go truly multimodal.&lt;/p&gt;

&lt;p&gt;The same architecture can apply to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Security camera footage&lt;/strong&gt; — search hours of CCTV with natural language&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sports video&lt;/strong&gt; — find specific plays or moments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meeting recordings&lt;/strong&gt; — semantic search without transcription&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medical imaging&lt;/strong&gt; — cross-modal retrieval across reports and scans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We're entering an era where the traditional RAG pipeline (chunk text → embed → retrieve) expands to cover every modality. Gemini Embedding 2 is the first production model that makes this real with video.&lt;/p&gt;

&lt;p&gt;SentrySearch is a sharp, well-executed proof of concept. And it ships today.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ssrajadh/sentrysearch" rel="noopener noreferrer"&gt;github.com/ssrajadh/sentrysearch&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini Embedding 2 docs:&lt;/strong&gt; &lt;a href="https://ai.google.dev/gemini-api/docs/models/gemini-embedding-2-preview" rel="noopener noreferrer"&gt;ai.google.dev/gemini-api/docs/models/gemini-embedding-2-preview&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HN discussion:&lt;/strong&gt; &lt;a href="https://news.ycombinator.com/item?id=47427193" rel="noopener noreferrer"&gt;news.ycombinator.com/item?id=47427193&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini API key:&lt;/strong&gt; &lt;a href="https://aistudio.google.com/apikey" rel="noopener noreferrer"&gt;aistudio.google.com/apikey&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Real-Time Block Computing: Track Physical Objects &amp; Bounce Digital Elements Off Them</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Tue, 24 Mar 2026 18:43:07 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/real-time-block-computing-track-physical-objects-bounce-digital-elements-off-them-10ld</link>
      <guid>https://dev.to/arshkharbanda2010/real-time-block-computing-track-physical-objects-bounce-digital-elements-off-them-10ld</guid>
      <description>&lt;h1&gt;
  
  
  Real-Time Block Computing: Track Physical Objects &amp;amp; Bounce Digital Elements Off Them
&lt;/h1&gt;

&lt;p&gt;How @bongyunng's viral OpenCV demo works — real-time physical object tracking with digital physics simulation. Full code walkthrough + the spatial computing context.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Inspired by &lt;a href="https://www.instagram.com/reel/DWRBFoTkdIY/" rel="noopener noreferrer"&gt;@bongyunng's viral Instagram demo&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;What if your screen wasn't a window into a digital world — but a surface where digital and physical coexist, interact, and respond to each other in real time?&lt;/p&gt;

&lt;p&gt;That's exactly what developer &lt;strong&gt;@bongyunng&lt;/strong&gt; demonstrated in a recent viral reel: a real-time "Block Computing" programme built from scratch that &lt;strong&gt;tracks physical objects through a camera feed and bounces digital elements off them&lt;/strong&gt; — live, frame by frame.&lt;/p&gt;

&lt;p&gt;No AR headset. No Unity engine. Just OpenCV, Python, and a deep understanding of how digital and physical can meet.&lt;/p&gt;

&lt;p&gt;This post breaks down every concept behind that demo: how real-time object tracking works, how physics simulation is layered on top, and why this sits at the cutting edge of spatial computing in 2026.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is "Block Computing" in This Context?
&lt;/h2&gt;

&lt;p&gt;The term &lt;strong&gt;block computing&lt;/strong&gt; here refers to treating physical objects as &lt;strong&gt;computational blocks&lt;/strong&gt; — discrete, trackable units that the system processes frame-by-frame. Each physical object becomes a block of data: its position, velocity, bounding box, and surface normal.&lt;/p&gt;

&lt;p&gt;The programme computes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Where&lt;/strong&gt; the object is (detection + tracking)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How it's oriented&lt;/strong&gt; (surface normal estimation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What digital element should collide&lt;/strong&gt; with it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How that element should react&lt;/strong&gt; (physics response — bounce, deflect, slide)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is fundamentally different from traditional AR, which &lt;em&gt;overlays&lt;/em&gt; digital elements. Here, the digital elements have &lt;strong&gt;physics awareness&lt;/strong&gt; — they respond to physical geometry.&lt;/p&gt;




&lt;h2&gt;
  
  
  Core Technology: OpenCV for Real-Time Object Tracking
&lt;/h2&gt;

&lt;p&gt;OpenCV (Open Source Computer Vision Library) is the backbone. Here's what the pipeline looks like:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Object Detection
&lt;/h3&gt;

&lt;p&gt;Using background subtraction or YOLOv8, the programme identifies physical objects in each frame:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;

&lt;span class="n"&gt;bg_subtractor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createBackgroundSubtractorMOG2&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;cap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;VideoCapture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;ret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;fg_mask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bg_subtractor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;contours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findContours&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fg_mask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RETR_EXTERNAL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CHAIN_APPROX_SIMPLE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;contours&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;contourArea&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cnt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;boundingRect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cnt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Object Tracking
&lt;/h3&gt;

&lt;p&gt;Once detected, OpenCV's CSRT tracker maintains identity across frames without re-running expensive detection every frame:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;tracker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TrackerCSRT_create&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;tracker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bounding_box&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# In loop:
&lt;/span&gt;&lt;span class="n"&gt;success&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;box&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tracker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSRT&lt;/strong&gt; = best for accuracy. &lt;strong&gt;KCF&lt;/strong&gt; = best for speed. For multi-object, use &lt;strong&gt;DeepSORT&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Real-Time Performance
&lt;/h3&gt;

&lt;p&gt;Key optimizations to hit 30+ FPS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downscale input for detection, upscale for render&lt;/li&gt;
&lt;li&gt;Skip detection every N frames (track-only between detections)&lt;/li&gt;
&lt;li&gt;GPU acceleration via CUDA-enabled OpenCV builds&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Physics Layer: Making Digital Elements Bounce
&lt;/h2&gt;

&lt;p&gt;Tracking is step one. Making digital elements &lt;em&gt;react&lt;/em&gt; to physical objects is where it gets interesting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Collision Detection + Response
&lt;/h3&gt;

&lt;p&gt;Each frame:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Update digital element: &lt;code&gt;pos += velocity * dt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check collision with physical object bounds&lt;/li&gt;
&lt;li&gt;Compute reflection vector&lt;/li&gt;
&lt;li&gt;Apply: &lt;code&gt;velocity = velocity - 2 * dot(velocity, normal) * normal&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;reflect_velocity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;velocity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;surface_normal&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;normal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;surface_normal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;normal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;normal&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;linalg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;normal&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;dot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;velocity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;normal&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;velocity&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;dot&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;normal&lt;/span&gt;

&lt;span class="n"&gt;ball_velocity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;surface_normal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# upward surface
&lt;/span&gt;&lt;span class="n"&gt;new_velocity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;reflect_velocity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_velocity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;surface_normal&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Rendering Digital Elements
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Digital ball with glow effect
&lt;/span&gt;&lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;circle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_y&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;overlay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;zeros_like&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;circle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;overlay&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_y&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;blurred&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GaussianBlur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;overlay&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addWeighted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blurred&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Why This Matters: Spatial Computing in 2026
&lt;/h2&gt;

&lt;p&gt;This demo is a hands-on proof of concept for &lt;strong&gt;the convergence of physical and digital worlds&lt;/strong&gt; — one of the defining tech trends of 2026.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Bigger Trend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Physical AI&lt;/strong&gt;: AI systems that understand and operate in 3D physical environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AR/MR headsets&lt;/strong&gt;: Apple Vision Pro, Meta Quest making spatial interaction mainstream&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time physics&lt;/strong&gt;: Digital objects that cast accurate shadows, occlude behind physical surfaces, respond to real materials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What's remarkable: this achieves the essence of spatial computing with &lt;strong&gt;just a webcam and Python&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real Applications
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Education&lt;/td&gt;
&lt;td&gt;Physics simulations with physical desk props&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gaming&lt;/td&gt;
&lt;td&gt;No-controller games using body + real objects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design&lt;/td&gt;
&lt;td&gt;Visualize digital components on physical prototypes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Robotics&lt;/td&gt;
&lt;td&gt;Navigation pipelines using the same tracking stack&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Industrial AR&lt;/td&gt;
&lt;td&gt;Overlay instructions onto physical machinery&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Full Minimal Demo: Build It Yourself
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;opencv-python numpy
&lt;span class="c"&gt;# Optional for better detection:&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;ultralytics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

&lt;span class="n"&gt;ball_pos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mf"&gt;320.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;100.0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;ball_vel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mf"&gt;4.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;ball_radius&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;

&lt;span class="n"&gt;cap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;VideoCapture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;bg_sub&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createBackgroundSubtractorMOG2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;history&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;varThreshold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;ret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;ret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="n"&gt;fg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bg_sub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;fg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;morphologyEx&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MORPH_OPEN&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ones&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;uint8&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="n"&gt;contours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findContours&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RETR_EXTERNAL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CHAIN_APPROX_SIMPLE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;obstacles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;contours&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;contourArea&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cnt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;boundingRect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cnt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;obstacles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;cw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
            &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;cw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;ch&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Update physics
&lt;/span&gt;    &lt;span class="n"&gt;ball_pos&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;ball_vel&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;ball_pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;ball_pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ball_vel&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;ball_pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;ball_pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ball_vel&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="c1"&gt;# Obstacle collision
&lt;/span&gt;    &lt;span class="nf"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;obstacles&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;bx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;bx&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;x2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;y1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;y2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;ball_vel&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;circle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ball_pos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])),&lt;/span&gt; &lt;span class="n"&gt;ball_radius&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;imshow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Block Computing&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;frame&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;waitKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFF&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nf"&gt;ord&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="k"&gt;break&lt;/span&gt;

&lt;span class="n"&gt;cap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;release&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;cv2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;destroyAllWindows&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From here, layer in YOLOv8 for precise detection, multiple physics objects, surface normal estimation with depth sensors, and GPU rendering via OpenGL.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;@bongyunng's demo is more than a cool visual trick. It's a proof of concept for &lt;strong&gt;accessible spatial computing&lt;/strong&gt; — you don't need a $3,500 headset to make digital and physical worlds interact meaningfully.&lt;/p&gt;

&lt;p&gt;With OpenCV, Python, and physics simulation, you can build systems where the digital world &lt;em&gt;knows&lt;/em&gt; about the physical world and responds in real-time.&lt;/p&gt;

&lt;p&gt;Start with a webcam. Start with OpenCV. Start with a bouncing ball.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opencv</category>
      <category>computervision</category>
      <category>python</category>
      <category>spatialcomputing</category>
    </item>
    <item>
      <title>RuFlow (Ruflo): The Multi-Agent Claude AI Orchestrator That Slashes API Costs by 75%</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Mon, 23 Mar 2026 13:40:11 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/ruflow-ruflo-the-multi-agent-claude-ai-orchestrator-that-slashes-api-costs-by-75-2nmc</link>
      <guid>https://dev.to/arshkharbanda2010/ruflow-ruflo-the-multi-agent-claude-ai-orchestrator-that-slashes-api-costs-by-75-2nmc</guid>
      <description>&lt;h1&gt;
  
  
  RuFlow (Ruflo): The Multi-Agent Claude AI Orchestrator That Slashes API Costs by 75%
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Ruflo (formerly Claude Flow) is an open-source platform that turns Claude Code into a 60+ agent swarm — one agent plans, another codes, another tests, another checks security — all running in parallel, sharing memory, and cutting Claude API costs by up to 75%.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What Is Ruflo?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ruflo&lt;/strong&gt; (also called &lt;strong&gt;RuFlow&lt;/strong&gt; or &lt;strong&gt;Claude Flow&lt;/strong&gt;) is an enterprise-grade, open-source AI agent orchestration platform built specifically for Claude. It transforms a single Claude Code instance into a &lt;strong&gt;distributed multi-agent development environment&lt;/strong&gt; — a swarm of specialized AI agents coordinating in parallel to build, test, and ship software faster than any single-agent workflow.&lt;/p&gt;

&lt;p&gt;Built by &lt;a href="https://github.com/ruvnet" rel="noopener noreferrer"&gt;ruvnet&lt;/a&gt; on GitHub, Ruflo has rapidly become one of the most powerful tools for Claude power users and AI-heavy development teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ruvnet/ruflo" rel="noopener noreferrer"&gt;github.com/ruvnet/ruflo&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Idea: Parallel Agent Swarms
&lt;/h2&gt;

&lt;p&gt;Traditional Claude usage is linear: one prompt → one response → next prompt. That's sequential and slow for complex tasks.&lt;/p&gt;

&lt;p&gt;Ruflo changes the model entirely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One agent plans&lt;/strong&gt; the architecture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One agent writes&lt;/strong&gt; the code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One agent runs&lt;/strong&gt; tests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One agent reviews&lt;/strong&gt; security&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All of them run simultaneously&lt;/strong&gt;, sharing a common memory layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This isn't just faster — it's a fundamentally different way to build software with AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ⚡ 60+ Specialized Agents
&lt;/h3&gt;

&lt;p&gt;Ruflo ships with over 60 pre-built agents, each tuned for a specific role: researcher, coder, tester, security reviewer, DevOps engineer, data analyst, and more. You can also define custom agents with specialized system prompts and tool access.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔀 Parallel Swarm Coordination
&lt;/h3&gt;

&lt;p&gt;Agents don't work one at a time — they fan out across tasks simultaneously using swarm topologies (mesh, hierarchical, pipeline). Complex workflows that would take hours of back-and-forth prompting complete in a fraction of the time.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Shared Memory + Self-Learning (SONA)
&lt;/h3&gt;

&lt;p&gt;All agents share a persistent memory layer. Decisions, patterns, and learnings from previous sessions are stored and reused. The SONA (Self-Organizing Neural Architecture) system means the platform actually improves over time based on what works.&lt;/p&gt;

&lt;h3&gt;
  
  
  💰 75% API Cost Reduction
&lt;/h3&gt;

&lt;p&gt;This is the headline number — and it's real. Ruflo uses a &lt;strong&gt;3-tier intelligent model routing&lt;/strong&gt; system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tier 1: Lightweight models for simple subtasks&lt;/li&gt;
&lt;li&gt;Tier 2: Mid-tier models for moderate complexity&lt;/li&gt;
&lt;li&gt;Tier 3: Full Claude for high-complexity reasoning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, ~75% of tasks are handled by Tiers 1–2, dramatically reducing API spend. Real-world testing reports &lt;strong&gt;2.5x improvement in effective Claude subscription capacity&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🗄️ RuVector — Built-in Vector DB
&lt;/h3&gt;

&lt;p&gt;A native vector database for semantic search across your codebase, documents, and agent memory. No external Pinecone/Weaviate setup needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔧 170+ MCP Tools
&lt;/h3&gt;

&lt;p&gt;Native support for 170+ Model Context Protocol tools — giving agents access to file systems, databases, APIs, browsers, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 84.8% SWE-Bench Score
&lt;/h3&gt;

&lt;p&gt;Ruflo v3 hits 84.8% on SWE-Bench — one of the most demanding software engineering benchmarks. For context, this puts it among the top-performing autonomous coding systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚡ 352x Faster WASM Execution
&lt;/h3&gt;

&lt;p&gt;Compiled to WebAssembly for near-native execution speed on critical path operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works in Practice
&lt;/h2&gt;

&lt;p&gt;Here's a real example of spinning up a swarm to build a REST API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Initialize a mesh swarm with 8 agents&lt;/span&gt;
npx claude-flow coordination swarm-init &lt;span class="nt"&gt;--topology&lt;/span&gt; mesh &lt;span class="nt"&gt;--max-agents&lt;/span&gt; 8

&lt;span class="c"&gt;# Spawn specialized agents&lt;/span&gt;
npx claude-flow coordination agent-spawn &lt;span class="nt"&gt;--type&lt;/span&gt; researcher &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"API Specialist"&lt;/span&gt;
npx claude-flow coordination agent-spawn &lt;span class="nt"&gt;--type&lt;/span&gt; coder &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"Backend Dev"&lt;/span&gt;
npx claude-flow coordination agent-spawn &lt;span class="nt"&gt;--type&lt;/span&gt; tester &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"QA Engineer"&lt;/span&gt;

&lt;span class="c"&gt;# Orchestrate the task across all agents in parallel&lt;/span&gt;
npx claude-flow coordination task-orchestrate &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--task&lt;/span&gt; &lt;span class="s2"&gt;"Build REST API with auth, CRUD endpoints, and tests"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--strategy&lt;/span&gt; parallel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agents divide the work, execute in parallel, and merge results — all with shared context about what each other is doing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Map-Reduce Pattern for Large Tasks
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Analyze 1000 files in parallel, then consolidate&lt;/span&gt;
npx claude-flow task orchestrate &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--task&lt;/span&gt; &lt;span class="s2"&gt;"Analyze 1000 code files"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--strategy&lt;/span&gt; parallel &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--pattern&lt;/span&gt; map-reduce &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--map-agents&lt;/span&gt; &lt;span class="s2"&gt;"code-analyzer:10"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx claude-flow@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Ruflo is fully npm-based and requires no additional infrastructure setup for basic usage. Docker Compose is available for advanced/production deployments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; Claude Code (Claude subscription), Node.js&lt;/p&gt;




&lt;h2&gt;
  
  
  Ruflo vs. Single-Agent Claude
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Single Agent Claude&lt;/th&gt;
&lt;th&gt;Ruflo Multi-Agent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Execution&lt;/td&gt;
&lt;td&gt;Sequential&lt;/td&gt;
&lt;td&gt;Parallel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context window&lt;/td&gt;
&lt;td&gt;Single instance&lt;/td&gt;
&lt;td&gt;Distributed across agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;Session-only&lt;/td&gt;
&lt;td&gt;Persistent + shared&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API cost&lt;/td&gt;
&lt;td&gt;Full price per call&lt;/td&gt;
&lt;td&gt;~75% reduction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex tasks&lt;/td&gt;
&lt;td&gt;Multiple back-and-forth&lt;/td&gt;
&lt;td&gt;Autonomous multi-agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Self-improving (SONA)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;One prompt at a time&lt;/td&gt;
&lt;td&gt;60+ concurrent agents&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Why This Matters for Developers
&lt;/h2&gt;

&lt;p&gt;If you're building anything serious with Claude Code, single-agent workflows are a bottleneck. Ruflo solves:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Context limits&lt;/strong&gt; — Distributed agents can work on larger codebases than a single context window allows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt; — Parallel execution cuts wall-clock time dramatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost&lt;/strong&gt; — 75% API savings is significant at scale&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality&lt;/strong&gt; — Specialized agents (one for code, one for tests, one for security) produce better output than a generalist doing everything&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuity&lt;/strong&gt; — Persistent memory means no re-explaining context each session&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For &lt;strong&gt;DevOps and platform engineering&lt;/strong&gt; specifically, the swarm model maps naturally to CI/CD thinking: parallel jobs, specialized stages, shared state. It's the same mental model, applied to AI-assisted development.&lt;/p&gt;




&lt;h2&gt;
  
  
  DevOps Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure as Code:&lt;/strong&gt; One agent writes Terraform, another validates against compliance rules, another runs &lt;code&gt;terraform plan&lt;/code&gt; — all in parallel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD Pipeline Generation:&lt;/strong&gt; Swarm designs, implements, and tests entire GitLab/Jenkins pipelines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Review:&lt;/strong&gt; Dedicated security agent runs in parallel with code generation — not as an afterthought&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Modernization:&lt;/strong&gt; Fan out across services, migrate each in parallel, consolidate and test&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation:&lt;/strong&gt; Separate documentation agent runs alongside development, keeping docs in sync automatically&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;60+ specialized agents&lt;/strong&gt; out of the box&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;170+ MCP tools&lt;/strong&gt; supported&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;84.8% SWE-Bench&lt;/strong&gt; score (v3)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;75% API cost reduction&lt;/strong&gt; via 3-tier model routing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2.5x effective subscription capacity&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;352x faster&lt;/strong&gt; WASM execution vs. interpreted baseline&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ruvnet/ruflo" rel="noopener noreferrer"&gt;github.com/ruvnet/ruflo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://claude-flow.ruv.io" rel="noopener noreferrer"&gt;claude-flow.ruv.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install:&lt;/strong&gt; &lt;code&gt;npx claude-flow@latest&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/claude-flow" rel="noopener noreferrer"&gt;npmjs.com/package/claude-flow&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Final Take
&lt;/h2&gt;

&lt;p&gt;Ruflo is what happens when you stop treating Claude as a chatbot and start treating it as an infrastructure component. Swarm intelligence, parallel execution, persistent memory, and aggressive cost optimization — it's a production-grade system built by someone who clearly uses Claude Code at serious scale.&lt;/p&gt;

&lt;p&gt;If you're on a Claude subscription and not using multi-agent workflows yet, you're leaving a lot on the table. The 75% cost reduction alone is worth the exploration time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single agent is the past. Swarm is the default.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ruvnet/ruflo" rel="noopener noreferrer"&gt;ruvnet/ruflo&lt;/a&gt; | &lt;strong&gt;npm:&lt;/strong&gt; &lt;code&gt;npx claude-flow@latest&lt;/code&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudeai</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Project N.O.M.A.D.: The Open-Source Offline Survival Computer That Runs Without the Internet</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Mon, 23 Mar 2026 12:20:08 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/project-nomad-the-open-source-offline-survival-computer-that-runs-without-the-internet-20c7</link>
      <guid>https://dev.to/arshkharbanda2010/project-nomad-the-open-source-offline-survival-computer-that-runs-without-the-internet-20c7</guid>
      <description>&lt;h1&gt;
  
  
  Project N.O.M.A.D.: The Open-Source Offline Survival Computer That Runs Without the Internet
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Someone just open-sourced a fully self-contained offline server — AI, Wikipedia, maps, Khan Academy, medical references, and data tools — zero internet required after setup. And it's completely free.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What Is Project N.O.M.A.D.?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;N.O.M.A.D.&lt;/strong&gt; stands for &lt;strong&gt;Node for Offline Media, Archives, and Data&lt;/strong&gt;. It's a free, open-source, self-contained offline knowledge and education server built by &lt;a href="https://github.com/Crosstalk-Solutions/project-nomad" rel="noopener noreferrer"&gt;Crosstalk Solutions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The concept is simple but powerful: &lt;strong&gt;everything you need to stay informed, educated, and operational — even when the internet is completely gone.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Grid failure? No signal in the mountains? Rural area with no connectivity? NOMAD doesn't care. Once installed, it works &lt;strong&gt;forever&lt;/strong&gt; without the internet.&lt;/p&gt;

&lt;p&gt;Similar commercial products cost hundreds of dollars. NOMAD is free.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Inside the Box?
&lt;/h2&gt;

&lt;p&gt;NOMAD ships as a &lt;strong&gt;Docker-based system&lt;/strong&gt; managed through a central web dashboard called the "Command Center." Here's everything you get out of the box:&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Local AI Chat (Ollama + Qdrant RAG)
&lt;/h3&gt;

&lt;p&gt;A fully local AI assistant powered by Ollama — no API keys, no cloud, no data sent anywhere. You can upload your own documents and get semantic search (RAG via Qdrant). Think ChatGPT, but running entirely on your hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  📚 Offline Information Library (Kiwix)
&lt;/h3&gt;

&lt;p&gt;Full Wikipedia archives — searchable and browsable offline. Plus medical references, survival guides, and ebooks. Terabytes of human knowledge available with zero internet.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎓 Education Platform (Kolibri)
&lt;/h3&gt;

&lt;p&gt;Khan Academy courses with progress tracking and multi-user support via Kolibri. Math, science, programming, history — all downloadable and available offline.&lt;/p&gt;

&lt;h3&gt;
  
  
  🗺️ Offline Maps (ProtoMaps)
&lt;/h3&gt;

&lt;p&gt;Download regional maps from OpenStreetMap. Navigate and plan routes with zero cellular connectivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔐 Data Tools (CyberChef)
&lt;/h3&gt;

&lt;p&gt;Encryption, encoding, hashing, and data analysis — built in. Useful for security, forensics, or just working with data in isolated environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  📝 Local Note-Taking (FlatNotes)
&lt;/h3&gt;

&lt;p&gt;Markdown-based local notes. Everything stays on your machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  📊 System Benchmark
&lt;/h3&gt;

&lt;p&gt;A built-in hardware scoring tool with a community leaderboard so you can see how your setup stacks up.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Install It
&lt;/h2&gt;

&lt;p&gt;NOMAD runs on any &lt;strong&gt;Debian-based OS&lt;/strong&gt; (Ubuntu recommended). Installation is fully terminal-based:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/install/install_nomad.sh &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; install_nomad.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;bash install_nomad.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation, open a browser and go to &lt;code&gt;http://localhost:8080&lt;/code&gt; (or &lt;code&gt;http://DEVICE_IP:8080&lt;/code&gt;). Done.&lt;/p&gt;

&lt;p&gt;The Command Center handles all installation, configuration, and updates — no manual Docker config needed (unless you want advanced control).&lt;/p&gt;




&lt;h2&gt;
  
  
  Hardware Requirements
&lt;/h2&gt;

&lt;p&gt;NOMAD itself is lightweight. The AI tools are what demand serious hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  Minimum (Core Features Only)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CPU:&lt;/strong&gt; 2 GHz dual-core&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAM:&lt;/strong&gt; 4 GB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; 5 GB free&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Debian-based (Ubuntu)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Internet:&lt;/strong&gt; Required only during install&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Recommended (For Local AI / LLMs)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CPU:&lt;/strong&gt; AMD Ryzen 7 or Intel Core i7+&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAM:&lt;/strong&gt; 32 GB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU:&lt;/strong&gt; NVIDIA RTX 3060 or AMD equivalent (more VRAM = larger models)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; 250 GB+ SSD&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Ubuntu&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A detailed hardware guide with builds at three price points ($150–$1,000+) is available at &lt;a href="https://www.projectnomad.us/hardware" rel="noopener noreferrer"&gt;projectnomad.us/hardware&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Most tech infrastructure assumes internet connectivity. Cloud AI, SaaS tools, online maps, streaming education platforms — they all break the moment your connection goes down.&lt;/p&gt;

&lt;p&gt;NOMAD is a bet against that assumption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use cases where this shines:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Disaster preparedness&lt;/strong&gt; — grid failures, infrastructure outages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote deployments&lt;/strong&gt; — ships, mountain research stations, rural schools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-first setups&lt;/strong&gt; — zero telemetry, zero cloud, everything local&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline development environments&lt;/strong&gt; — air-gapped networks, secure facilities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-sufficient homesteads&lt;/strong&gt; — off-grid living without sacrificing access to knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is also a &lt;strong&gt;DevOps/infrastructure dream&lt;/strong&gt; for anyone building air-gapped systems. The entire stack is containerized and Docker-managed — you can customize, extend, or integrate it into existing infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack Under the Hood
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Powered By&lt;/th&gt;
&lt;th&gt;What You Get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI Chat&lt;/td&gt;
&lt;td&gt;Ollama + Qdrant&lt;/td&gt;
&lt;td&gt;Local LLMs + RAG semantic search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Information Library&lt;/td&gt;
&lt;td&gt;Kiwix&lt;/td&gt;
&lt;td&gt;Wikipedia, medical refs, ebooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Education&lt;/td&gt;
&lt;td&gt;Kolibri&lt;/td&gt;
&lt;td&gt;Khan Academy courses + progress tracking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maps&lt;/td&gt;
&lt;td&gt;ProtoMaps&lt;/td&gt;
&lt;td&gt;Regional offline maps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Tools&lt;/td&gt;
&lt;td&gt;CyberChef&lt;/td&gt;
&lt;td&gt;Encryption, encoding, hashing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notes&lt;/td&gt;
&lt;td&gt;FlatNotes&lt;/td&gt;
&lt;td&gt;Local markdown note-taking&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How to Get Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Crosstalk-Solutions/project-nomad" rel="noopener noreferrer"&gt;github.com/Crosstalk-Solutions/project-nomad&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.projectnomad.us" rel="noopener noreferrer"&gt;projectnomad.us&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord:&lt;/strong&gt; Join the community via the Discord link on GitHub&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware Guide:&lt;/strong&gt; &lt;a href="https://www.projectnomad.us/hardware" rel="noopener noreferrer"&gt;projectnomad.us/hardware&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Final Take
&lt;/h2&gt;

&lt;p&gt;Project N.O.M.A.D. is one of those rare open-source projects that solves a real problem most people don't think about until it's too late. Internet access is fragile. Knowledge shouldn't be.&lt;/p&gt;

&lt;p&gt;If you're into self-hosting, DevOps, privacy, or just building systems that work under any conditions — this is worth exploring. Install it on an old machine, a Raspberry Pi alternative, or a full GPU rig. Start small with Wikipedia and maps. Add AI when your hardware is ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The internet is optional. Knowledge isn't.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Crosstalk-Solutions/project-nomad" rel="noopener noreferrer"&gt;Crosstalk-Solutions/project-nomad&lt;/a&gt; | &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://www.projectnomad.us" rel="noopener noreferrer"&gt;projectnomad.us&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>selfhosted</category>
      <category>ai</category>
      <category>devops</category>
    </item>
    <item>
      <title>Qwen 3.5: The AI Model That Runs on Your iPhone Without an Internet Connection</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Fri, 20 Mar 2026 17:15:50 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/qwen-35-the-ai-model-that-runs-on-your-iphone-without-an-internet-connection-39jk</link>
      <guid>https://dev.to/arshkharbanda2010/qwen-35-the-ai-model-that-runs-on-your-iphone-without-an-internet-connection-39jk</guid>
      <description>&lt;h1&gt;
  
  
  Qwen 3.5: The AI Model That Runs on Your iPhone Without an Internet Connection
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;The default assumption in AI today is connectivity. Ask a question → request goes to a data center → model processes it → response comes back. Fast, convenient, and entirely dependent on a working internet connection and a third party you're trusting with your data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qwen 3.5&lt;/strong&gt; is part of a different trend: capable AI models small enough to run on your phone, your laptop, your edge device — entirely offline. Alibaba's open-weight model family has been moving steadily in this direction, and with Qwen 3.5, released in February 2026, on-device AI crossed a meaningful capability threshold.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Qwen Family: Context
&lt;/h2&gt;

&lt;p&gt;To understand where Qwen 3.5 sits, it helps to see the progression:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qwen 2.5&lt;/strong&gt; (2024) — Alibaba's strong open-weight series, competitive with Llama 3 at various sizes. Solid general-purpose models from 0.5B to 72B parameters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qwen 3&lt;/strong&gt; (April 2025) — A major leap. Introduced hybrid thinking/non-thinking modes (like DeepSeek's chain-of-thought toggle), scaled up to 235B parameters via Mixture of Experts (MoE), and achieved near-frontier performance on reasoning benchmarks. The 235B MoE model became a serious open-weight competitor to closed models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qwen 3.5&lt;/strong&gt; (February 2026) — The on-device focus. Rather than scaling up, Alibaba optimized down. The key innovation: taking Qwen 3's capabilities and compressing them into sizes that run on consumer hardware — phones, laptops, embedded devices.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Model Sizes
&lt;/h2&gt;

&lt;p&gt;Qwen 3.5 ships in four sizes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Parameters&lt;/th&gt;
&lt;th&gt;Target Hardware&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3.5-0.8B&lt;/td&gt;
&lt;td&gt;0.8 billion&lt;/td&gt;
&lt;td&gt;iPhone 12+, mid-range Android&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3.5-2B&lt;/td&gt;
&lt;td&gt;2 billion&lt;/td&gt;
&lt;td&gt;iPhone 14+, any modern laptop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3.5-4B&lt;/td&gt;
&lt;td&gt;4 billion&lt;/td&gt;
&lt;td&gt;iPhone 15 Pro, M1 MacBook Air&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen 3.5-9B&lt;/td&gt;
&lt;td&gt;9 billion&lt;/td&gt;
&lt;td&gt;M2/M3 MacBook, high-end phones&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 0.8B model runs on an iPhone 12. The 9B model runs on a MacBook Air with an M-series chip. All of them run without an internet connection.&lt;/p&gt;

&lt;p&gt;This isn't a theoretical capability. These models run at usable speeds on the hardware most people already own.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hybrid Thinking Mode
&lt;/h2&gt;

&lt;p&gt;One of Qwen 3.5's key inherited features from Qwen 3 is the &lt;strong&gt;hybrid thinking/non-thinking mode&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;thinking mode&lt;/strong&gt;, the model uses chain-of-thought reasoning — working through problems step by step before producing an answer. This is slower but significantly more accurate for complex reasoning tasks: math, coding, multi-step logic.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;non-thinking mode&lt;/strong&gt;, the model responds immediately without the intermediate reasoning steps. Faster, suitable for conversational use, simple lookups, and tasks where speed matters more than depth.&lt;/p&gt;

&lt;p&gt;The ability to toggle between these modes on-device is meaningful. You get a model that can be fast and lightweight for casual use, and slow-and-thorough when you need it to actually think.&lt;/p&gt;




&lt;h2&gt;
  
  
  Open-Weight: What That Actually Means
&lt;/h2&gt;

&lt;p&gt;"Open-weight" is meaningfully different from "open-source," and it's worth being precise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-weight&lt;/strong&gt; means the model weights are publicly available for download. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the model and run it locally&lt;/li&gt;
&lt;li&gt;Fine-tune it on your own data&lt;/li&gt;
&lt;li&gt;Deploy it on your own infrastructure&lt;/li&gt;
&lt;li&gt;Integrate it into your application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You &lt;strong&gt;cannot&lt;/strong&gt; necessarily see the training code, the data curation process, or the full training recipe — that's where "open-weight" differs from fully open-source.&lt;/p&gt;

&lt;p&gt;But for practical purposes, open-weight is what matters for most developers and most use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No per-token fees&lt;/strong&gt; — run as many tokens as you want, pay only for your own hardware/compute&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No rate limits&lt;/strong&gt; — inference speed is limited only by your hardware&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No privacy concerns&lt;/strong&gt; — data never leaves your device&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No downtime&lt;/strong&gt; — if your internet is down, the model still runs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-tunable&lt;/strong&gt; — adapt the model to your domain, your style, your use case&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For consumer applications, edge deployments, and privacy-sensitive use cases, these properties are transformative.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why On-Device AI Matters Now
&lt;/h2&gt;

&lt;p&gt;The argument for on-device AI has always been there: privacy, latency, offline capability, cost. But for years, the models small enough to run on phones were too limited to be genuinely useful — good enough for autocomplete, not good enough for reasoning.&lt;/p&gt;

&lt;p&gt;Qwen 3.5 is evidence that this gap is closing.&lt;/p&gt;

&lt;p&gt;The 4B model, running locally on a modern phone, can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Answer complex questions with reasonable accuracy&lt;/li&gt;
&lt;li&gt;Write and explain code&lt;/li&gt;
&lt;li&gt;Summarize documents&lt;/li&gt;
&lt;li&gt;Reason through multi-step problems&lt;/li&gt;
&lt;li&gt;Translate between languages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not perfectly. Not at the level of GPT-4o or Claude Sonnet. But well enough for a significant fraction of real tasks — and entirely offline.&lt;/p&gt;

&lt;p&gt;The 9B model on a MacBook is more capable still. For many everyday AI tasks, it's competitive with early-generation frontier models.&lt;/p&gt;




&lt;h2&gt;
  
  
  Running Qwen 3.5 Locally
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Via Ollama (easiest):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull qwen3.5:4b
ollama run qwen3.5:4b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Via llama.cpp:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Download GGUF from HuggingFace&lt;/span&gt;
./llama-cli &lt;span class="nt"&gt;-m&lt;/span&gt; qwen3.5-4b-q4_k_m.gguf &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Your prompt here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Via Transformers:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;

&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Qwen/Qwen3.5-4B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Qwen/Qwen3.5-4B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;On iPhone:&lt;/strong&gt; Via apps like LLM Farm, PocketPal, or MLX-based iOS apps that support Qwen 3.5 weights.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Broader Significance
&lt;/h2&gt;

&lt;p&gt;Qwen 3.5 isn't just a technical achievement — it's a signal about where the AI industry is heading.&lt;/p&gt;

&lt;p&gt;The frontier models (GPT-5, Claude 4, Gemini Ultra) will keep getting larger and more capable. But in parallel, a different optimization is happening: making capable models &lt;em&gt;smaller&lt;/em&gt; and &lt;em&gt;faster&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This second trajectory matters for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developing markets&lt;/strong&gt; — where connectivity is unreliable but smartphones are ubiquitous&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-first applications&lt;/strong&gt; — medical, legal, personal data that can't leave the device&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge computing&lt;/strong&gt; — AI in IoT devices, industrial equipment, vehicles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost reduction&lt;/strong&gt; — enterprise deployments where inference costs matter at scale&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience&lt;/strong&gt; — applications that need to function even when cloud services are down&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alibaba's Qwen series has been consistently impressive and consistently underappreciated in Western tech media. Qwen 3.5 continues that pattern: a serious technical achievement that quietly expands what's possible for developers and users who care about running AI on their own terms.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The question "what AI can I run without internet?" has historically had a depressing answer. Qwen 3.5 changes that.&lt;/p&gt;

&lt;p&gt;A 4B model that reasons well, runs on a modern iPhone, and supports hybrid thinking mode is a qualitatively different kind of tool than the cramped, limited on-device models of two years ago.&lt;/p&gt;

&lt;p&gt;Download it. Run it. See for yourself what offline AI looks like in 2026.&lt;/p&gt;

&lt;p&gt;The model weights are free. The inference is yours. The data stays on your device.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
      <category>tools</category>
    </item>
    <item>
      <title>Contains Studio Agents: A Full AI Department for Claude Code, Ready to Clone</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Fri, 20 Mar 2026 17:15:14 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/contains-studio-agents-a-full-ai-department-for-claude-code-ready-to-clone-nj6</link>
      <guid>https://dev.to/arshkharbanda2010/contains-studio-agents-a-full-ai-department-for-claude-code-ready-to-clone-nj6</guid>
      <description>&lt;h1&gt;
  
  
  Contains Studio Agents: A Full AI Department for Claude Code, Ready to Clone
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Claude Code's sub-agent system is one of the most powerful and underused features in AI-assisted development. Instead of one generalist model handling everything, sub-agents let you route specific tasks to specialized agents — each with their own instructions, context, and expertise.&lt;/p&gt;

&lt;p&gt;The problem is building those agents from scratch. Defining a useful agent requires deep thought about scope, constraints, tool access, and interaction patterns. For most developers, that's a significant upfront investment before you get any value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contains Studio Agents&lt;/strong&gt; eliminates that investment entirely. It's an open-source collection of 30+ production-ready Claude Code sub-agents, organized as a complete AI department, ready to clone and use immediately.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/contains-studio/agents" rel="noopener noreferrer"&gt;contains-studio/agents&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Is
&lt;/h2&gt;

&lt;p&gt;Contains Studio Agents is structured as a set of &lt;strong&gt;departments&lt;/strong&gt; — mirroring how a real company is organized. Instead of one "do everything" agent, you have specialists:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎨 &lt;strong&gt;Design&lt;/strong&gt; — brand guardians, UX designers, visual direction&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;Engineering&lt;/strong&gt; — backend architects, DevOps automators, security reviewers&lt;/li&gt;
&lt;li&gt;📣 &lt;strong&gt;Marketing&lt;/strong&gt; — growth hackers, content strategists, social media specialists&lt;/li&gt;
&lt;li&gt;📦 &lt;strong&gt;Product&lt;/strong&gt; — roadmap planners, feature prioritizers, user research analysts&lt;/li&gt;
&lt;li&gt;📋 &lt;strong&gt;Project Management&lt;/strong&gt; — sprint planners, standup facilitators, dependency trackers&lt;/li&gt;
&lt;li&gt;🏢 &lt;strong&gt;Studio Operations&lt;/strong&gt; — process designers, retrospective facilitators, culture builders&lt;/li&gt;
&lt;li&gt;🧪 &lt;strong&gt;Testing&lt;/strong&gt; — QA engineers, test case generators, coverage analysts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each agent in each department is a &lt;code&gt;.md&lt;/code&gt; file containing a carefully crafted system prompt, tool guidelines, and behavioral constraints.&lt;/p&gt;




&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;Three commands. Done.&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/contains-studio/agents
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; agents/agents/&lt;span class="k"&gt;*&lt;/span&gt; ~/.claude/agents/
&lt;span class="c"&gt;# Restart Claude Code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After restarting, all 30+ agents are available to Claude Code. No configuration, no API keys, no setup wizard.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Agents (Selected)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Engineering Department
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;backend-architect&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Designs scalable backend systems. Focuses on API design, data modeling, service boundaries, and avoiding premature optimization. Ask it to review your architecture and it'll push back on the right things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;devops-automator&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Specializes in CI/CD pipelines, infrastructure as code, container orchestration, and deployment automation. Knows Terraform, GitHub Actions, Docker, and Kubernetes in depth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;security-reviewer&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Reviews code for vulnerabilities, OWASP Top 10, secrets exposure, and dependency risks. Useful for pre-PR security checks without the overhead of a full audit.&lt;/p&gt;
&lt;h3&gt;
  
  
  Marketing Department
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;growth-hacker&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Experiment-driven marketing strategy. A/B tests, acquisition funnels, retention loops. Talks in metrics, not vibes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;tiktok-strategist&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Short-form video content strategy specific to TikTok's algorithm and audience. Knows what hooks work, what formats get completed, what drives follows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;content-strategist&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Long-form content planning — blog calendars, SEO strategy, thought leadership positioning. Works well paired with the brand-guardian agent.&lt;/p&gt;
&lt;h3&gt;
  
  
  Product Department
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;feedback-synthesizer&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Takes raw user feedback (support tickets, reviews, interviews) and synthesizes it into structured insights, themes, and prioritized feature signals. Removes the bias from manual reading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;roadmap-planner&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Helps prioritize features using frameworks like RICE, ICE, and value/effort matrices. Useful when you have 50 backlog items and need to decide what actually ships next.&lt;/p&gt;
&lt;h3&gt;
  
  
  Design Department
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;brand-guardian&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
Enforces brand consistency — voice, tone, visual language, messaging hierarchy. Useful for reviewing copy, designs, or anything that represents your company externally.&lt;/p&gt;


&lt;h2&gt;
  
  
  How It Works in Practice
&lt;/h2&gt;

&lt;p&gt;The elegance of the sub-agent system is that routing is automatic. You don't need to specify which agent handles your request — Claude Code reads your task description and delegates to the most appropriate specialist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example interactions:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Review this PR for security vulnerabilities" → &lt;code&gt;security-reviewer&lt;/code&gt; handles it&lt;/p&gt;

&lt;p&gt;"We have 40 backlog items. Help me decide what ships in Q2." → &lt;code&gt;roadmap-planner&lt;/code&gt; takes over&lt;/p&gt;

&lt;p&gt;"Write three TikTok scripts for our product launch" → &lt;code&gt;tiktok-strategist&lt;/code&gt; activates&lt;/p&gt;

&lt;p&gt;"Our pipeline is taking 20 minutes to build. Find the bottleneck." → &lt;code&gt;devops-automator&lt;/code&gt; digs in&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You describe the work in natural language. The right expert shows up.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why This Matters for AI-Assisted Work
&lt;/h2&gt;

&lt;p&gt;There's a meaningful difference between using AI as a general assistant and using AI through a system of specialists.&lt;/p&gt;

&lt;p&gt;Generalist AI agents tend to give generalist answers. When you ask a single agent to review your architecture, write marketing copy, and plan your testing strategy in the same session, you get reasonable outputs — but nothing that reflects deep domain expertise.&lt;/p&gt;

&lt;p&gt;Specialist agents behave differently. A &lt;code&gt;backend-architect&lt;/code&gt; agent that's been given focused context about system design patterns, tradeoffs, and anti-patterns will produce meaningfully better architecture reviews than a generalist agent asked to "think like a senior backend engineer."&lt;/p&gt;

&lt;p&gt;Contains Studio Agents is a practical demonstration of this. It's not theoretical. You can install it in 3 commands and immediately experience the difference between asking a generalist "review this Terraform" and asking a &lt;code&gt;devops-automator&lt;/code&gt; who's been specifically prompted on IaC best practices.&lt;/p&gt;


&lt;h2&gt;
  
  
  Extending the Collection
&lt;/h2&gt;

&lt;p&gt;The format is intentionally simple. Each agent is a single markdown file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Agent Name&lt;/span&gt;

&lt;span class="gu"&gt;## Role&lt;/span&gt;
[Brief description of the agent's specialty]

&lt;span class="gu"&gt;## Responsibilities&lt;/span&gt;
[What this agent does]

&lt;span class="gu"&gt;## Guidelines&lt;/span&gt;
[How this agent thinks and behaves]

&lt;span class="gu"&gt;## Tools&lt;/span&gt;
[What tools this agent uses]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adding a custom agent is as simple as writing a new &lt;code&gt;.md&lt;/code&gt; file and dropping it in &lt;code&gt;~/.claude/agents/&lt;/code&gt;. The Contains Studio repo gives you a clear template and a high-quality reference set to build from.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Should Use This
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Solo developers&lt;/strong&gt; who want specialist AI reviewers without a team&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Startups&lt;/strong&gt; that need to move fast across engineering, product, and marketing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code users&lt;/strong&gt; looking to get significantly more value from sub-agents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone building their own agent collection&lt;/strong&gt; and wanting a strong starting point&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Contains Studio Agents represents a mature approach to AI-assisted work: not one smart assistant, but a coordinated team of specialists. The open-source release makes that team available to everyone.&lt;/p&gt;

&lt;p&gt;Three commands. Thirty specialists. Start delegating.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/contains-studio/agents" rel="noopener noreferrer"&gt;github.com/contains-studio/agents&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
      <category>tools</category>
    </item>
    <item>
      <title>Karpathy's AutoResearch: What Happens When You Let an AI Run Its Own Experiments Overnight</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Fri, 20 Mar 2026 17:14:39 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/karpathys-autoresearch-what-happens-when-you-let-an-ai-run-its-own-experiments-overnight-485g</link>
      <guid>https://dev.to/arshkharbanda2010/karpathys-autoresearch-what-happens-when-you-let-an-ai-run-its-own-experiments-overnight-485g</guid>
      <description>&lt;h1&gt;
  
  
  Karpathy's AutoResearch: What Happens When You Let an AI Run Its Own Experiments Overnight
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;In March 2026, Andrej Karpathy released something quietly remarkable: &lt;strong&gt;AutoResearch&lt;/strong&gt; — a framework that lets an AI agent autonomously run machine learning experiments, iterate on its own training code, and improve a model overnight without human intervention.&lt;/p&gt;

&lt;p&gt;This isn't a research paper. It's a working system you can clone and run today. And it points to something significant about where AI-assisted research is heading.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/karpathy/autoresearch" rel="noopener noreferrer"&gt;karpathy/autoresearch&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem It Solves
&lt;/h2&gt;

&lt;p&gt;ML research is, fundamentally, an experimental loop:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Have an idea&lt;/li&gt;
&lt;li&gt;Implement it&lt;/li&gt;
&lt;li&gt;Train a model&lt;/li&gt;
&lt;li&gt;Evaluate results&lt;/li&gt;
&lt;li&gt;Keep or discard the change&lt;/li&gt;
&lt;li&gt;Go back to step 1&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This loop is slow because it's human-bottlenecked. Steps 2-5 can take hours per cycle. A researcher might run 5-10 experiments per day if they're focused. Most of that time is waiting — waiting for training runs, waiting for evaluations to complete, waiting to context-switch back to the right mental model.&lt;/p&gt;

&lt;p&gt;AutoResearch removes the human from steps 2-5 entirely. The loop runs overnight. You wake up to 50 completed experiments.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Architecture
&lt;/h2&gt;

&lt;p&gt;AutoResearch is built on &lt;strong&gt;nanochat&lt;/strong&gt; — Karpathy's minimal GPT implementation designed for single-GPU training runs. Each training job takes about 5 minutes, which is the key design constraint: fast enough to run many experiments in a single overnight session.&lt;/p&gt;

&lt;p&gt;The system has exactly three files that matter:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;prepare.py&lt;/code&gt; — Fixed
&lt;/h3&gt;

&lt;p&gt;Data preparation and tokenization. The agent never touches this. The dataset and preprocessing are locked in, giving the agent a stable foundation to experiment from.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;train.py&lt;/code&gt; — Agent's Playground
&lt;/h3&gt;

&lt;p&gt;This is where the agent operates. It contains everything about the model: architecture decisions, hyperparameters, optimizer configuration, learning rate schedules, regularization. The agent reads this file, proposes a modification, implements it, and measures whether it helped.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;program.md&lt;/code&gt; — Your Research Direction
&lt;/h3&gt;

&lt;p&gt;Here's the clever part: &lt;strong&gt;you don't write Python to configure AutoResearch. You write markdown.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;program.md&lt;/code&gt; is the research organization's charter. You describe what you're trying to achieve, what directions seem promising, what constraints to respect. The agent reads this document and uses it to guide its experimental strategy.&lt;/p&gt;

&lt;p&gt;Want to focus on attention mechanisms? Write that in &lt;code&gt;program.md&lt;/code&gt;. Want to avoid changes that increase parameter count beyond a threshold? Write that too. The agent follows it.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the Loop Works
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read program.md → Understand current model state
→ Propose an experiment (hypothesis + implementation)
→ Edit train.py
→ Run training (~5 min)
→ Evaluate validation loss
→ Compare against baseline
→ If improvement: commit change, update baseline
→ If regression: revert, log the failure
→ Record findings in experiment log
→ Repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In a single overnight run, the system executed &lt;strong&gt;50 experiments&lt;/strong&gt;. It explored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Attention head configurations&lt;/li&gt;
&lt;li&gt;Activation functions&lt;/li&gt;
&lt;li&gt;Layer normalization variants&lt;/li&gt;
&lt;li&gt;Learning rate schedule shapes&lt;/li&gt;
&lt;li&gt;Optimizer hyperparameters&lt;/li&gt;
&lt;li&gt;Residual connection patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By morning, it had found configurations that meaningfully improved the baseline model — without a single human keypress after the initial launch.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Actually Means
&lt;/h2&gt;

&lt;p&gt;Let's be precise about what AutoResearch is and isn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It is:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A working demonstration that AI agents can run meaningful ML experiments autonomously&lt;/li&gt;
&lt;li&gt;A practical tool for exploring hyperparameter and architecture spaces overnight&lt;/li&gt;
&lt;li&gt;A framework that treats research direction as a natural-language configuration problem&lt;/li&gt;
&lt;li&gt;Open-source and runnable today on a single GPU&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It isn't:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A system that generates novel research ideas from scratch&lt;/li&gt;
&lt;li&gt;A replacement for human intuition in designing experiments&lt;/li&gt;
&lt;li&gt;A tool that works on arbitrary codebases (it's scoped to nanochat)&lt;/li&gt;
&lt;li&gt;Guaranteed to find improvements — many experiments fail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The honest framing: AutoResearch is an &lt;strong&gt;automated experimental assistant&lt;/strong&gt;, not an autonomous research scientist. You still define the direction. It executes and iterates faster than you can.&lt;/p&gt;




&lt;h2&gt;
  
  
  The &lt;code&gt;program.md&lt;/code&gt; Insight
&lt;/h2&gt;

&lt;p&gt;The design decision to use a markdown file for research configuration is worth dwelling on.&lt;/p&gt;

&lt;p&gt;Most automation systems are configured with code or structured config files. AutoResearch deliberately chooses natural language. This means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Researchers without strong coding skills can participate&lt;/strong&gt; — you describe your research intent in prose, not parameters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The configuration is human-readable&lt;/strong&gt; — you can audit what the agent understood and adjust it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The boundary between researcher and agent is clear&lt;/strong&gt; — humans write intent, agents write code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a small but meaningful step toward AI systems that collaborate with humans at the level of ideas rather than just implementation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/karpathy/autoresearch
&lt;span class="nb"&gt;cd &lt;/span&gt;autoresearch
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# Configure your research direction&lt;/span&gt;
vim program.md

&lt;span class="c"&gt;# Prepare your dataset&lt;/span&gt;
python prepare.py

&lt;span class="c"&gt;# Launch overnight run&lt;/span&gt;
python autorun.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll need a single GPU (the system is designed for consumer hardware — an RTX 3090 or 4090 is ideal). Set it running before you sleep. Review results in the morning.&lt;/p&gt;




&lt;h2&gt;
  
  
  Implications for the Field
&lt;/h2&gt;

&lt;p&gt;AutoResearch is a prototype of something bigger: &lt;strong&gt;AI as an active participant in scientific research&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The current model is: human researchers use AI tools to accelerate their work. The next model is: AI systems run experiments in parallel with human researchers, exploring the search space faster than any single person could.&lt;/p&gt;

&lt;p&gt;We're not at the "AI has research ideas" stage yet. But we're clearly at the "AI can run research experiments faster than humans" stage. AutoResearch makes that concrete and tangible.&lt;/p&gt;

&lt;p&gt;Karpathy has a track record of releasing tools that become foundational — nanoGPT, micrograd, minbpe. AutoResearch feels like another one of those releases: minimal, clearly designed, and pointing at something important.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The most interesting thing about AutoResearch isn't the technical implementation — it's the workflow it enables. Run experiments while you sleep. Wake up to data. Make decisions informed by 50 trials instead of 3.&lt;/p&gt;

&lt;p&gt;That's not a marginal improvement in research productivity. It's a structural shift in what a single researcher can accomplish.&lt;/p&gt;

&lt;p&gt;For anyone doing ML research or experimentation on single-GPU hardware, AutoResearch is worth studying and running. Even if you don't use it directly, the design philosophy — natural language research configuration, autonomous experimental loops, fast iteration over small models — is worth internalizing.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/karpathy/autoresearch" rel="noopener noreferrer"&gt;github.com/karpathy/autoresearch&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
      <category>tools</category>
    </item>
    <item>
      <title>AIChat: One CLI Tool to Rule All Your LLMs</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Fri, 20 Mar 2026 17:14:03 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/aichat-one-cli-tool-to-rule-all-your-llms-2873</link>
      <guid>https://dev.to/arshkharbanda2010/aichat-one-cli-tool-to-rule-all-your-llms-2873</guid>
      <description>&lt;h1&gt;
  
  
  AIChat: One CLI Tool to Rule All Your LLMs
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;If you work with multiple LLMs regularly, you know the friction: different web interfaces, different API clients, different context windows, different ways to attach files. Switching between Claude, GPT-4, Gemini, and a local Ollama model means juggling multiple tools and losing the flow of your terminal-based workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AIChat&lt;/strong&gt; solves this with one elegantly built CLI — 29,000+ GitHub stars, written in Rust, and supporting 20+ LLM providers through a unified interface that actually respects how developers work.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/sigoden/aichat" rel="noopener noreferrer"&gt;sigoden/aichat&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is AIChat?
&lt;/h2&gt;

&lt;p&gt;AIChat is an all-in-one command-line LLM tool that puts every major AI provider — and your local models — behind a single, consistent interface. It's not just a wrapper; it's a fully-featured AI workbench built for the terminal.&lt;/p&gt;

&lt;p&gt;The 29k+ star count on GitHub isn't hype. It's the result of years of steady development, a genuinely useful feature set, and a community of developers who've found it indispensable.&lt;/p&gt;




&lt;h2&gt;
  
  
  20+ Providers, One Config
&lt;/h2&gt;

&lt;p&gt;AIChat supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI&lt;/strong&gt; (GPT-4, GPT-4o, o1, o3)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic&lt;/strong&gt; (Claude 3.5 Sonnet, Claude 3 Opus)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google&lt;/strong&gt; (Gemini 1.5 Pro, Gemini Flash)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; (run any local model — Llama, Mistral, Phi, Qwen)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Groq&lt;/strong&gt; (blazing fast inference)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure OpenAI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS Bedrock&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mistral&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DeepSeek&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perplexity&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OpenRouter&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;And more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One config file. One tool. Switching providers is a flag: &lt;code&gt;aichat -m claude:claude-3-5-sonnet "Explain this code"&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Core Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Shell Assistant 🐚
&lt;/h3&gt;

&lt;p&gt;This might be AIChat's most immediately useful feature for developers. Natural language → shell commands, directly in your terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aichat &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"find all files modified in the last 24 hours larger than 10MB"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AIChat generates the &lt;code&gt;find&lt;/code&gt; command, shows it to you, and asks if you want to run it. It can also run it directly with the &lt;code&gt;--execute&lt;/code&gt; flag. For anyone who spends time Googling obscure shell commands, this alone is worth the install.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chat-REPL 💬
&lt;/h3&gt;

&lt;p&gt;A full interactive chat mode with persistent conversation history, multi-line input, and syntax-highlighted responses. Think of it as a terminal-native ChatGPT that works with any model.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aichat  &lt;span class="c"&gt;# opens the REPL&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside the REPL, you can switch models mid-conversation, attach files, run shell commands, and navigate history — all without leaving the terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  RAG (Retrieval-Augmented Generation) 📚
&lt;/h3&gt;

&lt;p&gt;AIChat has a built-in RAG pipeline. You can create "sessions" that index local files (PDFs, code, docs) and query them with your LLM of choice. No external vector database setup required — it handles chunking, embedding, and retrieval internally.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aichat &lt;span class="nt"&gt;--rag&lt;/span&gt; ./docs/ &lt;span class="s2"&gt;"What does the authentication module do?"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  AI Agents + Function Calling 🤖
&lt;/h3&gt;

&lt;p&gt;AIChat supports function calling across providers that expose it. You can define tools in a YAML config and have the model call them — file operations, web requests, custom scripts. Build lightweight agents that actually do things.&lt;/p&gt;

&lt;h3&gt;
  
  
  Built-in HTTP Server 🌐
&lt;/h3&gt;

&lt;p&gt;AIChat ships with an OpenAI-compatible HTTP server. This means you can point any tool or library that expects an OpenAI endpoint at AIChat — and route requests to whatever model you actually want, including local Ollama models.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aichat serve &lt;span class="nt"&gt;--port&lt;/span&gt; 8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your local code that calls &lt;code&gt;openai.chat.completions.create(...)&lt;/code&gt; now routes to DeepSeek. No code changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  LLM Arena ⚔️
&lt;/h3&gt;

&lt;p&gt;Side-by-side model comparison in the terminal. Send the same prompt to multiple models simultaneously and compare responses. Essential for prompt engineering and model selection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aichat &lt;span class="nt"&gt;--arena&lt;/span&gt; &lt;span class="s2"&gt;"Explain the CAP theorem"&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; gpt-4o &lt;span class="nt"&gt;-m&lt;/span&gt; claude-3-5-sonnet &lt;span class="nt"&gt;-m&lt;/span&gt; gemini-1.5-pro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;macOS (Homebrew):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;aichat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Rust/Cargo:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cargo &lt;span class="nb"&gt;install &lt;/span&gt;aichat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Linux (pre-built binary):&lt;/strong&gt;&lt;br&gt;
Download from &lt;a href="https://github.com/sigoden/aichat/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt; — available for x86_64 and ARM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt; Pre-built binary available via GitHub Releases.&lt;/p&gt;


&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;p&gt;On first run, AIChat creates a config file at &lt;code&gt;~/.config/aichat/config.yaml&lt;/code&gt;. The structure is clean and well-documented:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude:claude-3-5-sonnet&lt;/span&gt;
&lt;span class="na"&gt;clients&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude&lt;/span&gt;
    &lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sk-ant-...&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openai&lt;/span&gt;
    &lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sk-...&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ollama&lt;/span&gt;
    &lt;span class="na"&gt;api_base&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://localhost:11434&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set up once, use forever.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;For developers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quick code review in the terminal: &lt;code&gt;cat main.py | aichat "review this for bugs"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Generate boilerplate: &lt;code&gt;aichat "write a Dockerfile for a Node.js app"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Debug errors: &lt;code&gt;cat error.log | aichat "what's causing this?"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For sysadmins:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shell assistant for complex command generation&lt;/li&gt;
&lt;li&gt;Log analysis with RAG over log files&lt;/li&gt;
&lt;li&gt;Generate Terraform/Ansible configs from natural language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For researchers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-model comparison for evaluation&lt;/li&gt;
&lt;li&gt;RAG over paper PDFs&lt;/li&gt;
&lt;li&gt;Automated pipelines via the HTTP server&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why 29,000 Stars?
&lt;/h2&gt;

&lt;p&gt;AIChat has earned its star count by doing one thing exceptionally well: &lt;strong&gt;respecting developer workflow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It doesn't try to be a web app, a hosted service, or a product with a dashboard. It's a tool — fast, composable, local-first, and configurable. It fits into existing workflows rather than replacing them.&lt;/p&gt;

&lt;p&gt;In a world full of AI tools that want to be platforms, AIChat is content to be a very good hammer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;If you use LLMs and live in the terminal, AIChat belongs in your toolkit. The breadth of provider support, the shell assistant, the built-in HTTP server, and the LLM arena make it genuinely more useful than any single-provider CLI.&lt;/p&gt;

&lt;p&gt;And because it's open-source Rust with active development, it keeps getting better.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;aichat
aichat &lt;span class="s2"&gt;"what can you do?"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find out for yourself.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/sigoden/aichat" rel="noopener noreferrer"&gt;GitHub: sigoden/aichat&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
      <category>tools</category>
    </item>
    <item>
      <title>Spacebot: The Multi-Agent AI Platform Built in Rust for Teams</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Fri, 20 Mar 2026 17:12:47 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/spacebot-the-multi-agent-ai-platform-built-in-rust-for-teams-33f6</link>
      <guid>https://dev.to/arshkharbanda2010/spacebot-the-multi-agent-ai-platform-built-in-rust-for-teams-33f6</guid>
      <description>&lt;h1&gt;
  
  
  Spacebot: The Multi-Agent AI Platform Built in Rust for Teams
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Most AI assistant platforms are built around a single agent and a single conversation. You ask a question, the model answers, the session ends. Simple, stateless, and ultimately limited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spacebot&lt;/strong&gt; takes a fundamentally different approach. It's a &lt;strong&gt;multi-agent AI orchestration platform&lt;/strong&gt; — built in Rust as a single binary — designed for teams that want persistent, context-aware AI infrastructure running alongside their work, not just responding to ad-hoc queries.&lt;/p&gt;




&lt;h2&gt;
  
  
  Built in Rust. Built to Last.
&lt;/h2&gt;

&lt;p&gt;The choice of Rust is a signal. Spacebot isn't another Python wrapper around an LLM API — it's a serious piece of infrastructure built for performance, reliability, and long-term operation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rust + Tokio&lt;/strong&gt; — async runtime for high-throughput, low-latency agent orchestration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite&lt;/strong&gt; — embedded database for persistent storage without external dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LanceDB&lt;/strong&gt; — vector database for semantic memory and embedding search&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastEmbed&lt;/strong&gt; — on-device embedding generation (no external API calls for embeddings)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serenity&lt;/strong&gt; — Discord gateway integration for team-facing interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a single binary that runs everywhere, boots fast, and doesn't require a Kubernetes cluster to operate.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Three-Agent Architecture
&lt;/h2&gt;

&lt;p&gt;Spacebot's most interesting design decision is how it structures agent cognition across three distinct roles:&lt;/p&gt;

&lt;h3&gt;
  
  
  🎭 Face Agent
&lt;/h3&gt;

&lt;p&gt;The user-facing agent. This is the personality your team interacts with — friendly, contextual, and responsive. The Face Agent handles conversation, interprets intent, and coordinates responses. Think of it as the "front desk" of your AI infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 Conscience
&lt;/h3&gt;

&lt;p&gt;An independent thinking fork that runs in parallel to the Face Agent. While the Face Agent is handling the immediate response, the Conscience is evaluating, questioning, and sometimes pushing back. This separation prevents the sycophantic drift common in single-agent systems — the agent that just agrees with everything because it's optimizing for immediate approval.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⚙️ Worker
&lt;/h3&gt;

&lt;p&gt;Pure execution. No personality, no reasoning overhead — just doing the thing. The Worker handles tool calls, API requests, file operations, and any task where speed and reliability matter more than conversational quality.&lt;/p&gt;

&lt;p&gt;This three-layer architecture means Spacebot isn't just answering questions — it's thinking about them from multiple angles while simultaneously acting on them.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Cortex: Memory That Actually Works
&lt;/h2&gt;

&lt;p&gt;The feature that sets Spacebot apart from almost every other platform is &lt;strong&gt;The Cortex&lt;/strong&gt; — a persistent, cross-conversation memory system built on an 8-dimensional memory graph.&lt;/p&gt;

&lt;p&gt;Most AI systems have no memory between sessions. Some have basic summarization. Spacebot has a structured knowledge graph that tracks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facts and entities mentioned across all conversations&lt;/li&gt;
&lt;li&gt;Relationships between topics, people, and projects&lt;/li&gt;
&lt;li&gt;Temporal patterns (what gets asked when, what follows what)&lt;/li&gt;
&lt;li&gt;Team-level context that persists across users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every 60 minutes, the Cortex synthesizes a fresh briefing — a structured summary of what's been discussed, what decisions were made, and what needs attention. This means your AI assistant actually knows what happened yesterday without you having to re-explain it.&lt;/p&gt;

&lt;p&gt;For teams, this is transformative. Instead of every team member bootstrapping context from scratch, Spacebot carries institutional memory.&lt;/p&gt;




&lt;h2&gt;
  
  
  10 LLM Providers, All BYOK
&lt;/h2&gt;

&lt;p&gt;Spacebot supports &lt;strong&gt;10 LLM providers&lt;/strong&gt; out of the box:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI (GPT-4, GPT-4o)&lt;/li&gt;
&lt;li&gt;Anthropic (Claude Sonnet, Claude Opus)&lt;/li&gt;
&lt;li&gt;Google (Gemini)&lt;/li&gt;
&lt;li&gt;Groq&lt;/li&gt;
&lt;li&gt;Mistral&lt;/li&gt;
&lt;li&gt;DeepSeek&lt;/li&gt;
&lt;li&gt;Ollama (local models)&lt;/li&gt;
&lt;li&gt;And more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All plans are &lt;strong&gt;Bring Your Own Key (BYOK)&lt;/strong&gt; — Spacebot never touches your API keys beyond routing requests. You control costs, you choose models, you own the data.&lt;/p&gt;




&lt;h2&gt;
  
  
  OpenClaw Skills Compatibility
&lt;/h2&gt;

&lt;p&gt;Spacebot is compatible with &lt;strong&gt;OpenClaw skills&lt;/strong&gt; — the skill/tool ecosystem built for AI agents running in OpenClaw environments. This means if you've already built custom integrations or automations as OpenClaw skills, they drop straight into Spacebot without modification.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pod&lt;/td&gt;
&lt;td&gt;$29/mo&lt;/td&gt;
&lt;td&gt;Small teams, personal use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outpost&lt;/td&gt;
&lt;td&gt;$59/mo&lt;/td&gt;
&lt;td&gt;Growing teams, more resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nebula&lt;/td&gt;
&lt;td&gt;$129/mo&lt;/td&gt;
&lt;td&gt;Large teams, high-volume&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-host&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Full control via Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All plans are BYOK. The self-hosted option via Docker gives you the full Spacebot experience on your own infrastructure — no subscription required if you're comfortable running your own stack.&lt;/p&gt;




&lt;h2&gt;
  
  
  Self-Hosting
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull spacebot/spacebot:latest
docker run &lt;span class="nt"&gt;-d&lt;/span&gt;   &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_key   &lt;span class="nt"&gt;-v&lt;/span&gt; spacebot_data:/data   &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000   spacebot/spacebot:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The single-binary architecture means there's no complex orchestration setup. One container, one persistent volume, and you're running a full multi-agent AI platform.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Is Spacebot For?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Engineering teams&lt;/strong&gt; that want a persistent AI assistant with real team memory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Startups&lt;/strong&gt; looking for AI infrastructure that scales without rebuilding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosters&lt;/strong&gt; who want control over their AI stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discord-based communities&lt;/strong&gt; that want embedded AI with memory and multi-agent reasoning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Builders&lt;/strong&gt; who value Rust-quality reliability over Python-ecosystem convenience&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;The current generation of AI assistants treats every session as a blank slate. That's fine for consumer apps, but it's a significant limitation for teams doing complex, ongoing work.&lt;/p&gt;

&lt;p&gt;Spacebot's bet is that the next generation of team AI tools will look less like chatbots and more like colleagues — entities with memory, independent thinking, and the ability to coordinate specialized work across multiple execution contexts.&lt;/p&gt;

&lt;p&gt;The three-agent architecture, the Cortex memory system, and the Rust foundation suggest a team that's building for that future rather than optimizing for today's demo.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://spacebot.sh" rel="noopener noreferrer"&gt;spacebot.sh&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
      <category>tools</category>
    </item>
    <item>
      <title>Composio: The Integration Layer Your AI Agents Have Been Waiting For</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Fri, 20 Mar 2026 17:12:41 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/composio-the-integration-layer-your-ai-agents-have-been-waiting-for-5042</link>
      <guid>https://dev.to/arshkharbanda2010/composio-the-integration-layer-your-ai-agents-have-been-waiting-for-5042</guid>
      <description>&lt;h1&gt;
  
  
  Composio: The Integration Layer Your AI Agents Have Been Waiting For
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Building an AI agent in 2025 is surprisingly easy. You pick a model, wire up a few prompts, and you're off. The hard part — the part nobody warns you about — is connecting that agent to the real world.&lt;/p&gt;

&lt;p&gt;Sending an email. Creating a GitHub issue. Updating a Notion page. Syncing a Slack message. Each of these requires OAuth flows, token refresh logic, API-specific quirks, and error handling. Multiply that across 10 apps and suddenly your "simple AI agent" has become a full-time infrastructure project.&lt;/p&gt;

&lt;p&gt;That's the exact problem &lt;strong&gt;Composio&lt;/strong&gt; was built to solve.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Composio?
&lt;/h2&gt;

&lt;p&gt;Composio is an &lt;strong&gt;AI-native integration platform&lt;/strong&gt; that gives your LLMs and agents authenticated, production-ready access to 850+ applications — GitHub, Slack, Notion, Gmail, Jira, Linear, Salesforce, and hundreds more.&lt;/p&gt;

&lt;p&gt;Think of it as the integration layer between your intelligent agent and the world it needs to operate in. Instead of building OAuth flows from scratch or hand-rolling API wrappers, you get a clean, consistent SDK that handles all of it for you.&lt;/p&gt;

&lt;p&gt;The project is open-source (GitHub: &lt;a href="https://github.com/ComposioHQ/composio" rel="noopener noreferrer"&gt;ComposioHQ/composio&lt;/a&gt;), backed by a growing community, and available at &lt;a href="https://composio.dev" rel="noopener noreferrer"&gt;composio.dev&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Problem: Auth Is a Nightmare
&lt;/h2&gt;

&lt;p&gt;Let's be honest about what "connecting an agent to an API" actually involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OAuth 2.0 flows&lt;/strong&gt; — authorization codes, PKCE, redirect URIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token storage&lt;/strong&gt; — securely persisting access/refresh tokens per user&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token refresh&lt;/strong&gt; — silently refreshing before expiry without losing context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scopes management&lt;/strong&gt; — requesting the right permissions upfront&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenant support&lt;/strong&gt; — managing tokens for thousands of users, not just one&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate limiting and retries&lt;/strong&gt; — handling 429s gracefully&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API versioning&lt;/strong&gt; — keeping up with breaking changes in third-party APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Composio handles every single one of these. You just call &lt;code&gt;composio.tools.get("GITHUB")&lt;/code&gt; and get back tools your LLM can immediately use — authenticated, scoped, and ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Managed OAuth 2.0
&lt;/h3&gt;

&lt;p&gt;Composio handles the full auth flow on your behalf. You don't store tokens, you don't write callback handlers — Composio manages connected accounts per user and gives your agent clean, authorized API access.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 850+ Toolkits
&lt;/h3&gt;

&lt;p&gt;From developer tools (GitHub, GitLab, Jira, Linear) to productivity apps (Notion, Google Drive, Calendar) to communication platforms (Slack, Discord, Gmail, Outlook) — if your agent needs to touch it, there's probably a Composio toolkit for it.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Python &amp;amp; TypeScript SDKs
&lt;/h3&gt;

&lt;p&gt;First-class SDKs for both ecosystems. Works natively with LangChain, LlamaIndex, CrewAI, AutoGen, and any framework that accepts tool definitions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;composio_langchain&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ComposioToolSet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Action&lt;/span&gt;

&lt;span class="n"&gt;toolset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;ComposioToolSet&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;toolset&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_tools&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;actions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GITHUB_CREATE_ISSUE&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Your LangChain agent can now create GitHub issues on behalf of authenticated users.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Sandboxed Execution
&lt;/h3&gt;

&lt;p&gt;Actions run in an isolated execution environment, preventing accidental data leakage between users or between agent runs. Critical for multi-tenant production deployments.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. MCP Support
&lt;/h3&gt;

&lt;p&gt;Composio supports the &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;, meaning it integrates seamlessly with Claude via the MCP tool-use interface — no custom wiring required.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Observability
&lt;/h3&gt;

&lt;p&gt;Every tool call is logged. You can inspect inputs, outputs, latencies, and errors — giving you the visibility needed to debug agent behavior in production.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Compares
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Composio&lt;/th&gt;
&lt;th&gt;Nango&lt;/th&gt;
&lt;th&gt;Arcade&lt;/th&gt;
&lt;th&gt;LangChain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Integrations&lt;/td&gt;
&lt;td&gt;850+&lt;/td&gt;
&lt;td&gt;500+&lt;/td&gt;
&lt;td&gt;~25&lt;/td&gt;
&lt;td&gt;DIY&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed Auth&lt;/td&gt;
&lt;td&gt;✅ Full OAuth&lt;/td&gt;
&lt;td&gt;✅ Data sync&lt;/td&gt;
&lt;td&gt;✅ Lightweight&lt;/td&gt;
&lt;td&gt;❌ None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent-first SDK&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅ (tools only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP Support&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open Source&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Nango&lt;/strong&gt; is excellent for data synchronization and has strong OAuth support, but it's not primarily designed for LLM agent tool-use. &lt;strong&gt;Arcade&lt;/strong&gt; is slim and MCP-native but limited in scope (25 tools). &lt;strong&gt;LangChain&lt;/strong&gt; gives you the framework but leaves auth entirely to you.&lt;/p&gt;

&lt;p&gt;Composio sits squarely in the intersection of managed auth + agent-native tooling + breadth of integrations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;API Calls&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;20,000/mo&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Growth&lt;/td&gt;
&lt;td&gt;200,000/mo&lt;/td&gt;
&lt;td&gt;$29/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;2,000,000/mo&lt;/td&gt;
&lt;td&gt;$229/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;Contact&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The free tier is genuinely useful for personal projects and prototypes. If you're building production agents at scale, the Growth plan gets you a lot of runway for $29/month.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Should Use Composio?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI agent builders&lt;/strong&gt; who don't want to re-implement OAuth for the 10th time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teams&lt;/strong&gt; building multi-tenant SaaS products with agent capabilities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developers&lt;/strong&gt; using LangChain, CrewAI, AutoGen, or LlamaIndex who need real-world integrations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone using Claude via MCP&lt;/strong&gt; who wants 850+ tools out of the box&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;composio-core composio-langchain
composio login
composio add github  &lt;span class="c"&gt;# walks you through OAuth&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From there, you're one &lt;code&gt;get_tools()&lt;/code&gt; call away from a fully-authorized, production-ready agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The bottleneck in agentic AI isn't intelligence — it's integration. Models are getting smarter fast. But an agent that can reason brilliantly and can't actually &lt;em&gt;do&lt;/em&gt; anything in the real world is just a very expensive chatbot.&lt;/p&gt;

&lt;p&gt;Composio removes that bottleneck. It's the glue layer that turns LLM capability into real-world action — authenticated, observable, and production-grade.&lt;/p&gt;

&lt;p&gt;If you're building agents and you're not using Composio (or something like it), you're probably spending 60% of your time on plumbing that someone else has already built.&lt;/p&gt;

&lt;p&gt;Stop writing OAuth flows. Start building agents.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://composio.dev" rel="noopener noreferrer"&gt;composio.dev&lt;/a&gt; | &lt;a href="https://github.com/ComposioHQ/composio" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
      <category>tools</category>
    </item>
    <item>
      <title>Paperclip: The Open-Source Platform That Lets You Run a Company with AI Agents</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Fri, 20 Mar 2026 17:00:29 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/paperclip-the-open-source-platform-that-lets-you-run-a-company-with-ai-agents-i7b</link>
      <guid>https://dev.to/arshkharbanda2010/paperclip-the-open-source-platform-that-lets-you-run-a-company-with-ai-agents-i7b</guid>
      <description>&lt;p&gt;What if you could hire a CEO, CTO, a team of engineers, and a marketing department — and none of them were human?&lt;/p&gt;

&lt;p&gt;That's exactly what &lt;a href="https://github.com/paperclipai/paperclip" rel="noopener noreferrer"&gt;Paperclip&lt;/a&gt; is designed for. It's an open-source orchestration platform that lets you build and run fully autonomous AI companies. Not just a chatbot. Not just an AI assistant. An actual organization — with an org chart, budgets, goals, reporting lines, and agents doing real work on a schedule.&lt;/p&gt;

&lt;p&gt;The tagline says it all: &lt;em&gt;"If OpenClaw is an employee, Paperclip is the company."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Paperclip Solves
&lt;/h2&gt;

&lt;p&gt;Here's a scenario that's becoming increasingly common: You have 15 AI agents running simultaneously — Claude Code sessions, Codex workers, OpenClaw agents. Each one is capable of doing serious work autonomously. But there's no coordination. No shared context. No way to know what any of them are actually doing at a given moment.&lt;/p&gt;

&lt;p&gt;That was the exact situation Paperclip's creator found himself in. He was running an automated hedge fund and had 20 Claude Code tabs open. He couldn't remember what half of them were doing, and there was no system keeping them aligned toward a common goal. Paperclip was his solution — and he open-sourced it.&lt;/p&gt;

&lt;p&gt;The AI worker is no longer the bottleneck. Individual agents are capable enough. The bottleneck is &lt;strong&gt;coordination&lt;/strong&gt; — and that's exactly what Paperclip solves.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Paperclip is a Node.js server with a React dashboard. You self-host it. Setup is a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx paperclipai onboard &lt;span class="nt"&gt;--yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From there, the workflow is three steps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Define the goal&lt;/strong&gt;&lt;br&gt;
Something like: &lt;em&gt;"Build the #1 AI note-taking app to $1M MRR."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Hire the team&lt;/strong&gt;&lt;br&gt;
You assign AI agents to roles — CEO, CTO, engineers, designers, marketers. Each agent can be from any provider: OpenClaw, Claude, Codex, Cursor, even a plain Bash script. The rule is simple: &lt;em&gt;if it can receive a heartbeat, it's hired.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Approve and run&lt;/strong&gt;&lt;br&gt;
Review the CEO agent's strategy. Set monthly token budgets per agent. Hit go. The agents work autonomously, delegate to each other, and report back through the org chart.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Architecture Under the Hood
&lt;/h2&gt;

&lt;p&gt;What makes Paperclip more than a fancy task manager is how it handles the hard problems of multi-agent coordination:&lt;/p&gt;
&lt;h3&gt;
  
  
  Goal Alignment
&lt;/h3&gt;

&lt;p&gt;Every piece of work — from a low-level coding task to a high-level project goal — traces back to the company mission. When an agent picks up a task, it knows not just &lt;em&gt;what&lt;/em&gt; to do but &lt;em&gt;why&lt;/em&gt; it matters. Context flows down the org chart automatically.&lt;/p&gt;
&lt;h3&gt;
  
  
  Heartbeats
&lt;/h3&gt;

&lt;p&gt;Agents don't sit idle waiting for instructions. They wake up on a schedule, check their work queue, and act. Delegation flows up and down the org chart automatically — a task assigned to the CTO gets broken down and delegated to the engineering team without you touching anything.&lt;/p&gt;
&lt;h3&gt;
  
  
  Cost Control
&lt;/h3&gt;

&lt;p&gt;Every agent has a monthly token budget. When they hit the limit, they stop. No runaway loops. No surprise bills. You can see cost breakdowns per agent, per task, per project.&lt;/p&gt;
&lt;h3&gt;
  
  
  Org Chart + Governance
&lt;/h3&gt;

&lt;p&gt;Agents have titles, roles, reporting lines, and a boss. You're the board. You can approve hires, override strategy, pause any agent, or terminate one at any time. Full audit log of every decision.&lt;/p&gt;
&lt;h3&gt;
  
  
  Ticket System
&lt;/h3&gt;

&lt;p&gt;Every conversation is threaded to a task. Sessions persist across reboots — so when an agent wakes up for its next heartbeat, it picks up exactly where it left off.&lt;/p&gt;
&lt;h3&gt;
  
  
  Multi-Company Support
&lt;/h3&gt;

&lt;p&gt;One Paperclip deployment can manage multiple companies with complete data isolation.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Concrete Example
&lt;/h2&gt;

&lt;p&gt;Here's what a Paperclip company structure might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Company Mission: Make $2M ARR with the #1 AI note-taking app

CEO → Claude          ($60/mo budget)
├── CMO → OpenClaw    ($40/mo budget)  
│   ├── Content Writer (every 4h)
│   ├── SEO Analyst    (every 8h)
│   └── Social Manager (every 12h)
├── CTO → Cursor      ($50/mo budget)
│   ├── Coder 1 → Codex
│   └── Coder 2 → Claude
└── COO → Claude      ($30/mo budget)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Coming Soon: Clipmart
&lt;/h2&gt;

&lt;p&gt;Paperclip has a marketplace in the pipeline — &lt;strong&gt;Clipmart&lt;/strong&gt; — where you can download and run an entire pre-built company with one click. Full org structures, agent configs, and skills bundled as templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where It Falls Short
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted&lt;/strong&gt; — you manage the infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent quality still matters&lt;/strong&gt; — Paperclip handles coordination, not capability&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex workflows need careful org design&lt;/strong&gt; — heartbeat intervals and reporting structure require experimentation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community is early-stage&lt;/strong&gt; — ecosystem of pre-built templates is still thin&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who Should Be Looking at This
&lt;/h2&gt;

&lt;p&gt;If you're already running multiple AI agents for development, content, research, or business automation — Paperclip is the coordination layer that's been missing.&lt;/p&gt;

&lt;p&gt;The individual AI worker is solved. The organizational layer is just getting started.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/paperclipai/paperclip" rel="noopener noreferrer"&gt;https://github.com/paperclipai/paperclip&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Docs: &lt;a href="https://paperclip.ing/docs" rel="noopener noreferrer"&gt;https://paperclip.ing/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Quickstart: &lt;code&gt;npx paperclipai onboard --yes&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Written by Arshdeep Singh&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Composio: The Integration Layer Your AI Agent Actually Needs</title>
      <dc:creator>Arshdeep Singh</dc:creator>
      <pubDate>Mon, 16 Mar 2026 13:46:31 +0000</pubDate>
      <link>https://dev.to/arshkharbanda2010/composio-the-integration-layer-your-ai-agent-actually-needs-1o5h</link>
      <guid>https://dev.to/arshkharbanda2010/composio-the-integration-layer-your-ai-agent-actually-needs-1o5h</guid>
      <description>&lt;p&gt;Building an AI agent is easy. Connecting it to Gmail, Slack, GitHub, and Salesforce with proper OAuth and error handling? That's where most projects die.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Composio?
&lt;/h2&gt;

&lt;p&gt;Composio is AI-native integration middleware — it sits between your agent and the outside world. 850+ pre-built connectors, fully managed OAuth, sandboxed execution, and native observability.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Problem It Solves
&lt;/h2&gt;

&lt;p&gt;Every API integration is its own project: different auth schemes, different error formats, different rate limits. Your agent's context window fills up with tool definitions. Composio abstracts all of this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;850+ Agent-Optimized Toolkits&lt;/strong&gt; — GitHub, Slack, Gmail, Notion, Jira, HubSpot, and hundreds more. Each connector is built for LLM consumption — descriptions crafted so models understand when and how to use each action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fully Managed Auth&lt;/strong&gt; — OAuth 2.0 end-to-end. Token storage, refresh cycles, scope management. Triggered inline when needed, not pre-configured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sandboxed Execution&lt;/strong&gt; — Remote ephemeral sandboxes. Multi-step workflows with sub-LLM invocations. Large responses stored on a navigable filesystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Native Observability&lt;/strong&gt; — Every tool call logged and traceable. Replay exactly what happened when your agent does something unexpected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;composio&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Composio&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Composio&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;github_create_issue&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;owner&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;my-org&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;repo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;my-repo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Feature request from agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;entity_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user-123&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Free: 20K tool calls/month&lt;/li&gt;
&lt;li&gt;$29/mo: 200K calls, email support&lt;/li&gt;
&lt;li&gt;$229/mo: 2M calls, Slack support&lt;/li&gt;
&lt;li&gt;Enterprise: Custom, SOC-2, VPC&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Composio vs Alternatives
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Composio&lt;/th&gt;
&lt;th&gt;Nango&lt;/th&gt;
&lt;th&gt;Arcade&lt;/th&gt;
&lt;th&gt;LangChain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Connectors&lt;/td&gt;
&lt;td&gt;850+&lt;/td&gt;
&lt;td&gt;500+&lt;/td&gt;
&lt;td&gt;~25&lt;/td&gt;
&lt;td&gt;Community&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed Auth&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌ BYO&lt;/td&gt;
&lt;td&gt;❌ DIY&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;✅ Native&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://composio.dev" rel="noopener noreferrer"&gt;https://composio.dev&lt;/a&gt; | &lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://docs.composio.dev" rel="noopener noreferrer"&gt;https://docs.composio.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Written by Arshdeep Singh&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>devtools</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
