<?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: Bidit Das</title>
    <description>The latest articles on DEV Community by Bidit Das (@biditdas18).</description>
    <link>https://dev.to/biditdas18</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1453244%2F745c2c1e-b3c6-4754-849c-e9191150c09b.jpeg</url>
      <title>DEV Community: Bidit Das</title>
      <link>https://dev.to/biditdas18</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/biditdas18"/>
    <language>en</language>
    <item>
      <title>Asterism: A Local-First Knowledge Graph That Grows From Your Claude Chat History</title>
      <dc:creator>Bidit Das</dc:creator>
      <pubDate>Tue, 14 Jul 2026 00:46:54 +0000</pubDate>
      <link>https://dev.to/biditdas18/asterism-a-local-first-knowledge-graph-that-grows-from-your-claude-chat-history-2k59</link>
      <guid>https://dev.to/biditdas18/asterism-a-local-first-knowledge-graph-that-grows-from-your-claude-chat-history-2k59</guid>
      <description>&lt;p&gt;Every LLM conversation disappears the moment you close the tab. Ask something today, revisit the same idea next week, and it has no memory of ever having thought about it with you. Each thread is an island.&lt;/p&gt;

&lt;p&gt;I wanted something different: conversations that accumulate into an actual picture of what I care about, not a transcript archive, but something closer to how memory itself works.&lt;/p&gt;

&lt;p&gt;That's what led to &lt;strong&gt;Asterism&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;Asterism parses your exported Claude conversation history and builds a local knowledge graph. It extracts &lt;code&gt;(entity, relationship, entity)&lt;/code&gt; triples, and every time a concept resurfaces in a later conversation, the connection to it strengthens. Stop engaging with an idea, and it fades, eventually dropping off the graph entirely.&lt;/p&gt;

&lt;p&gt;The result renders as an interactive constellation. Concepts you return to often glow brighter and sit more centrally. Concepts you've moved on from dim and drift into the dark.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hebbian learning&lt;/strong&gt; — edges strengthen each time the LLM traverses them (&lt;code&gt;weight += 0.2&lt;/code&gt; per traversal). Concepts left unrevisited for 3 hours of session time decay and vanish.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You are the central node&lt;/strong&gt; — your own node sits at the center of the graph at full brightness, always. It never decays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local SQLite storage&lt;/strong&gt; — the entire graph lives in &lt;code&gt;~/.asterism/asterism.db&lt;/code&gt;. No cloud, no sync, no accounts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM context injection&lt;/strong&gt; — relevant nodes and edges get injected into the Claude prompt automatically, so the model has implicit awareness of your past thinking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triple extraction&lt;/strong&gt; — a fast extraction model (local Ollama or Anthropic Haiku) pulls structured relationships out of each exchange.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Built local-first, on purpose
&lt;/h2&gt;

&lt;p&gt;The only external calls are to the Anthropic API for chat responses and, optionally, Haiku for extraction. Extraction can also run fully offline via Ollama. No telemetry, no accounts, delete &lt;code&gt;~/.asterism/&lt;/code&gt; for a clean slate.&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;SQLite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Graph&lt;/td&gt;
&lt;td&gt;NetworkX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visualization&lt;/td&gt;
&lt;td&gt;Vanilla JS force simulation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;Anthropic SDK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extraction&lt;/td&gt;
&lt;td&gt;Ollama &lt;code&gt;llama3.2:3b&lt;/code&gt; or Anthropic Haiku&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI&lt;/td&gt;
&lt;td&gt;Streamlit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLI&lt;/td&gt;
&lt;td&gt;Click&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Where it's headed
&lt;/h2&gt;

&lt;p&gt;This is v0.1.0, early and rough. Here's the direction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Beyond Claude&lt;/strong&gt; — a memory layer that works across whichever frontier LLM you're using, not locked to one provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-friction install&lt;/strong&gt; — no API keys, no local Python setup, cached in-browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simpler onboarding&lt;/strong&gt; — fewer steps between finding it and running it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've worked on local-first tools, LLM memory/context systems, or graph-based retrieval, I'd genuinely value your take on what to prioritize next.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/biditdas18/asterism" rel="noopener noreferrer"&gt;https://github.com/biditdas18/asterism&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F893hxvslrm23o2wq7omz.gif" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F893hxvslrm23o2wq7omz.gif" alt="Asterism GIF" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>python</category>
      <category>llm</category>
    </item>
  </channel>
</rss>
