<?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: massiron</title>
    <description>The latest articles on DEV Community by massiron (@massiron).</description>
    <link>https://dev.to/massiron</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%2F3973712%2F99cc8b83-c2f9-4810-9366-a4543a45a0ef.png</url>
      <title>DEV Community: massiron</title>
      <link>https://dev.to/massiron</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/massiron"/>
    <language>en</language>
    <item>
      <title>Code Analysis Without Hallucinations: Using Code Atlas for Deterministic AST Parsing</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:39:46 +0000</pubDate>
      <link>https://dev.to/massiron/code-analysis-without-hallucinations-using-code-atlas-for-deterministic-ast-parsing-4i4e</link>
      <guid>https://dev.to/massiron/code-analysis-without-hallucinations-using-code-atlas-for-deterministic-ast-parsing-4i4e</guid>
      <description>&lt;p&gt;If you've ever asked an AI to find all references to a function in your codebase, only to get back a fictional method name or a path that doesn't exist, you know the pain of hallucinated code analysis. LLMs are great for summarization and generation, but they're terrible at deterministic tasks like symbol resolution or dependency graph extraction.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;Code Atlas&lt;/strong&gt; (atlas). It's a deterministic, offline code intelligence engine that works purely on AST parsing — no LLM, no cloud, no hallucinations. You install it with pip, point it at a directory, and get instant, reproducible results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install
&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;code-atlas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No Docker, no server setup, no API keys. It runs fully offline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Index your codebase
&lt;/h2&gt;

&lt;p&gt;Navigate to your project root and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;atlas index
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This parses all supported files (Python, JavaScript, TypeScript, Go, Rust, Java, and more) into an AST-based index stored locally. The index is deterministic — same code always produces the same index.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Search for symbols
&lt;/h2&gt;

&lt;p&gt;Find every definition and reference to a function or class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;atlas search &lt;span class="s2"&gt;"parse_config"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output includes file paths, line numbers, and the symbol type (function, class, variable). No guesswork.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Trace dependencies
&lt;/h2&gt;

&lt;p&gt;Visualize import relationships and detect circular dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;atlas graph &lt;span class="nt"&gt;--format&lt;/span&gt; mermaid
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prints a dependency graph in Mermaid format, which you can render in your docs or CI pipeline. It's excellent for impact analysis before a refactor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Run code quality metrics
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;atlas metrics &lt;span class="nt"&gt;--risk&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Outputs complexity scores, coupling metrics, and risk predictions for each module. This is useful in CI/CD to flag high-risk changes before merging.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Integrate with AI agents (optional)
&lt;/h2&gt;

&lt;p&gt;If you use AI coding assistants, atlas can serve as a ground-truth layer via its MCP server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;atlas mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any MCP-compatible agent can now query atlas for real symbol locations, references, and dependency info — eliminating hallucinations from the AI's code analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations to be honest about
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Atlas is a CLI tool, not a GUI. If you want a visual code explorer, you'll need to pipe output into something else.&lt;/li&gt;
&lt;li&gt;The free tier covers basic search and symbol lookup. Pro features like risk scoring and deep dependency graphs require a $12/month subscription.&lt;/li&gt;
&lt;li&gt;It doesn't understand dynamic code patterns (e.g., &lt;code&gt;getattr()&lt;/code&gt; in Python) — AST parsing has limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When to use Code Atlas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In CI/CD pipelines where you need deterministic quality gates&lt;/li&gt;
&lt;li&gt;When refactoring large codebases and need to find all usages of a deprecated API&lt;/li&gt;
&lt;li&gt;For AI agent workflows that require factual code context alongside LLM reasoning&lt;/li&gt;
&lt;li&gt;Any time you want code analysis that is 100% reproducible and privacy-safe&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try it yourself:&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;code-atlas
atlas index
atlas search &lt;span class="s2"&gt;"your_function_name"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo: &lt;a href="https://github.com/mete-dotcom/code-atlas" rel="noopener noreferrer"&gt;https://github.com/mete-dotcom/code-atlas&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://massiron.com/atlas" rel="noopener noreferrer"&gt;https://massiron.com/atlas&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>staticanalysis</category>
      <category>devtools</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Building an Auditable AI Agent in Your Terminal with deepstrain</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:39:37 +0000</pubDate>
      <link>https://dev.to/massiron/building-an-auditable-ai-agent-in-your-terminal-with-deepstrain-17ak</link>
      <guid>https://dev.to/massiron/building-an-auditable-ai-agent-in-your-terminal-with-deepstrain-17ak</guid>
      <description>&lt;h2&gt;
  
  
  Why deepstrain?
&lt;/h2&gt;

&lt;p&gt;Most AI coding agents are black boxes. You give them a prompt, they start spamming tools, and you hope for the best. If something breaks, good luck figuring out why.&lt;/p&gt;

&lt;p&gt;deepstrain takes a different approach: &lt;strong&gt;plan-first, inspectable execution&lt;/strong&gt;. Every decision is logged, every plan is reviewed before touching files, and you can run it fully offline with local models.&lt;/p&gt;

&lt;p&gt;This tutorial walks through installing deepstrain, configuring it with your preferred model, and running a practical task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install
&lt;/h2&gt;

&lt;p&gt;deepstrain is a Python package, available via pip:&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it. No Docker, no cloud setup, no hidden dependencies. The free tier includes all 52 built-in tools and 19 capability domains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Configure a Model Backend
&lt;/h2&gt;

&lt;p&gt;deepstrain is model-agnostic. You can use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; (free, local)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude&lt;/strong&gt; (Anthropic API)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-4o&lt;/strong&gt; (OpenAI API)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek&lt;/strong&gt; (cheap, ~$0.009/task)&lt;/li&gt;
&lt;li&gt;Any OpenAI-compatible endpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Set your backend via environment variables. For example, with Ollama:&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;export &lt;/span&gt;&lt;span class="nv"&gt;DEEPSTRAIN_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ollama:llama3.1:70b"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OLLAMA_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://localhost:11434"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or with DeepSeek:&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;export &lt;/span&gt;&lt;span class="nv"&gt;DEEPSTRAIN_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"deepseek:deepseek-chat"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-your-key"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have a local model running, deepstrain works fully offline — zero data leaves your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Run Your First Task
&lt;/h2&gt;

&lt;p&gt;Let’s ask deepstrain to refactor a Python file. Create a messy script:&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="c1"&gt;# messy.py
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;a&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="k"&gt;return&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;y&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;b&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="k"&gt;return&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;y&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;c&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="k"&gt;return&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;y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain run &lt;span class="s2"&gt;"Refactor messy.py: rename functions to descriptive names, add type hints, and write a docstring for each. Show me the plan first."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;deepstrain will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generate a plan (and pause for your approval)&lt;/li&gt;
&lt;li&gt;Execute the plan step-by-step&lt;/li&gt;
&lt;li&gt;Log every decision with full context&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You’ll see output like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[PLAN] Step 1: Read messy.py
[PLAN] Step 2: Rename a() -&amp;gt; add()
[PLAN] Step 3: Rename b() -&amp;gt; multiply()
[PLAN] Step 4: Rename c() -&amp;gt; subtract()
[PLAN] Step 5: Add type hints (int, int) -&amp;gt; int
[PLAN] Step 6: Add docstrings
[PLAN] Step 7: Write changes to messy.py

Review plan? (y/n): y

[LOG] Executing step 1...
[LOG] Executing step 2...
...
[DONE] Refactored messy.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Inspect the Logs
&lt;/h2&gt;

&lt;p&gt;Every run creates a timestamped log file in &lt;code&gt;~/.deepstrain/logs/&lt;/code&gt;. Open it to see the full decision trail:&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;cat&lt;/span&gt; ~/.deepstrain/logs/&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; ~/.deepstrain/logs/ | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll see the exact model responses, tool calls, and stack traces. This is &lt;strong&gt;inspectable cognition&lt;/strong&gt; — no black box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Use Built-in Tools
&lt;/h2&gt;

&lt;p&gt;deepstrain ships with 52 tools across 19 domains. Here’s a quick sample:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File I/O&lt;/strong&gt;: &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, &lt;code&gt;patch&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt;: &lt;code&gt;git_status&lt;/code&gt;, &lt;code&gt;git_diff&lt;/code&gt;, &lt;code&gt;git_commit&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bash&lt;/strong&gt;: &lt;code&gt;run_shell&lt;/code&gt;, &lt;code&gt;run_script&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network&lt;/strong&gt;: &lt;code&gt;http_get&lt;/code&gt;, &lt;code&gt;http_post&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: &lt;code&gt;sql_query&lt;/code&gt; (sqlite, postgres)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP&lt;/strong&gt;: &lt;code&gt;mcp_call&lt;/code&gt; (connect to MCP servers)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To list all tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain list-tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Limitations to Know
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;deepstrain is terminal-native — no GUI. It’s designed for developers who live in the terminal.&lt;/li&gt;
&lt;li&gt;The free tier is fully functional but limited to 100 tasks per day. Pro ($9/mo) removes this limit and adds HMAC activation for team use.&lt;/li&gt;
&lt;li&gt;Deterministic code analysis (via atlas) only works for Python and JavaScript currently. Other languages fall back to LLM-based analysis.&lt;/li&gt;
&lt;li&gt;If you use a small local model (e.g., 7B), plan quality may suffer. A 70B+ model or GPT-4o gives best results.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Run it on CI&lt;/strong&gt;: deepstrain works great in GitHub Actions for automated PR reviews or test generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use it offline&lt;/strong&gt;: Pair with Ollama and a local model for air-gapped environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extend with MCP&lt;/strong&gt;: Connect to your own MCP servers for custom capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the repo for examples and advanced config: &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;https://github.com/mete-dotcom/deepstrain&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or just install and try it:&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>agentic</category>
      <category>python</category>
      <category>opensource</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Building Controllable AI Agents: Why I Stopped Using Black-Box Tool-Spammers</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:08:37 +0000</pubDate>
      <link>https://dev.to/massiron/building-controllable-ai-agents-why-i-stopped-using-black-box-tool-spammers-187n</link>
      <guid>https://dev.to/massiron/building-controllable-ai-agents-why-i-stopped-using-black-box-tool-spammers-187n</guid>
      <description>&lt;h2&gt;
  
  
  The Problem with Most AI Coding Agents
&lt;/h2&gt;

&lt;p&gt;If you've tried AutoGPT, CrewAI, or similar agent frameworks, you've probably seen this: the agent starts spamming tools in random order, writes files without telling you, and when something breaks — it just retries silently. Debugging becomes impossible because there's no trace of what the agent was thinking.&lt;/p&gt;

&lt;p&gt;I ran into this wall while automating PR reviews for an open-source project. The agent would attempt a git merge, fail, then try something else — and I'd only find out after a CI failure. I needed &lt;strong&gt;controllable, auditable execution&lt;/strong&gt;, not a black box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Deepstrain
&lt;/h2&gt;

&lt;p&gt;Deepstrain is a terminal-native AI execution substrate. It's model-agnostic (works with Ollama, Claude, GPT-4o, DeepSeek, any OpenAI-compatible backend), antifragile, and built around &lt;strong&gt;plan-first execution&lt;/strong&gt;. Before touching any files, the agent writes a plan you can review and approve.&lt;/p&gt;

&lt;p&gt;Here's a real example: I wanted to refactor a Python module — rename a function, update all call sites, and run tests. With Deepstrain, I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain run &lt;span class="s2"&gt;"Rename &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;calculate_total&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt; to &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;compute_sum&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt; in src/ and update all usages. Run tests after."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deepstrain first printed a plan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Plan:
1. Read src/calculator.py to find `calculate_total` definition
2. Read tests/test_calculator.py to find usages
3. Use `sed` to rename in both files
4. Run `pytest tests/` to verify
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I reviewed it, hit 'y', and watched each step execute with full logging. Every command, every file read/write, every error — logged with stack trace. When a test failed because I forgot a second import, the error was captured, the agent adjusted, and I could see exactly what changed.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;52 built-in tools&lt;/strong&gt;: file I/O, git, bash, network, database, MCP server — all sandboxed and logged&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic code analysis&lt;/strong&gt; via atlas integration: no hallucinations in code understanding, because it uses actual AST parsing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspectable cognition&lt;/strong&gt;: every decision is logged with context. You can replay the entire session&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Antifragile&lt;/strong&gt;: rotating error logs, graceful degradation. If a tool fails, the agent doesn't crash — it reports and retries with a different approach&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model-agnostic&lt;/strong&gt;: run with Ollama locally (free, no data leaves your machine) or bring your own API key (e.g., DeepSeek at ~$0.009/task)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trade-offs (Being Honest)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Terminal-native&lt;/strong&gt;: no GUI. If you prefer a visual interface, this isn't for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning curve&lt;/strong&gt;: the plan-first workflow takes getting used to. You can't just fire-and-forget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro license&lt;/strong&gt;: $9/month for HMAC activation and priority support. The free mode gives read-only tools (file reading, git log, etc.) — useful for auditing but not for writing code.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where It Shines
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD pipelines&lt;/strong&gt;: run automated refactoring with full audit trails&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR review automation&lt;/strong&gt;: read diffs, suggest changes, run tests — all logged&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-source maintenance&lt;/strong&gt;: bulk rename, migrate imports, generate test stubs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local-first development&lt;/strong&gt;: pair with Ollama for a completely offline AI assistant&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then grab a trial key from the repo or run with a local model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain &lt;span class="nt"&gt;--model&lt;/span&gt; ollama:codellama run &lt;span class="s2"&gt;"Explain the architecture of this project"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No cloud dependency. No vendor lock-in. Just a terminal, a model, and a plan.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Deepstrain is open-source (MIT license) on &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Pro features are $9/month. More details at &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;massiron.com/deepstrain&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>deepstrain</category>
    </item>
    <item>
      <title>Running a Local AI Engineering Agent with deepstrain: A Step-by-Step Tutorial</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:08:33 +0000</pubDate>
      <link>https://dev.to/massiron/running-a-local-ai-engineering-agent-with-deepstrain-a-step-by-step-tutorial-1dc4</link>
      <guid>https://dev.to/massiron/running-a-local-ai-engineering-agent-with-deepstrain-a-step-by-step-tutorial-1dc4</guid>
      <description>&lt;p&gt;If you've ever wanted an AI agent that can read your codebase, run git commands, and execute bash scripts—all without sending a single byte to the cloud—deepstrain is worth a look. It's a local agent runner that connects to any OpenAI-compatible LLM (Ollama, LM Studio, GPT-4o, Claude) and gives you 52 built-in tools. The key difference from other agents: it plans first, then acts. You see the step-by-step reasoning before any tool runs.&lt;/p&gt;

&lt;p&gt;Here's how to get it running in five minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Install
&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No Docker, no API keys, no cloud setup. The package pulls in dependencies for file I/O, git, bash, web fetching, and code analysis via atlas.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Configure an LLM Backend
&lt;/h2&gt;

&lt;p&gt;deepstrain needs an LLM behind it. If you have Ollama running locally with a model like &lt;code&gt;codellama&lt;/code&gt; or &lt;code&gt;deepseek-coder&lt;/code&gt;, create a config file:&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="c1"&gt;# config.yaml&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;provider&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;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;codellama:7b&lt;/span&gt;
  &lt;span class="na"&gt;base_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://localhost:11434/v1&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For LM Studio, point to its local server:&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="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openai-compatible&lt;/span&gt;
  &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;local-model&lt;/span&gt;
  &lt;span class="na"&gt;base_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://localhost:1234/v1&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;not-needed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use a cloud API (still fully local execution, just the LLM call goes out):&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="na"&gt;provider&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;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save this as &lt;code&gt;deepstrain.yml&lt;/code&gt; in your project root. If you skip it, deepstrain will prompt you interactively.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Run Your First Task
&lt;/h2&gt;

&lt;p&gt;Let's ask it to summarize the git log of the current repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain &lt;span class="s2"&gt;"Show me a summary of the last 5 commits, grouped by author"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before any tool runs, you'll see the plan printed to stdout. Something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Plan]
1. Run `git log --oneline -5` to get recent commits
2. Parse the output by author
3. Print grouped summary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it executes step by step. Each tool call is logged with input, output, and duration.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. See the Crash-Proof Logging
&lt;/h2&gt;

&lt;p&gt;If a tool fails (e.g., network timeout on a web fetch), deepstrain doesn't crash silently. It writes a rotating log to &lt;code&gt;~/.deepstrain/logs/&lt;/code&gt; with full context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2025-03-20 14:32:01 | ERROR | web_fetch | https://example.com/api
  Tool: web_fetch
  Args: {"url": "https://example.com/api", "timeout": 10}
  Error: ConnectionError("Connection refused")
  Plan step: 2 of 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get a friendly message in the terminal: "Web fetch failed. Retrying once..." If it fails again, the agent reports the error and asks if you want to continue.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Try a Real Refactoring Task with atlas
&lt;/h2&gt;

&lt;p&gt;One of the 52 tools is &lt;code&gt;code_analysis&lt;/code&gt; which uses atlas for deterministic code intelligence. Let's say you want to rename a function across a Python project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain &lt;span class="s2"&gt;"Find all callers of function &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;parse_config&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt; in src/ and rename it to &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;load_config&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;code_analysis&lt;/code&gt; to build a call graph&lt;/li&gt;
&lt;li&gt;List all files with references&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;file_read&lt;/code&gt; and &lt;code&gt;file_write&lt;/code&gt; to make changes&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;git diff&lt;/code&gt; to show you the diff before applying&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You approve each change interactively.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Activation and Pricing
&lt;/h2&gt;

&lt;p&gt;deepstrain uses HMAC-SHA256 licensing with edge revocation. After install, you get a free trial. For Pro ($9/mo), you get unlimited tools, priority support, and offline activation. If you bring your own DeepSeek API key, each task costs about $0.009.&lt;/p&gt;

&lt;p&gt;Activate with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain &lt;span class="nt"&gt;--activate&lt;/span&gt; YOUR_LICENSE_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once activated, it works fully offline—no phone-home required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Just Use Ollama or LangChain?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Raw Ollama gives you a chat interface, not an agent with 52 tools and retry logic.&lt;/li&gt;
&lt;li&gt;LangChain requires wiring up chains, memory, and error handling yourself.&lt;/li&gt;
&lt;li&gt;deepstrain is &lt;code&gt;pip install&lt;/code&gt; and a single command. Zero boilerplate.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;https://massiron.com/deepstrain&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Site with full docs: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;https://massiron.com/deepstrain&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Try it on a small codebase first—you can always see the plan before it touches your files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback welcome. If you hit an edge case, the logs will tell you exactly what happened.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;: &lt;code&gt;pip install deepstrain&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Repo&lt;/strong&gt;: &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;https://github.com/mete-dotcom/deepstrain&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Site&lt;/strong&gt;: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;https://massiron.com/deepstrain&lt;/a&gt;&lt;/p&gt;

</description>
      <category>deepstrain</category>
    </item>
    <item>
      <title>The Agent OS: Why We Need an Execution Runtime, Not Another Chatbot</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:03:28 +0000</pubDate>
      <link>https://dev.to/massiron/the-agent-os-why-we-need-an-execution-runtime-not-another-chatbot-1hgg</link>
      <guid>https://dev.to/massiron/the-agent-os-why-we-need-an-execution-runtime-not-another-chatbot-1hgg</guid>
      <description>&lt;p&gt;We’re entering the third era of AI. First came chatbots — GPT-3, Claude, Llama. You type, it replies. Useful for drafting emails and brainstorming. Then came copilots — GitHub Copilot, Cursor, Claude Code. They edit code inline, but they’re tethered to a single vendor or model, and they’re still suggestion engines at heart.&lt;/p&gt;

&lt;p&gt;Era 3 is the agent runtime. Instead of asking an AI to "suggest a refactor," you tell it to "refactor this module, run the tests, and commit if they pass." That’s a task, not a suggestion. It needs file I/O, git, bash, network calls — and it needs to do them deterministically, auditably, and safely.&lt;/p&gt;

&lt;p&gt;That’s where &lt;strong&gt;deepstrain&lt;/strong&gt; comes in. It’s an AI execution substrate: model-agnostic, antifragile, and terminal-native. You install it with &lt;code&gt;pip install deepstrain&lt;/code&gt;, point it at any OpenAI-compatible model (Ollama, Claude, GPT-4o, DeepSeek), and get 52 built-in tools: file I/O, git, bash, network, database, MCP server. It runs fully offline with local models — no data leaves your machine.&lt;/p&gt;

&lt;p&gt;What makes it different from black-box agents like AutoGPT or CrewAI? &lt;strong&gt;Plan-first execution.&lt;/strong&gt; Before deepstrain touches a single file, it writes a human-reviewable plan. You see every step, approve or reject, and inspect the full decision log with stack traces. No silent crashes — rotating error logs ensure graceful degradation.&lt;/p&gt;

&lt;p&gt;For code analysis, deepstrain integrates atlas for deterministic parsing — no hallucinations in understanding your codebase. It supports 19 capability domains: security scanning, cloud provisioning, infra management, math, media processing, and more.&lt;/p&gt;

&lt;p&gt;Pricing? Free mode gives you read-only tools (lint, search, analyze). Pro license is $9/month for HMAC activation and priority support. Bring your own API key — tasks cost ~$0.009 with DeepSeek, or free with Ollama.&lt;/p&gt;

&lt;p&gt;This isn’t another chatbot wrapper. It’s the OS layer for autonomous engineering. Plan-first, local-first, model-agnostic.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install deepstrain&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;: &lt;code&gt;pip install deepstrain&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Repo&lt;/strong&gt;: &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;https://github.com/mete-dotcom/deepstrain&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Site&lt;/strong&gt;: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;https://massiron.com/deepstrain&lt;/a&gt;&lt;/p&gt;

</description>
      <category>deepstrain</category>
    </item>
    <item>
      <title>Deepstrain: An AI Execution Substrate That Replaces Black-Box Agents With Controllable Engineering Runtimes</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:03:16 +0000</pubDate>
      <link>https://dev.to/massiron/deepstrain-an-ai-execution-substrate-that-replaces-black-box-agents-with-controllable-engineering-5cj3</link>
      <guid>https://dev.to/massiron/deepstrain-an-ai-execution-substrate-that-replaces-black-box-agents-with-controllable-engineering-5cj3</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;AI coding assistants are everywhere, but most of them share a fundamental flaw: they're black boxes. You give them a prompt, they start spamming tools, and you have no idea what they're about to do until it's done — or worse, until they've already made a mess.&lt;/p&gt;

&lt;p&gt;Claude Code locks you into Anthropic. Cursor locks you into their backend. GitHub Copilot can't touch your file system. AutoGPT and CrewAI act first, plan never.&lt;/p&gt;

&lt;p&gt;If you're building production software, this is unacceptable. You need visibility. You need control. You need to know what your agent is thinking before it touches a single file.&lt;/p&gt;

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

&lt;p&gt;Deepstrain is a terminal-native AI execution substrate. Think of it as an operating system for AI agents — model-agnostic, antifragile, and built for engineers who refuse to surrender their workflow to a black box.&lt;/p&gt;

&lt;p&gt;It runs on top of any OpenAI-compatible model: Ollama (local, free), Claude, GPT-4o, DeepSeek, or your own custom backend. You bring the model, deepstrain provides the runtime.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concrete Example: Automated PR Review
&lt;/h2&gt;

&lt;p&gt;Here's a real use case. You're an open-source maintainer. Someone submits a PR. You want an AI to review it, but you don't want it hallucinating issues or making changes without your approval.&lt;/p&gt;

&lt;p&gt;With deepstrain, you set up a plan-first execution:&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;# Install&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;deepstrain

&lt;span class="c"&gt;# Run with a local Ollama model&lt;/span&gt;
deepstrain run &lt;span class="nt"&gt;--model&lt;/span&gt; ollama:codellama &lt;span class="nt"&gt;--plan-only&lt;/span&gt; &lt;span class="s2"&gt;"Review PR #42: check for security issues, verify tests pass, suggest refactoring"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deepstrain writes a plan first — a human-readable list of steps it intends to take. You review it. If it looks good, you approve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain approve &lt;span class="nt"&gt;--task-id&lt;/span&gt; abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it executes. Every tool call is logged with a stack trace and context. If a tool fails, it degrades gracefully — no silent crashes, no hidden errors.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;52 built-in tools&lt;/strong&gt; — file I/O, git, bash, network, database queries, MCP server integration. You're not limited to a curated set of actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deterministic code analysis&lt;/strong&gt; — via atlas integration, deepstrain doesn't guess about your code. It reads the AST, resolves symbols, and produces factual results. No hallucinations in code analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Portable capabilities&lt;/strong&gt; — 19 domains including security scanning, verification, cloud operations, infrastructure management, math, and media processing. You can compose these into custom workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inspectable cognition&lt;/strong&gt; — every decision the model makes is logged. You can replay the entire reasoning chain after the fact. This is critical for debugging and auditing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Antifragile by design&lt;/strong&gt; — rotating error logs, graceful degradation when a tool fails, and never a silent crash. If something goes wrong, you know exactly what and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing and Trade-offs
&lt;/h2&gt;

&lt;p&gt;Deepstrain is free to install from PyPI. You can start immediately with a trial key. The Pro license is $9/month for HMAC activation and priority support.&lt;/p&gt;

&lt;p&gt;If you bring your own API key (DeepSeek, for example), each task costs roughly $0.009. If you use Ollama locally, it's completely free — no data leaves your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Honest limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The plan-first workflow adds a step. If you want a fire-and-forget agent, this isn't it.&lt;/li&gt;
&lt;li&gt;Local models like CodeLlama are slower than cloud models. That's the trade-off for privacy and zero data exfiltration.&lt;/li&gt;
&lt;li&gt;The tool ecosystem is 52 tools strong, but it's not infinite. If you need something exotic, you might need to extend it via MCP.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The era of black-box AI agents is ending. Engineers are demanding transparency, control, and the ability to run models on their own infrastructure. Deepstrain is the runtime layer that makes this possible.&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Try it with Ollama first — no cost, no data leaving your machine, and full inspectability from the first command.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;: &lt;code&gt;pip install deepstrain&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Repo&lt;/strong&gt;: &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;https://github.com/mete-dotcom/deepstrain&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Site&lt;/strong&gt;: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;https://massiron.com/deepstrain&lt;/a&gt;&lt;/p&gt;

</description>
      <category>deepstrain</category>
    </item>
    <item>
      <title>Building Controllable AI Agents: Why I Stopped Using Black-Box Tool-Spammers</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:03:00 +0000</pubDate>
      <link>https://dev.to/massiron/building-controllable-ai-agents-why-i-stopped-using-black-box-tool-spammers-f2k</link>
      <guid>https://dev.to/massiron/building-controllable-ai-agents-why-i-stopped-using-black-box-tool-spammers-f2k</guid>
      <description>&lt;h2&gt;
  
  
  The Problem with Most AI Coding Agents
&lt;/h2&gt;

&lt;p&gt;If you've tried AutoGPT, CrewAI, or similar agent frameworks, you've probably seen this: the agent starts spamming tools in random order, writes files without telling you, and when something breaks — it just retries silently. Debugging becomes impossible because there's no trace of what the agent was thinking.&lt;/p&gt;

&lt;p&gt;I ran into this wall while automating PR reviews for an open-source project. The agent would attempt a git merge, fail, then try something else — and I'd only find out after a CI failure. I needed &lt;strong&gt;controllable, auditable execution&lt;/strong&gt;, not a black box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Deepstrain
&lt;/h2&gt;

&lt;p&gt;Deepstrain is a terminal-native AI execution substrate. It's model-agnostic (works with Ollama, Claude, GPT-4o, DeepSeek, any OpenAI-compatible backend), antifragile, and built around &lt;strong&gt;plan-first execution&lt;/strong&gt;. Before touching any files, the agent writes a plan you can review and approve.&lt;/p&gt;

&lt;p&gt;Here's a real example: I wanted to refactor a Python module — rename a function, update all call sites, and run tests. With Deepstrain, I ran:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain run &lt;span class="s2"&gt;"Rename &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;calculate_total&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt; to &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;compute_sum&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt; in src/ and update all usages. Run tests after."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deepstrain first printed a plan:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Plan:
1. Read src/calculator.py to find `calculate_total` definition
2. Read tests/test_calculator.py to find usages
3. Use `sed` to rename in both files
4. Run `pytest tests/` to verify
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I reviewed it, hit 'y', and watched each step execute with full logging. Every command, every file read/write, every error — logged with stack trace. When a test failed because I forgot a second import, the error was captured, the agent adjusted, and I could see exactly what changed.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;52 built-in tools&lt;/strong&gt;: file I/O, git, bash, network, database, MCP server — all sandboxed and logged&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic code analysis&lt;/strong&gt; via atlas integration: no hallucinations in code understanding, because it uses actual AST parsing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspectable cognition&lt;/strong&gt;: every decision is logged with context. You can replay the entire session&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Antifragile&lt;/strong&gt;: rotating error logs, graceful degradation. If a tool fails, the agent doesn't crash — it reports and retries with a different approach&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model-agnostic&lt;/strong&gt;: run with Ollama locally (free, no data leaves your machine) or bring your own API key (e.g., DeepSeek at ~$0.009/task)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trade-offs (Being Honest)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Terminal-native&lt;/strong&gt;: no GUI. If you prefer a visual interface, this isn't for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning curve&lt;/strong&gt;: the plan-first workflow takes getting used to. You can't just fire-and-forget.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro license&lt;/strong&gt;: $9/month for HMAC activation and priority support. The free mode gives read-only tools (file reading, git log, etc.) — useful for auditing but not for writing code.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where It Shines
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD pipelines&lt;/strong&gt;: run automated refactoring with full audit trails&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR review automation&lt;/strong&gt;: read diffs, suggest changes, run tests — all logged&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-source maintenance&lt;/strong&gt;: bulk rename, migrate imports, generate test stubs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local-first development&lt;/strong&gt;: pair with Ollama for a completely offline AI assistant&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then grab a trial key from the repo or run with a local model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain &lt;span class="nt"&gt;--model&lt;/span&gt; ollama:codellama run &lt;span class="s2"&gt;"Explain the architecture of this project"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No cloud dependency. No vendor lock-in. Just a terminal, a model, and a plan.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Deepstrain is open-source (MIT license) on &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Pro features are $9/month. More details at &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;massiron.com/deepstrain&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;: &lt;code&gt;pip install deepstrain&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Repo&lt;/strong&gt;: &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;https://github.com/mete-dotcom/deepstrain&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Site&lt;/strong&gt;: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;https://massiron.com/deepstrain&lt;/a&gt;&lt;/p&gt;

</description>
      <category>deepstrain</category>
    </item>
    <item>
      <title>I Built a Terminal-Native AI Agent That Plans Before Acting — Here's Why It Matters</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 14:02:59 +0000</pubDate>
      <link>https://dev.to/massiron/i-built-a-terminal-native-ai-agent-that-plans-before-acting-heres-why-it-matters-3ief</link>
      <guid>https://dev.to/massiron/i-built-a-terminal-native-ai-agent-that-plans-before-acting-heres-why-it-matters-3ief</guid>
      <description>&lt;h2&gt;
  
  
  The Problem with Black-Box Agents
&lt;/h2&gt;

&lt;p&gt;Last month, I watched an AI agent delete a production database migration file. No warning. No audit trail. The agent just... decided it wasn't needed. That's when I realized: most AI coding tools are black boxes. You feed them a prompt, they start spamming tools, and you pray they don't break things.&lt;/p&gt;

&lt;p&gt;Deepstrain is my attempt to fix this. It's an open-source, terminal-native AI execution substrate that runs on any model — Ollama, Claude, GPT-4o, DeepSeek, anything OpenAI-compatible. The core idea: &lt;strong&gt;plan first, execute second, log everything&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;Install it:&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure a backend (Ollama is free, local, and private):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain config &lt;span class="nb"&gt;set &lt;/span&gt;backend ollama
deepstrain config &lt;span class="nb"&gt;set &lt;/span&gt;model llama3.2:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then give it a task. Instead of silently running commands, Deepstrain first generates a plan:&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="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;deepstrain run &lt;span class="s2"&gt;"Refactor the authentication module to use JWT instead of session cookies"&lt;/span&gt;
&lt;span class="go"&gt;
── Planning ──
1. Read auth.py to understand current session-based logic
2. Identify all route handlers that use request.session
3. Create a new jwt_utils.py with encode/decode helpers
4. Update auth.py to import and use jwt_utils
5. Write unit tests for the new JWT flow
6. Run existing tests to verify no regressions

── Review Plan? (y/n) ──
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You review the plan. You approve it. Then it executes, step by step, with every command logged to a rotating error file. If something fails, it degrades gracefully — no silent crashes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes It Different
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model-agnostic&lt;/strong&gt;: Run it with GPT-4o, Claude, or a local Llama model via Ollama. No vendor lock-in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;52 built-in tools&lt;/strong&gt;: File I/O, git, bash, network, database queries, MCP server — all accessible from the terminal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic code analysis&lt;/strong&gt;: Atlas integration means no hallucinations when analyzing code structure. It reads the AST, not the model's memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspectable cognition&lt;/strong&gt;: Every decision is logged with a stack trace and context. You can replay any session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Antifragile&lt;/strong&gt;: Rotating error logs, graceful degradation, never silent crashes. If a tool fails, it retries or asks for input.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real Use Case: Bulk Refactoring
&lt;/h2&gt;

&lt;p&gt;I used Deepstrain to migrate a 50-file Flask app from template inheritance to a component-based structure. Here's the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain run &lt;span class="s2"&gt;"Convert all Jinja2 templates to use component includes instead of block inheritance"&lt;/span&gt; &lt;span class="nt"&gt;--read-only-first&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--read-only-first&lt;/code&gt; flag runs the entire plan in read-only mode first. No files are touched until I explicitly approve the execution. It generated a 14-step plan, I reviewed it in 2 minutes, approved it, and watched it refactor 50 files in 30 seconds with zero errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations (Honest Ones)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It's terminal-native. No GUI, no VS Code extension (yet). You need to be comfortable with a command line.&lt;/li&gt;
&lt;li&gt;The plan-first flow adds friction. For simple tasks like "what's the weather?", it's overkill. But for code changes, that friction saves you from disasters.&lt;/li&gt;
&lt;li&gt;The Pro license ($9/month) is required for HMAC activation and priority support. The free tier gives you read-only tools and a trial key — enough to evaluate everything.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Solo developers who want AI assistance without sending code to third-party servers&lt;/li&gt;
&lt;li&gt;Engineering teams that need auditable AI agents for CI/CD pipelines&lt;/li&gt;
&lt;li&gt;Open-source maintainers automating PR reviews and test generation&lt;/li&gt;
&lt;li&gt;Anyone tired of black-box agents that act without permission&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It
&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo: &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;github.com/mete-dotcom/deepstrain&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;massiron.com/deepstrain&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bring your own API key (DeepSeek costs ~$0.009/task) or use Ollama for free. No data leaves your machine.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Install&lt;/strong&gt;: &lt;code&gt;pip install deepstrain&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Repo&lt;/strong&gt;: &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;https://github.com/mete-dotcom/deepstrain&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Site&lt;/strong&gt;: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;https://massiron.com/deepstrain&lt;/a&gt;&lt;/p&gt;

</description>
      <category>deepstrain</category>
    </item>
    <item>
      <title>Running a Local AI Engineering Agent with deepstrain: A Step-by-Step Tutorial</title>
      <dc:creator>massiron</dc:creator>
      <pubDate>Mon, 08 Jun 2026 08:32:37 +0000</pubDate>
      <link>https://dev.to/massiron/running-a-local-ai-engineering-agent-with-deepstrain-a-step-by-step-tutorial-1l55</link>
      <guid>https://dev.to/massiron/running-a-local-ai-engineering-agent-with-deepstrain-a-step-by-step-tutorial-1l55</guid>
      <description>&lt;p&gt;If you've ever wanted an AI agent that can read your codebase, run git commands, and execute bash scripts—all without sending a single byte to the cloud—deepstrain is worth a look. It's a local agent runner that connects to any OpenAI-compatible LLM (Ollama, LM Studio, GPT-4o, Claude) and gives you 52 built-in tools. The key difference from other agents: it plans first, then acts. You see the step-by-step reasoning before any tool runs.&lt;/p&gt;

&lt;p&gt;Here's how to get it running in five minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Install
&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;deepstrain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No Docker, no API keys, no cloud setup. The package pulls in dependencies for file I/O, git, bash, web fetching, and code analysis via atlas.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Configure an LLM Backend
&lt;/h2&gt;

&lt;p&gt;deepstrain needs an LLM behind it. If you have Ollama running locally with a model like &lt;code&gt;codellama&lt;/code&gt; or &lt;code&gt;deepseek-coder&lt;/code&gt;, create a config file:&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="c1"&gt;# config.yaml&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;provider&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;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;codellama:7b&lt;/span&gt;
  &lt;span class="na"&gt;base_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://localhost:11434/v1&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For LM Studio, point to its local server:&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="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openai-compatible&lt;/span&gt;
  &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;local-model&lt;/span&gt;
  &lt;span class="na"&gt;base_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;http://localhost:1234/v1&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;not-needed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use a cloud API (still fully local execution, just the LLM call goes out):&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="na"&gt;provider&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;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save this as &lt;code&gt;deepstrain.yml&lt;/code&gt; in your project root. If you skip it, deepstrain will prompt you interactively.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Run Your First Task
&lt;/h2&gt;

&lt;p&gt;Let's ask it to summarize the git log of the current repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain &lt;span class="s2"&gt;"Show me a summary of the last 5 commits, grouped by author"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before any tool runs, you'll see the plan printed to stdout. Something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Plan]
1. Run `git log --oneline -5` to get recent commits
2. Parse the output by author
3. Print grouped summary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it executes step by step. Each tool call is logged with input, output, and duration.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. See the Crash-Proof Logging
&lt;/h2&gt;

&lt;p&gt;If a tool fails (e.g., network timeout on a web fetch), deepstrain doesn't crash silently. It writes a rotating log to &lt;code&gt;~/.deepstrain/logs/&lt;/code&gt; with full context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2025-03-20 14:32:01 | ERROR | web_fetch | https://example.com/api
  Tool: web_fetch
  Args: {"url": "https://example.com/api", "timeout": 10}
  Error: ConnectionError("Connection refused")
  Plan step: 2 of 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get a friendly message in the terminal: "Web fetch failed. Retrying once..." If it fails again, the agent reports the error and asks if you want to continue.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Try a Real Refactoring Task with atlas
&lt;/h2&gt;

&lt;p&gt;One of the 52 tools is &lt;code&gt;code_analysis&lt;/code&gt; which uses atlas for deterministic code intelligence. Let's say you want to rename a function across a Python project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain &lt;span class="s2"&gt;"Find all callers of function &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;parse_config&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt; in src/ and rename it to &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;load_config&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;code_analysis&lt;/code&gt; to build a call graph&lt;/li&gt;
&lt;li&gt;List all files with references&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;file_read&lt;/code&gt; and &lt;code&gt;file_write&lt;/code&gt; to make changes&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;git diff&lt;/code&gt; to show you the diff before applying&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You approve each change interactively.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Activation and Pricing
&lt;/h2&gt;

&lt;p&gt;deepstrain uses HMAC-SHA256 licensing with edge revocation. After install, you get a free trial. For Pro ($9/mo), you get unlimited tools, priority support, and offline activation. If you bring your own DeepSeek API key, each task costs about $0.009.&lt;/p&gt;

&lt;p&gt;Activate with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deepstrain &lt;span class="nt"&gt;--activate&lt;/span&gt; YOUR_LICENSE_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once activated, it works fully offline—no phone-home required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Just Use Ollama or LangChain?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Raw Ollama gives you a chat interface, not an agent with 52 tools and retry logic.&lt;/li&gt;
&lt;li&gt;LangChain requires wiring up chains, memory, and error handling yourself.&lt;/li&gt;
&lt;li&gt;deepstrain is &lt;code&gt;pip install&lt;/code&gt; and a single command. Zero boilerplate.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/mete-dotcom/deepstrain" rel="noopener noreferrer"&gt;https://github.com/mete-dotcom/deepstrain&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Site with full docs: &lt;a href="https://massiron.com/deepstrain" rel="noopener noreferrer"&gt;https://massiron.com/deepstrain&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Try it on a small codebase first—you can always see the plan before it touches your files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feedback welcome. If you hit an edge case, the logs will tell you exactly what happened.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
