<?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: Ángela López Mendoza</title>
    <description>The latest articles on DEV Community by Ángela López Mendoza (@angela_lopezmendoza).</description>
    <link>https://dev.to/angela_lopezmendoza</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%2F3955048%2F4b0c7cfe-e3ac-4d29-b272-7e979a3f9d18.jpg</url>
      <title>DEV Community: Ángela López Mendoza</title>
      <link>https://dev.to/angela_lopezmendoza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/angela_lopezmendoza"/>
    <language>en</language>
    <item>
      <title>Lets install Tlamatini v1.17.1...</title>
      <dc:creator>Ángela López Mendoza</dc:creator>
      <pubDate>Sat, 06 Jun 2026 23:33:35 +0000</pubDate>
      <link>https://dev.to/angela_lopezmendoza/lets-install-tlamatini-v1171-26ai</link>
      <guid>https://dev.to/angela_lopezmendoza/lets-install-tlamatini-v1171-26ai</guid>
      <description>&lt;p&gt;Install Tlamatini v1.17.1 at: &lt;a href="https://github.com/XAIHT/Tlamatini/releases/tag/v1.17.1" rel="noopener noreferrer"&gt;Tlamatini v1.17.1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fporha53wlimsl2ezem8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fporha53wlimsl2ezem8w.png" alt=" " width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Checkout Tlamatini's release v1.17.0!</title>
      <dc:creator>Ángela López Mendoza</dc:creator>
      <pubDate>Sat, 06 Jun 2026 16:25:07 +0000</pubDate>
      <link>https://dev.to/angela_lopezmendoza/checkout-tlamatinis-release-v1170-ap1</link>
      <guid>https://dev.to/angela_lopezmendoza/checkout-tlamatinis-release-v1170-ap1</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/XAIHT/Tlamatini/releases/tag/v1.17.0" rel="noopener noreferrer"&gt;&lt;strong&gt;Tlamatini's Release v1.17.0&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8is12m1kg68zh3qtksl2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8is12m1kg68zh3qtksl2.png" alt=" " width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Check our new English/Spanish website!</title>
      <dc:creator>Ángela López Mendoza</dc:creator>
      <pubDate>Sat, 06 Jun 2026 16:19:22 +0000</pubDate>
      <link>https://dev.to/angela_lopezmendoza/check-our-new-englishspanish-website-9h9</link>
      <guid>https://dev.to/angela_lopezmendoza/check-our-new-englishspanish-website-9h9</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnra46kaq2shu6nq5lh66.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnra46kaq2shu6nq5lh66.png" alt=" " width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="https://xaiht.org" rel="noopener noreferrer"&gt;https://xaiht.org&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Learn how to make security enhancements with an AI assistant (Tlamatini).</title>
      <dc:creator>Ángela López Mendoza</dc:creator>
      <pubDate>Tue, 02 Jun 2026 13:11:39 +0000</pubDate>
      <link>https://dev.to/angela_lopezmendoza/learn-how-to-make-enhancements-with-agentic-ai-tlamatini-2hm8</link>
      <guid>https://dev.to/angela_lopezmendoza/learn-how-to-make-enhancements-with-agentic-ai-tlamatini-2hm8</guid>
      <description>&lt;p&gt;Just check this video, now I don't need to pay for a first evaluation of every application I make, I use Tlamatini, check at it: &lt;a href="https://www.youtube.com/watch?v=4MyRXBahHuU" rel="noopener noreferrer"&gt;Code Assessment and Enhancement&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Stop chasing parameter counts. Build the toolbelt instead. — What I learned building Tlamatini (Open Source Destktop App).</title>
      <dc:creator>Ángela López Mendoza</dc:creator>
      <pubDate>Tue, 02 Jun 2026 04:57:16 +0000</pubDate>
      <link>https://dev.to/angela_lopezmendoza/stop-chasing-parameter-counts-build-the-toolbelt-instead-what-i-learned-building-tlamatini-2gjf</link>
      <guid>https://dev.to/angela_lopezmendoza/stop-chasing-parameter-counts-build-the-toolbelt-instead-what-i-learned-building-tlamatini-2gjf</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F831zwrole6obr2klw7uk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F831zwrole6obr2klw7uk.png" alt=" " width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the last few months I've been building Tlamatini, an open-source local-first AI developer assistant. Along the way I kept bumping into the same assumption — both in articles and in my own head — that to build something useful, you need the biggest model you can afford. GPT-4. Claude Opus. Llama 70B at minimum.&lt;/p&gt;

&lt;p&gt;Then I started actually shipping with smaller local models, and I learned something that flipped my thinking.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real lesson
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A 20B-parameter LLM, given the right tools, the right agents, and skills fine-tuned to your operating procedures, is good enough to power most of your company's real workflows.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Parameter count is not the bottleneck. The bottleneck is whether the model can &lt;em&gt;act&lt;/em&gt; — and that's a tools problem, not a parameters problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "the right tools" actually means
&lt;/h2&gt;

&lt;p&gt;In Tlamatini, we wired the LLM into 75 concrete capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shell and Python execution&lt;/li&gt;
&lt;li&gt;File operations&lt;/li&gt;
&lt;li&gt;Browser automation (Playwright)&lt;/li&gt;
&lt;li&gt;Screenshots and keyboard/mouse control&lt;/li&gt;
&lt;li&gt;Email, Telegram, WhatsApp bridges&lt;/li&gt;
&lt;li&gt;A hybrid RAG pipeline (FAISS + BM25) so the model sees the &lt;em&gt;right&lt;/em&gt; code, not random chunks&lt;/li&gt;
&lt;li&gt;Multi-agent orchestration via ACPX — the assistant can delegate sub-tasks to Claude Code, Cursor, Codex, or Gemini CLI and relay output between them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this toolbelt, a 20B model running locally on Ollama can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read your codebase and answer accurate questions about it&lt;/li&gt;
&lt;li&gt;Refactor a module, run the tests, and report back&lt;/li&gt;
&lt;li&gt;Open a browser, fill a form, screenshot the result&lt;/li&gt;
&lt;li&gt;Build and flash firmware to an STM32 microcontroller (yes, really)&lt;/li&gt;
&lt;li&gt;Chain all of the above into a single conversation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A 200B cloud model with no tools cannot do any of those things.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for companies
&lt;/h2&gt;

&lt;p&gt;Most internal AI projects fail because teams reach for the biggest model and the smallest scope. They get an expensive chatbot that drafts emails.&lt;/p&gt;

&lt;p&gt;Flip it: give a modest model a real toolbox and skills fine-tuned to your actual operating procedures (your CRM, your ticketing system, your build pipeline), and you get an &lt;em&gt;operator&lt;/em&gt; — something that participates in the workflow instead of describing it.&lt;/p&gt;

&lt;p&gt;Local 20B + tools &amp;gt; cloud 200B + chat box. Almost every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical takeaway
&lt;/h2&gt;

&lt;p&gt;If you're thinking about adopting AI in your company and the budget conversation is stuck on which API to pay for, consider stepping back:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;What are your repeatable operating procedures?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What tools would an agent need to actually execute them?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can you wrap those tools cleanly enough that a local 20B model can call them reliably?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If yes, you don't need to send anything to the cloud. You don't need to pay per token. You don't need permission from a vendor. You just need to build the toolbelt.&lt;/p&gt;

&lt;p&gt;That's what Tlamatini is — an open-source toolbelt and orchestration layer for local LLMs. Built in Django, runs on Ollama, GPL-3.0.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/XAIHT/Tlamatini" rel="noopener noreferrer"&gt;github.com/XAIHT/Tlamatini&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-minute demo:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=4MyRXBahHuU" rel="noopener noreferrer"&gt;youtu.be/4MyRXBahHuU&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear from other people who've shipped agent systems on smaller local models — what's working for you? What's still painful? What tools made the biggest difference?&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>She is Tlamatini — this is how she looks in the Metaverse.</title>
      <dc:creator>Ángela López Mendoza</dc:creator>
      <pubDate>Sun, 31 May 2026 21:16:59 +0000</pubDate>
      <link>https://dev.to/angela_lopezmendoza/she-is-tlamatini-this-is-how-she-looks-in-the-metaverse-3gk3</link>
      <guid>https://dev.to/angela_lopezmendoza/she-is-tlamatini-this-is-how-she-looks-in-the-metaverse-3gk3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3h9r96a5nypwqearyeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3h9r96a5nypwqearyeg.png" alt=" " width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>aigirl</category>
      <category>agenticai</category>
      <category>tlamatini</category>
    </item>
    <item>
      <title>I built a local-first AI dev assistant with 68 agents in Django — here's what I learned</title>
      <dc:creator>Ángela López Mendoza</dc:creator>
      <pubDate>Wed, 27 May 2026 22:57:09 +0000</pubDate>
      <link>https://dev.to/angela_lopezmendoza/i-built-a-local-first-ai-dev-assistant-with-68-agents-in-django-heres-what-i-learned-46aa</link>
      <guid>https://dev.to/angela_lopezmendoza/i-built-a-local-first-ai-dev-assistant-with-68-agents-in-django-heres-what-i-learned-46aa</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13s91padw1x3lahxyp9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13s91padw1x3lahxyp9s.png" alt=" " width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've spent months building &lt;strong&gt;Tlamatini&lt;/strong&gt; (Nahuatl for "one who knows") — a locally-deployed AI developer assistant that goes way beyond a chatbox. It runs on your machine with Ollama, your code never leaves your box, and it's fully open source (GPL-3.0).&lt;/p&gt;

&lt;p&gt;I want to share what I built and what I learned, because building a local-first AI tool as a solo developer taught me things I didn't expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Tlamatini does
&lt;/h2&gt;

&lt;p&gt;Most AI coding assistants are cloud-first chatboxes. Tlamatini is different:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid RAG over your codebase&lt;/strong&gt; — FAISS + BM25 retrieval with Reciprocal Rank Fusion and context budgeting. The model doesn't just see random code chunks — it sees the &lt;em&gt;right&lt;/em&gt; code, ranked and budgeted so it fits in context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-Turn mode with 75 tools&lt;/strong&gt; — The LLM becomes an operator. Shell commands, Python execution, file operations, browser automation with Playwright, screenshots, keyboard/mouse control, email, Telegram, WhatsApp — all chained in one conversation. You tell it what you want done, and it figures out the steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACPX (Agent Communication Protocol eXtension)&lt;/strong&gt; — This is the part I'm most proud of. Tlamatini can spawn external coding-agent CLIs — Claude Code, Cursor, Codex, Gemini CLI, Qwen — as child processes, send them tasks, and relay output between them. One orchestrator, multiple coding agents, working on different parts of a problem simultaneously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual Workflow Designer&lt;/strong&gt; — A drag-and-drop canvas with 68 agent types. Wire them together, validate the flow, run it unattended. Save flows as &lt;code&gt;.flw&lt;/code&gt; files, schedule them, monitor them with FlowHypervisor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-aware architecture&lt;/strong&gt; — Tlamatini carries a first-person knowledge map of her own architecture (&lt;code&gt;Tlamatini.md&lt;/code&gt;) that's injected into every LLM prompt. She can answer questions about herself accurately. Builds packaged with &lt;code&gt;--self-modify&lt;/code&gt; ship her own source tree so she can read, inspect, and modify herself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tech stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Python 3.12, Django 5.2, Django Channels (Daphne ASGI)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI/ML&lt;/strong&gt;: LangChain 0.3, LangGraph 0.2, FAISS, rank-bm25&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM backends&lt;/strong&gt;: Ollama (local default), Anthropic Claude (cloud opt-in), Qwen (vision)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communication&lt;/strong&gt;: WebSockets for real-time streaming, gRPC for MCP services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: SQLite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Packaging&lt;/strong&gt;: PyInstaller → one-click Windows .exe installer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons learned building this solo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. RAG is harder than it looks
&lt;/h3&gt;

&lt;p&gt;Everyone shows RAG demos with 5 documents. Try it with a real codebase — thousands of files, mixed languages, config files, migrations, tests. The naive approach (chunk everything, embed, retrieve top-k) falls apart immediately.&lt;/p&gt;

&lt;p&gt;What worked: hybrid retrieval (dense vectors from FAISS + sparse matching from BM25), Reciprocal Rank Fusion to combine rankings, code-aware metadata extraction so the retriever knows which file, class, and function each chunk belongs to, and context budgeting so I never blow the model's context window.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Multi-agent orchestration needs contracts
&lt;/h3&gt;

&lt;p&gt;When you have 68 agent types that can be wired together in any combination, you need a formal system for "what can connect to what." I built an Agent Contract registry — each agent declares its connection fields, parameter sources, secret paths, and validation rules. The Flow Compiler validates every connection before execution.&lt;/p&gt;

&lt;p&gt;Without this, users would wire agents together in invalid ways and get cryptic errors at runtime. With contracts, validation happens at design time on the canvas.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Process management on Windows is brutal
&lt;/h3&gt;

&lt;p&gt;Tlamatini spawns child processes for agents, ACPX CLIs, and tool execution. On Windows, every subprocess gets a &lt;code&gt;conhost.exe&lt;/code&gt; companion. These pile up and orphan when the parent dies. Users saw dozens of Tlamatini-icon processes in Task Manager.&lt;/p&gt;

&lt;p&gt;I built a three-tier orphan reaper: Tier 1 runs after every tool call, Tier 2 runs after the LLM response, Tier 3 runs at shutdown. Plus a monkey-patch on &lt;code&gt;subprocess.Popen&lt;/code&gt; that defaults &lt;code&gt;CREATE_NO_WINDOW&lt;/code&gt; so future tools get the fix for free.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Local-first is a feature, not a limitation
&lt;/h3&gt;

&lt;p&gt;The decision to make Ollama the default (not Claude API, not OpenAI) was controversial in my head. Cloud models are smarter. But local-first means: your code never leaves your machine, no API costs for basic usage, works offline, and no vendor lock-in.&lt;/p&gt;

&lt;p&gt;Users who want cloud quality can opt in per-request. But the default is private. In 2026, that matters.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/XAIHT/Tlamatini" rel="noopener noreferrer"&gt;github.com/XAIHT/Tlamatini&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-minute demo&lt;/strong&gt;: &lt;a href="https://www.youtube.com/watch?v=4MyRXBahHuU" rel="noopener noreferrer"&gt;youtube.com/watch?v=4MyRXBahHuU&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack&lt;/strong&gt;: Django 5 + Channels, LangChain, FAISS, Ollama. GPL-3.0.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Five-minute setup: clone, pip install, migrate, runserver. That's it.&lt;/p&gt;

&lt;p&gt;I'd love feedback — especially on the RAG architecture and the ACPX multi-agent orchestration. What would you add? What would you do differently?&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>python</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I built a local-first AI dev assistant with 68 agents in Django — here's what I learned</title>
      <dc:creator>Ángela López Mendoza</dc:creator>
      <pubDate>Wed, 27 May 2026 20:01:09 +0000</pubDate>
      <link>https://dev.to/angela_lopezmendoza/i-built-a-local-first-ai-dev-assistant-with-68-agents-in-django-heres-what-i-learned-jll</link>
      <guid>https://dev.to/angela_lopezmendoza/i-built-a-local-first-ai-dev-assistant-with-68-agents-in-django-heres-what-i-learned-jll</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv04sacws01aks2yvxwoe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv04sacws01aks2yvxwoe.png" alt=" " width="800" height="592"&gt;&lt;/a&gt;&lt;br&gt;
I've spent months building &lt;strong&gt;Tlamatini&lt;/strong&gt; (Nahuatl for "one who knows") — a locally-deployed AI developer assistant that goes way beyond a chatbox. It runs on your machine with Ollama, your code never leaves your box, and it's fully open source (GPL-3.0).&lt;/p&gt;

&lt;p&gt;I want to share what I built and what I learned, because building a local-first AI tool as a solo developer taught me things I didn't expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Tlamatini does
&lt;/h2&gt;

&lt;p&gt;Most AI coding assistants are cloud-first chatboxes. Tlamatini is different:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid RAG over your codebase&lt;/strong&gt; — FAISS + BM25 retrieval with Reciprocal Rank Fusion and context budgeting. The model doesn't just see random code chunks — it sees the &lt;em&gt;right&lt;/em&gt; code, ranked and budgeted so it fits in context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multi-Turn mode with 75 tools&lt;/strong&gt; — The LLM becomes an operator. Shell commands, Python execution, file operations, browser automation with Playwright, screenshots, keyboard/mouse control, email, Telegram, WhatsApp — all chained in one conversation. You tell it what you want done, and it figures out the steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACPX (Agent Communication Protocol eXtension)&lt;/strong&gt; — This is the part I'm most proud of. Tlamatini can spawn external coding-agent CLIs — Claude Code, Cursor, Codex, Gemini CLI, Qwen — as child processes, send them tasks, and relay output between them. One orchestrator, multiple coding agents, working on different parts of a problem simultaneously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual Workflow Designer&lt;/strong&gt; — A drag-and-drop canvas with 68 agent types. Wire them together, validate the flow, run it unattended. Save flows as &lt;code&gt;.flw&lt;/code&gt; files, schedule them, monitor them with FlowHypervisor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-aware architecture&lt;/strong&gt; — Tlamatini carries a first-person knowledge map of her own architecture (&lt;code&gt;Tlamatini.md&lt;/code&gt;) that's injected into every LLM prompt. She can answer questions about herself accurately. Builds packaged with &lt;code&gt;--self-modify&lt;/code&gt; ship her own source tree so she can read, inspect, and modify herself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tech stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Python 3.12, Django 5.2, Django Channels (Daphne ASGI)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI/ML&lt;/strong&gt;: LangChain 0.3, LangGraph 0.2, FAISS, rank-bm25&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM backends&lt;/strong&gt;: Ollama (local default), Anthropic Claude (cloud opt-in), Qwen (vision)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communication&lt;/strong&gt;: WebSockets for real-time streaming, gRPC for MCP services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: SQLite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Packaging&lt;/strong&gt;: PyInstaller → one-click Windows .exe installer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons learned building this solo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. RAG is harder than it looks
&lt;/h3&gt;

&lt;p&gt;Everyone shows RAG demos with 5 documents. Try it with a real codebase — thousands of files, mixed languages, config files, migrations, tests. The naive approach (chunk everything, embed, retrieve top-k) falls apart immediately.&lt;/p&gt;

&lt;p&gt;What worked: hybrid retrieval (dense vectors from FAISS + sparse matching from BM25), Reciprocal Rank Fusion to combine rankings, code-aware metadata extraction so the retriever knows which file, class, and function each chunk belongs to, and context budgeting so I never blow the model's context window.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Multi-agent orchestration needs contracts
&lt;/h3&gt;

&lt;p&gt;When you have 68 agent types that can be wired together in any combination, you need a formal system for "what can connect to what." I built an Agent Contract registry — each agent declares its connection fields, parameter sources, secret paths, and validation rules. The Flow Compiler validates every connection before execution.&lt;/p&gt;

&lt;p&gt;Without this, users would wire agents together in invalid ways and get cryptic errors at runtime. With contracts, validation happens at design time on the canvas.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Process management on Windows is brutal
&lt;/h3&gt;

&lt;p&gt;Tlamatini spawns child processes for agents, ACPX CLIs, and tool execution. On Windows, every subprocess gets a &lt;code&gt;conhost.exe&lt;/code&gt; companion. These pile up and orphan when the parent dies. Users saw dozens of Tlamatini-icon processes in Task Manager.&lt;/p&gt;

&lt;p&gt;I built a three-tier orphan reaper: Tier 1 runs after every tool call, Tier 2 runs after the LLM response, Tier 3 runs at shutdown. Plus a monkey-patch on &lt;code&gt;subprocess.Popen&lt;/code&gt; that defaults &lt;code&gt;CREATE_NO_WINDOW&lt;/code&gt; so future tools get the fix for free.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Local-first is a feature, not a limitation
&lt;/h3&gt;

&lt;p&gt;The decision to make Ollama the default (not Claude API, not OpenAI) was controversial in my head. Cloud models are smarter. But local-first means: your code never leaves your machine, no API costs for basic usage, works offline, and no vendor lock-in.&lt;/p&gt;

&lt;p&gt;Users who want cloud quality can opt in per-request. But the default is private. In 2026, that matters.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/XAIHT/Tlamatini" rel="noopener noreferrer"&gt;github.com/XAIHT/Tlamatini&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-minute demo&lt;/strong&gt;: &lt;a href="https://www.youtube.com/watch?v=4MyRXBahHuU" rel="noopener noreferrer"&gt;youtube.com/watch?v=4MyRXBahHuU&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack&lt;/strong&gt;: Django 5 + Channels, LangChain, FAISS, Ollama. GPL-3.0.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Five-minute setup: clone, pip install, migrate, runserver. That's it.&lt;/p&gt;

&lt;p&gt;I'd love feedback — especially on the RAG architecture and the ACPX multi-agent orchestration. What would you add? What would you do differently?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
