<?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: Francisco Pérez</title>
    <description>The latest articles on DEV Community by Francisco Pérez (@francisco_prez_6e771da1b).</description>
    <link>https://dev.to/francisco_prez_6e771da1b</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%2F3729227%2F8511fab1-8940-414b-ab4f-e5b9d3aaecb0.png</url>
      <title>DEV Community: Francisco Pérez</title>
      <link>https://dev.to/francisco_prez_6e771da1b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/francisco_prez_6e771da1b"/>
    <language>en</language>
    <item>
      <title>I Built a Code Intelligence Engine — Here's How CIE Works</title>
      <dc:creator>Francisco Pérez</dc:creator>
      <pubDate>Fri, 23 Jan 2026 21:45:42 +0000</pubDate>
      <link>https://dev.to/francisco_prez_6e771da1b/i-built-a-free-alternative-to-sourcegraph-cody-heres-how-cie-works-3f3f</link>
      <guid>https://dev.to/francisco_prez_6e771da1b/i-built-a-free-alternative-to-sourcegraph-cody-heres-how-cie-works-3f3f</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;AI coding assistants are everywhere — Claude Code, Cursor, GitHub Copilot. But they all share the same limitation: they don't truly understand your codebase.&lt;/p&gt;

&lt;p&gt;They see files in isolation. Ask "how does authentication work in this project?" and they'll grep for "auth" and hope for the best.&lt;/p&gt;

&lt;p&gt;I wanted real code intelligence.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CIE (Code Intelligence Engine)&lt;/strong&gt; — 20+ tools that give AI assistants deep understanding of your entire codebase.&lt;/p&gt;

&lt;p&gt;Free, open-source, runs 100% locally.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  The Killer Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Multi-Pattern Search
&lt;/h3&gt;

&lt;p&gt;Search for multiple patterns in ONE call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query: ["TODO", "FIXME", "HACK", "BUG"]
Result: 47 matches, grouped by pattern with file locations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This replaces running 4 separate grep commands. Game changer for batch searches and codebase audits.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Security Audit Automation
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;cie_verify_absence&lt;/code&gt; confirms dangerous patterns DON'T exist in your codebase:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query: Verify no hardcoded API keys or passwords
Result: ✅ Verified — no matches found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Critical for CI/CD security pipelines. Automate what used to be manual code review.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Complete Call Graph Analysis
&lt;/h3&gt;

&lt;p&gt;See who calls a function AND what it calls — in one view:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query: Analyze UserService.CreateUser

Result:
Callers (3): RegisterHandler, AdminController, ImportService
Callees (12): ValidateEmail, HashPassword, db.Insert, SendWelcomeEmail...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understand the full impact of changing any function.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Semantic Search That Actually Works
&lt;/h3&gt;

&lt;p&gt;Find code by meaning, not just text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query: "validate user input before saving to database"
Result: SanitizeUserInput (87% match) — internal/validation/user.go:42
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It found the right function even though the name doesn't match your query. That's the power of embeddings.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Instant API Discovery
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;cie_list_endpoints&lt;/code&gt; finds all your HTTP endpoints automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[GET]    /api/users           → GetUsers
[POST]   /api/users           → CreateUser
[GET]    /api/users/:id       → GetUserByID
[PUT]    /api/users/:id       → UpdateUser
[DELETE] /api/users/:id       → DeleteUser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;cie_list_services&lt;/code&gt; does the same for gRPC services.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Module Structure at a Glance
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;cie_directory_summary&lt;/code&gt; shows what's in each package:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;internal/auth/
├── middleware.go    → AuthMiddleware, ValidateToken, RefreshToken
├── jwt.go           → GenerateJWT, ParseJWT, ValidateClaims
└── oauth.go         → OAuthCallback, ExchangeCode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfect for onboarding or understanding unfamiliar code.&lt;/p&gt;

&lt;h2&gt;
  
  
  All 20+ Tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Search &amp;amp; Discovery&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cie_grep&lt;/code&gt; — Multi-pattern literal search&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_search_text&lt;/code&gt; — Regex search&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_semantic_search&lt;/code&gt; — Natural language code search&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_find_function&lt;/code&gt; — Direct name lookup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architecture Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cie_analyze&lt;/code&gt; — Answer architectural questions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_list_endpoints&lt;/code&gt; — HTTP API discovery&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_list_services&lt;/code&gt; — gRPC service listing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_directory_summary&lt;/code&gt; — Module structure overview&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dependency Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cie_find_callers&lt;/code&gt; — Who calls this function?&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_find_callees&lt;/code&gt; — What does this function call?&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_get_call_graph&lt;/code&gt; — Combined view of both&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_trace_path&lt;/code&gt; — Trace execution from A to B&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Type System&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cie_find_type&lt;/code&gt; — Find structs/interfaces&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_find_implementations&lt;/code&gt; — Find interface implementations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cie_verify_absence&lt;/code&gt; — Verify patterns don't exist&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cie_raw_query&lt;/code&gt; — Custom CozoScript queries&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Recommended Workflows
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Exploring a new codebase:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;cie_directory_summary&lt;/code&gt; → understand structure&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_list_endpoints&lt;/code&gt; → map API surface&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_semantic_search&lt;/code&gt; → find specific features&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;cie_find_function&lt;/code&gt; → locate the function&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_get_call_graph&lt;/code&gt; → see all dependencies&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_trace_path&lt;/code&gt; → understand execution flow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Security review:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;cie_verify_absence&lt;/code&gt; → check for secrets, credentials&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cie_grep&lt;/code&gt; → batch search for security patterns&lt;/li&gt;
&lt;/ol&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;Cursor&lt;/th&gt;
&lt;th&gt;GitHub Copilot&lt;/th&gt;
&lt;th&gt;CIE&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;td&gt;$20-200/mo&lt;/td&gt;
&lt;td&gt;$10-39/mo&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-pattern search&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security audit (verify_absence)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Call graph analysis&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-hosted&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100% Local&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Go&lt;/strong&gt; — fast, single binary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tree-sitter&lt;/strong&gt; — AST parsing (Go, Python, JS, TS, more)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CozoDB + RocksDB&lt;/strong&gt; — Datalog queries for graph traversal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; — local embeddings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Compose&lt;/strong&gt; — simple infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew tap kraklabs/cie &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew &lt;span class="nb"&gt;install &lt;/span&gt;cie

&lt;span class="nb"&gt;cd&lt;/span&gt; /path/to/your/repo
cie init &lt;span class="nt"&gt;-y&lt;/span&gt;
cie start
cie index
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configure your MCP client (Claude Code, Cursor):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cie"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cie"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"--mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

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

&lt;p&gt;If you find it useful, a ⭐ helps a lot.&lt;/p&gt;

&lt;p&gt;Questions? Drop them in the comments — happy to discuss architecture or use cases.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>go</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
