<?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: Aviad Shakargy</title>
    <description>The latest articles on DEV Community by Aviad Shakargy (@shakargy).</description>
    <link>https://dev.to/shakargy</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%2F3944913%2Fd149c8a2-52c2-4ab1-95ca-78577227792b.png</url>
      <title>DEV Community: Aviad Shakargy</title>
      <link>https://dev.to/shakargy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shakargy"/>
    <language>en</language>
    <item>
      <title>Your repo has a file called stripe/webhook.ts. It does nothing.</title>
      <dc:creator>Aviad Shakargy</dc:creator>
      <pubDate>Mon, 20 Jul 2026 21:31:21 +0000</pubDate>
      <link>https://dev.to/shakargy/your-repo-has-a-file-called-stripewebhookts-it-does-nothing-3069</link>
      <guid>https://dev.to/shakargy/your-repo-has-a-file-called-stripewebhookts-it-does-nothing-3069</guid>
      <description>&lt;p&gt;Here is a file from a real, well-known open-source repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pages/api/stripe/webhook.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If you grep a codebase and find that file, you will conclude the app handles Stripe webhooks. Your coding agent will conclude the same thing, faster, and with more confidence.&lt;/p&gt;

&lt;p&gt;Here is the entire handler:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_req&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;NextApiRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;NextApiResponse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Billing webhooks are not available in community edition&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It does nothing. The feature lives in a paid edition. The file name makes a claim the code does not keep.&lt;/p&gt;

&lt;p&gt;I found this while testing my own tool against Cal.com, and it changed what I was building.&lt;/p&gt;

&lt;p&gt;DevTime started as a local-first CLI that scans a repository and explains it from evidence. As of v0.4.0, it has become something more specific: &lt;strong&gt;a verification layer&lt;/strong&gt;. You state a claim about the repository, and DevTime tells you whether the code can actually back it.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Idea: Claims, Not Vibes
&lt;/h2&gt;

&lt;p&gt;A claim is a statement about a repository. "Billing webhooks verify signatures." "Authentication uses JWT access tokens."&lt;/p&gt;

&lt;p&gt;Most tools answer these questions with pattern matching and confidence. DevTime answers with a status and receipts:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;devtime-ei
&lt;span class="nb"&gt;cd &lt;/span&gt;your-repo
dtc init
dtc scan
dtc verify billing-webhook-signature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Billing Webhook Signature Verification
Claim: Incoming billing webhooks verify the provider's signature.
Status: SUPPORTED

Why:
  - Signature verification behavior evidence was found.
  - A test exercises signature behavior.

Supporting evidence:
  - src/billing/stripe-webhook.ts  [strong]
      Verifies the provider's webhook signature.
  - tests/stripe-signature.test.ts  [moderate]
      Test exercises webhook signature behavior.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Four possible statuses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SUPPORTED&lt;/strong&gt; - required behavior evidence exists in the current scan&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WEAK&lt;/strong&gt; - the surface exists, but the proving evidence is missing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CONTRADICTED&lt;/strong&gt; - credible evidence conflicts with the claim&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UNKNOWN&lt;/strong&gt; - no relevant surface found, or coverage cannot responsibly decide&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Statuses mean "per the evidence rules", never formal proof. The tool says so itself.&lt;/p&gt;
&lt;h2&gt;
  
  
  Contradictions Show Both Sides, Always
&lt;/h2&gt;

&lt;p&gt;Back to that stub file. Run the same claim against a repo where the handler is a 404 stub:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Status: CONTRADICTED

Contradictions:
  - The billing webhook endpoint cannot verify signatures
    because it is a disabled stub.
      claimed:  pages/api/stripe/webhook.ts is named and routed
                as a billing webhook endpoint.
      observed: The handler's only behavior is a 404/501 response.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;No vague "authentication may be inconsistent" warnings. A contradiction names what claimed the behavior, what the code actually does, and the exact paths. You can go check.&lt;/p&gt;

&lt;p&gt;There is a second detector for the classic case: documentation says JWT, but the only JWT usage in the code is invitation tokens, not access tokens. Both sides, exact files.&lt;/p&gt;

&lt;p&gt;One rule I care about a lot: &lt;strong&gt;absence is not a contradiction&lt;/strong&gt;. Documentation with no matching code is WEAK, missing evidence. CONTRADICTED requires positive conflicting evidence on both sides. A tool that cries contradiction on every gap would be noise within a week.&lt;/p&gt;
&lt;h2&gt;
  
  
  Truth and Freshness Are Separate Axes
&lt;/h2&gt;

&lt;p&gt;A claim you verified last month is not the same as a claim that still holds.&lt;/p&gt;

&lt;p&gt;Every verification stores fingerprints of its evidence files. When any of them changes, the claim goes stale, and DevTime names the file:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;billing-webhook-signature
  last status: SUPPORTED   freshness: STALE
    changed since verification: src/billing/stripe-webhook.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Only evidence files count. You can rewrite the rest of the repo and nothing flags. That restraint is deliberate: staleness alerts that fire on every commit train people to ignore staleness alerts.&lt;/p&gt;

&lt;p&gt;The diff review picks this up too:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc risk &lt;span class="nt"&gt;--diff&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claim impact:
  - billing-webhook-signature (previous status: SUPPORTED)
      changed evidence: src/billing/stripe-webhook.ts
      re-verify: dtc verify billing-webhook-signature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Your diff does not just touch files. It destabilizes specific verified claims, and now the review says which ones.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why This Matters More With Agents
&lt;/h2&gt;

&lt;p&gt;Coding agents read file names and README statements, then act on them with full confidence. The stub webhook above is exactly the kind of thing an agent gets wrong: it would "know" the repo handles Stripe webhooks, and build on payment logic that does not exist in that edition.&lt;/p&gt;

&lt;p&gt;DevTime ships a read-only MCP server, so agents can ask instead of guess:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"devtime-ei[mcp]"&lt;/span&gt;
claude mcp add devtime &lt;span class="nt"&gt;--&lt;/span&gt; dtc mcp start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The agent gets four tools, including this one:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;verify_claim -&amp;gt; status, why, supporting evidence, contradictions,
                missing evidence, coverage limitations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Local stdio only. No network listener. No source code returned. And no LLM anywhere in the truth path: verification is deterministic and rule-driven, so the same repo state always produces the same answer.&lt;/p&gt;
&lt;h2&gt;
  
  
  What It Is Not
&lt;/h2&gt;

&lt;p&gt;Honesty section, because the tool is built on one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is a heuristic scanner. Evidence comes from static patterns, not execution.&lt;/li&gt;
&lt;li&gt;Two built-in claims so far (billing webhook signatures, JWT authentication). User-defined claims are deliberately postponed until the built-in ones prove trustworthy on real repositories.&lt;/li&gt;
&lt;li&gt;Statuses are evidence policy, not security certification.&lt;/li&gt;
&lt;li&gt;Strongest on TypeScript/Next.js/Express/FastAPI-style repos. Coverage limits are documented, and the tool prints its own blind spots during scans.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every wrong output can become a regression fixture. That is the deal I offer: if DevTime says something your repository cannot back up, that report makes the tool permanently better.&lt;/p&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;pipx &lt;span class="nb"&gt;install &lt;/span&gt;devtime-ei
dtc demo init
&lt;span class="nb"&gt;cd &lt;/span&gt;devtime-demo-saas
dtc init
dtc scan
dtc verify
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The demo repo ships in the package, so you can see SUPPORTED and then break it yourself and watch the status flip.&lt;/p&gt;
&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;
        Shakargy
      &lt;/a&gt; / &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;
        devtime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first Engineering Intelligence for software repositories.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DevTime&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Local-first Engineering Intelligence for software repositories.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevTime helps a codebase explain itself from evidence.&lt;/p&gt;

&lt;p&gt;It scans code, tests, configs, routes, and decisions to identify supported software
concepts, link claims to files, surface uncertainty, and warn about a narrow set of
risky changes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No cloud. No telemetry. No code execution. No AI required.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shakargy/devtime/assets/devtime-terminal-demo.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShakargy%2Fdevtime%2FHEAD%2Fassets%2Fdevtime-terminal-demo.svg" alt="DevTime terminal demo - install, scan, and explain a repo from evidence"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Prefer video? &lt;a href="https://youtu.be/1Hiu3Y9J_SI" rel="nofollow noopener noreferrer"&gt;Watch the 2-minute demo&lt;/a&gt;: DevTime scans
a repo locally, explains concepts from evidence, surfaces uncertainty, catches a
risky diff, and shows how a corroborated decision improves understanding.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try DevTime in 60 seconds&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pipx install devtime-ei
dtc demo init
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; devtime-demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Billing Webhooks&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The PyPI distribution is &lt;code&gt;devtime-ei&lt;/code&gt;. The Python package remains &lt;code&gt;devtime&lt;/code&gt;, and the
CLI command remains &lt;code&gt;dtc&lt;/code&gt;. &lt;code&gt;dtc demo init&lt;/code&gt; copies a small static example repo into
&lt;code&gt;./devtime-demo-saas&lt;/code&gt; so you can try DevTime without cloning this repository.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;From source&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;PyPI: &lt;a href="https://pypi.org/project/devtime-ei/" rel="noopener noreferrer"&gt;https://pypi.org/project/devtime-ei/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The verification model in full: &lt;a href="https://github.com/Shakargy/devtime/blob/main/VERIFICATION.md" rel="noopener noreferrer"&gt;https://github.com/Shakargy/devtime/blob/main/VERIFICATION.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Release notes: &lt;a href="https://github.com/Shakargy/devtime/releases" rel="noopener noreferrer"&gt;https://github.com/Shakargy/devtime/releases&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run it on a repo and it claims something your code cannot prove, open an issue. That is exactly the feedback I am looking for!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
      <category>ai</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I scanned Cal.com with my evidence-based CLI. The best result was what it refused to say</title>
      <dc:creator>Aviad Shakargy</dc:creator>
      <pubDate>Wed, 08 Jul 2026 21:54:36 +0000</pubDate>
      <link>https://dev.to/shakargy/i-scanned-calcom-with-my-evidence-based-cli-the-best-result-was-what-it-refused-to-say-7gj</link>
      <guid>https://dev.to/shakargy/i-scanned-calcom-with-my-evidence-based-cli-the-best-result-was-what-it-refused-to-say-7gj</guid>
      <description>&lt;p&gt;I pointed my scanner at Cal.com this week, fully expecting to write a post about everything it got wrong.&lt;/p&gt;

&lt;p&gt;The most interesting result was the thing it refused to say.&lt;/p&gt;

&lt;p&gt;Quick context: I build DevTime, a local-first CLI that scans a repository and helps it explain itself from evidence. It detects a closed set of concepts (authentication, billing webhooks, background jobs, data export, admin permissions, file uploads), links every claim to evidence files, and reports uncertainty when it cannot prove something. No cloud, no telemetry, no code execution during scan, no AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;p&gt;Cal.com is a well-known open-source scheduling platform. Big TypeScript monorepo, Next.js frontend, NestJS API, Stripe integration. If you wanted to stress a heuristic scanner, this is a good place to do it.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;devtime-ei
git clone &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 https://github.com/calcom/cal.com
&lt;span class="nb"&gt;cd &lt;/span&gt;cal.com
dtc init
dtc scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The scan:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scan complete. Scanned 5736 files, 24516 signals, 3 concepts in 4.2s.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Local, 4.2 seconds, nothing left the machine.&lt;/p&gt;
&lt;h2&gt;
  
  
  What It Found
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Authentication      confidence: high   debt: medium
2. Billing Webhooks    confidence: low    debt: high
3. Background Jobs     confidence: low    debt: high
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Authentication was solid. Real evidence, real routes:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Authentication is present and supported by behavior evidence.
  confidence: 0.82
  evidence: apps/web/app/api/auth/forgot-password/route.ts,
            apps/web/app/api/auth/oauth/me/route.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;But Billing Webhooks at LOW confidence? Cal.com is a scheduling SaaS with Stripe integration. Of course it has billing webhooks. I assumed I had found my first miss.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Refusal
&lt;/h2&gt;

&lt;p&gt;Here is what DevTime actually said:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Possible Billing Webhooks signals detected. Billing Webhooks behavior
  is not established from current evidence.
  confidence: 0.45

Uncertainty:
  - Only dependency or manifest evidence was found for Billing Webhooks;
    presence is not confirmed behavior.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;So I went to check manually. The repo has exactly the file you would expect:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apps/web/pages/api/stripe/webhook.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Case closed, right? A file named stripe/webhook.ts in a Stripe-integrated SaaS. Any developer grepping the repo would say "here is their webhook handler". Any AI agent reading file paths would state it as fact.&lt;/p&gt;

&lt;p&gt;Here is the entire handler:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;_req&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;NextApiRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;NextApiResponse&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Billing webhooks are not available in community edition&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It is a stub. The open-source snapshot of Cal.com does not process billing webhooks. That behavior lives in their enterprise edition. The second webhook route in the repo is the same story.&lt;/p&gt;

&lt;p&gt;DevTime could not find behavior evidence because there is no behavior to find. The refusal was the correct answer.&lt;/p&gt;

&lt;p&gt;That is the whole thesis of the tool in one example. A confident story built from file names would have been wrong. The repository could not prove billing webhooks, so the scanner said so.&lt;/p&gt;
&lt;h2&gt;
  
  
  Where It Was Actually Wrong
&lt;/h2&gt;

&lt;p&gt;I promised misses, and there are real ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Background Jobs was under-called.&lt;/strong&gt; Cal.com has a genuine job system: a Tasker package with an internal tasker, a Redis-backed tasker, and a task processor, plus cron routes. That is real worker and queue behavior, and DevTime only surfaced dependency and test evidence at low confidence. The guard that suppresses fake background-job signals (calendar cleanup crons pretending to be job queues) is suppressing a true positive here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Admin Permissions was missed entirely.&lt;/strong&gt; The repo has real admin surfaces, including admin API routes and admin settings layouts. DevTime detected nothing.&lt;/p&gt;

&lt;p&gt;Both misses become regression fixtures now: small repo patterns encoding the expected output, so this exact failure can never return silently. Funny detail: two of the oldest fixtures in the suite came from Cal.com-shaped false positives (calendar "subscriptions" being mistaken for billing). Those fixtures fixed overclaiming. Today Cal.com exposed the opposite failure, overcorrection. Same factory, opposite direction.&lt;/p&gt;

&lt;p&gt;One more honesty note: during the scan, DevTime printed this on its own:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Framework coverage warning: NestJS controller parsing is not supported in V0;
backend route coverage may be incomplete.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Cal.com's API v2 is NestJS. The tool told me where its own blind spot was before I found it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I Care About This Pattern
&lt;/h2&gt;

&lt;p&gt;Every tool in this space is optimized to sound sure. Summaries, autocomplete, agents: confidence is the product.&lt;/p&gt;

&lt;p&gt;But the Cal.com webhook stub is exactly the kind of thing confident tools get wrong. The story "this repo handles Stripe webhooks" is plausible, well-supported by file names, and false. If your AI agent believed it, it might modify payment logic that does not exist in this edition, or trust dedupe behavior that is not there.&lt;/p&gt;

&lt;p&gt;The rule I keep coming back to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No claim without evidence. Weak evidence produces uncertainty, not confidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Uncertainty is not the tool failing. Uncertainty is the tool working.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try It on Your Repo
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;devtime-ei
&lt;span class="nb"&gt;cd &lt;/span&gt;your-repo
dtc init
dtc scan
dtc concepts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;There is also a read-only MCP server (&lt;code&gt;dtc mcp start&lt;/code&gt;) so coding agents can query the same evidence instead of guessing.&lt;/p&gt;

&lt;p&gt;If DevTime gets something wrong on your repository, that is not an embarrassment, it is a contribution. Wrong outputs become fixtures, and fixtures are how this tool earns trust.&lt;/p&gt;
&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;
        Shakargy
      &lt;/a&gt; / &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;
        devtime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first Engineering Intelligence for software repositories.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DevTime&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Local-first Engineering Intelligence for software repositories.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevTime helps a codebase explain itself from evidence.&lt;/p&gt;

&lt;p&gt;It scans code, tests, configs, routes, and decisions to identify supported software
concepts, link claims to files, surface uncertainty, and warn about a narrow set of
risky changes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No cloud. No telemetry. No code execution. No AI required.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shakargy/devtime/assets/devtime-terminal-demo.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShakargy%2Fdevtime%2FHEAD%2Fassets%2Fdevtime-terminal-demo.svg" alt="DevTime terminal demo - install, scan, and explain a repo from evidence"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Prefer video? &lt;a href="https://youtu.be/1Hiu3Y9J_SI" rel="nofollow noopener noreferrer"&gt;Watch the 2-minute demo&lt;/a&gt;: DevTime scans
a repo locally, explains concepts from evidence, surfaces uncertainty, catches a
risky diff, and shows how a corroborated decision improves understanding.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try DevTime in 60 seconds&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pipx install devtime-ei
dtc demo init
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; devtime-demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Billing Webhooks&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The PyPI distribution is &lt;code&gt;devtime-ei&lt;/code&gt;. The Python package remains &lt;code&gt;devtime&lt;/code&gt;, and the
CLI command remains &lt;code&gt;dtc&lt;/code&gt;. &lt;code&gt;dtc demo init&lt;/code&gt; copies a small static example repo into
&lt;code&gt;./devtime-demo-saas&lt;/code&gt; so you can try DevTime without cloning this repository.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;From source&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;PyPI: &lt;a href="https://pypi.org/project/devtime-ei/" rel="noopener noreferrer"&gt;https://pypi.org/project/devtime-ei/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;2-minute demo: &lt;a href="https://youtu.be/1Hiu3Y9J_SI" rel="noopener noreferrer"&gt;https://youtu.be/1Hiu3Y9J_SI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The "DevTime got this wrong" issue template: &lt;a href="https://github.com/Shakargy/devtime/issues" rel="noopener noreferrer"&gt;https://github.com/Shakargy/devtime/issues&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you run it on a repo and it says something your code cannot back up, open an issue. That is exactly the feedback I am looking for!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Give your coding agent memory it can trust</title>
      <dc:creator>Aviad Shakargy</dc:creator>
      <pubDate>Sun, 05 Jul 2026 12:18:52 +0000</pubDate>
      <link>https://dev.to/shakargy/devtime-v012-give-your-coding-agent-memory-it-can-trust-1e2i</link>
      <guid>https://dev.to/shakargy/devtime-v012-give-your-coding-agent-memory-it-can-trust-1e2i</guid>
      <description>&lt;p&gt;Your coding agent starts every session knowing nothing about your repository.&lt;/p&gt;

&lt;p&gt;Then it guesses. Confidently.&lt;/p&gt;

&lt;p&gt;It does not know where authentication actually lives. It does not know that your billing webhooks verify signatures, or that nobody ever wrote down why. It reads a few files, builds a story, and starts editing.&lt;/p&gt;

&lt;p&gt;That is the problem I just shipped a fix for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DevTime v0.1.2 turns local repository memory into an MCP server your agent can query.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are new here: DevTime is a local-first Engineering Intelligence CLI. It scans a repository and helps it explain itself from evidence. No cloud, no telemetry, no code execution during scan, no AI required.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;
        Shakargy
      &lt;/a&gt; / &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;
        devtime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first Engineering Intelligence for software repositories.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DevTime&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Local-first Engineering Intelligence for software repositories.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DevTime helps a codebase explain itself from evidence.&lt;/p&gt;
&lt;p&gt;It scans code, tests, configs, routes, and decisions to identify supported software
concepts, link claims to files, surface uncertainty, and warn about a narrow set of
risky changes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No cloud. No telemetry. No code execution. No AI required.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shakargy/devtime/assets/devtime-terminal-demo.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShakargy%2Fdevtime%2FHEAD%2Fassets%2Fdevtime-terminal-demo.svg" alt="DevTime terminal demo - install, scan, and explain a repo from evidence"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Prefer video? &lt;a href="https://youtu.be/1Hiu3Y9J_SI" rel="nofollow noopener noreferrer"&gt;Watch the 2-minute demo&lt;/a&gt;: DevTime scans
a repo locally, explains concepts from evidence, surfaces uncertainty, catches a
risky diff, and shows how a corroborated decision improves understanding.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try DevTime in 60 seconds&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pipx install devtime-ei
dtc demo init
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; devtime-demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Billing Webhooks&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The PyPI distribution is &lt;code&gt;devtime-ei&lt;/code&gt;. The Python package remains &lt;code&gt;devtime&lt;/code&gt;, and the
CLI command remains &lt;code&gt;dtc&lt;/code&gt;. &lt;code&gt;dtc demo init&lt;/code&gt; copies a small static example repo into
&lt;code&gt;./devtime-demo-saas&lt;/code&gt; so you can try DevTime without cloning this repository.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;From source&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1Hiu3Y9J_SI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  What Shipped in v0.1.2
&lt;/h2&gt;

&lt;p&gt;One command:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;


&lt;p&gt;That runs a real MCP server over stdio, on your machine, exposing three read-only tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;list_concepts&lt;/strong&gt; - what the scanned repo supports, with confidence labels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;explain_concept&lt;/strong&gt; - the claims behind one concept, the evidence files, and what is still uncertain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;get_context_pack&lt;/strong&gt; - a governed context bundle to hand an agent before it touches code: supported claims, do-not-change-without-review paths, tests to run&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of your agent guessing where billing webhooks live, it can ask. And instead of getting a confident story, it gets claims with evidence paths and an explicit uncertainty list.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try It in Two Minutes
&lt;/h2&gt;

&lt;p&gt;Install with MCP support:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"devtime-ei[mcp]"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Scan your repo:&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;cd &lt;/span&gt;your-repo
dtc init
dtc scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Hook it into Claude Code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add devtime &lt;span class="nt"&gt;--&lt;/span&gt; dtc mcp start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Or any client that reads a config file:&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;"devtime"&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;"dtc"&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="s2"&gt;"start"&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;p&gt;No repo to test on? DevTime ships a demo:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc demo init
&lt;span class="nb"&gt;cd &lt;/span&gt;devtime-demo-saas
dtc init
dtc scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  What the Agent Actually Gets
&lt;/h2&gt;

&lt;p&gt;Here is the shape of an answer for a concept like Billing Webhooks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Billing Webhooks is present and supported by behavior evidence. confidence 0.86&lt;/li&gt;
&lt;li&gt;Evidence: src/billing/stripe-webhook.ts, tests/stripe-signature.test.ts&lt;/li&gt;
&lt;li&gt;Uncertainty: no decision was found explaining key choices&lt;/li&gt;
&lt;li&gt;Understanding Score: 58 / 100&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notice the last two lines. The tool tells the agent what it cannot prove. That is on purpose.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Rules Did Not Change
&lt;/h2&gt;

&lt;p&gt;Wiring a server is exactly the kind of moment where a tool quietly grows scope. This one did not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read-only. There are no write tools.&lt;/li&gt;
&lt;li&gt;Local stdio only. There is no network listener.&lt;/li&gt;
&lt;li&gt;No source code is returned. Claims, evidence file paths, and uncertainty. That is it.&lt;/li&gt;
&lt;li&gt;Weak evidence produces uncertainty, not confidence.&lt;/li&gt;
&lt;li&gt;If the repo was never scanned, the tools say so instead of making something up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main rule is still the same one DevTime started with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No claim without evidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Agents are the exact audience that needs this rule. A human reviewer might notice when a summary smells wrong. An agent will happily build on it.&lt;/p&gt;
&lt;h2&gt;
  
  
  Where to Find It
&lt;/h2&gt;

&lt;p&gt;DevTime is now listed in the official MCP Registry as:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;io.github.Shakargy/devtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It is also on mcp.so and Smithery, and the package lives on PyPI as:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;devtime-ei
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The Python import is still &lt;code&gt;devtime&lt;/code&gt; and the command is still &lt;code&gt;dtc&lt;/code&gt;. The name devtime was reserved on PyPI, so devtime-ei is the public distribution name.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I Keep Building This
&lt;/h2&gt;

&lt;p&gt;AI tools write code faster than teams can understand it. The gap between "code exists" and "someone understands it" grows every sprint. Git remembers what changed. It does not remember what is true, what supports it, or what nobody ever decided.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI writes. EI remembers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the bet. v0.1.0 was the scanner. v0.1.1 made it installable in one line. v0.1.2 hands the memory to agents.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Want Feedback On
&lt;/h2&gt;

&lt;p&gt;Not "nice project". This:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DevTime got a concept wrong on your repo&lt;/li&gt;
&lt;li&gt;A claim is too strong&lt;/li&gt;
&lt;li&gt;An uncertainty is missing&lt;/li&gt;
&lt;li&gt;The MCP setup failed on your machine&lt;/li&gt;
&lt;li&gt;Your agent got a context pack that misled it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every one of these can become a regression fixture. That is how the tool earns trust: wrong outputs become tests that can never break again silently.&lt;/p&gt;
&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;
        Shakargy
      &lt;/a&gt; / &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;
        devtime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first Engineering Intelligence for software repositories.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DevTime&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Local-first Engineering Intelligence for software repositories.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevTime helps a codebase explain itself from evidence.&lt;/p&gt;

&lt;p&gt;It scans code, tests, configs, routes, and decisions to identify supported software
concepts, link claims to files, surface uncertainty, and warn about a narrow set of
risky changes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No cloud. No telemetry. No code execution. No AI required.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shakargy/devtime/assets/devtime-terminal-demo.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShakargy%2Fdevtime%2FHEAD%2Fassets%2Fdevtime-terminal-demo.svg" alt="DevTime terminal demo - install, scan, and explain a repo from evidence"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Prefer video? &lt;a href="https://youtu.be/1Hiu3Y9J_SI" rel="nofollow noopener noreferrer"&gt;Watch the 2-minute demo&lt;/a&gt;: DevTime scans
a repo locally, explains concepts from evidence, surfaces uncertainty, catches a
risky diff, and shows how a corroborated decision improves understanding.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try DevTime in 60 seconds&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pipx install devtime-ei
dtc demo init
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; devtime-demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Billing Webhooks&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The PyPI distribution is &lt;code&gt;devtime-ei&lt;/code&gt;. The Python package remains &lt;code&gt;devtime&lt;/code&gt;, and the
CLI command remains &lt;code&gt;dtc&lt;/code&gt;. &lt;code&gt;dtc demo init&lt;/code&gt; copies a small static example repo into
&lt;code&gt;./devtime-demo-saas&lt;/code&gt; so you can try DevTime without cloning this repository.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;From source&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;PyPI: &lt;a href="https://pypi.org/project/devtime-ei/" rel="noopener noreferrer"&gt;https://pypi.org/project/devtime-ei/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP Registry entry: search "devtime" at &lt;a href="https://registry.modelcontextprotocol.io/v0/servers?search=devtime" rel="noopener noreferrer"&gt;https://registry.modelcontextprotocol.io/v0/servers?search=devtime&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Release notes: &lt;a href="https://github.com/Shakargy/devtime/releases/tag/v0.1.2" rel="noopener noreferrer"&gt;https://github.com/Shakargy/devtime/releases/tag/v0.1.2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;2-minute demo: &lt;a href="https://youtu.be/1Hiu3Y9J_SI" rel="noopener noreferrer"&gt;https://youtu.be/1Hiu3Y9J_SI&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you wire DevTime into your agent and it says something your repo cannot back up, open an issue. That is exactly the feedback I am looking for!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Most Dangerous Code in Your Repo Is the Behavior Nobody Can Prove</title>
      <dc:creator>Aviad Shakargy</dc:creator>
      <pubDate>Wed, 01 Jul 2026 23:20:52 +0000</pubDate>
      <link>https://dev.to/shakargy/the-most-dangerous-code-in-your-repo-is-the-behavior-nobody-can-prove-98j</link>
      <guid>https://dev.to/shakargy/the-most-dangerous-code-in-your-repo-is-the-behavior-nobody-can-prove-98j</guid>
      <description>&lt;p&gt;We spend a lot of time arguing about code quality. Is it clean? Readable? Tested? Too clever? AI-generated? All fair questions, but I think we're missing a more important one:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can the repository actually prove what this behavior is supposed to do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not the developer. Not the product manager. Not the person who has been on the team for four years and somehow knows that this weird edge case is intentional. The repository itself.&lt;/p&gt;

&lt;p&gt;Because when a system gets old enough, "how it works" and "what the repo can prove" slowly become two different things. And that gap is where bugs hide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code is not the same as behavior
&lt;/h2&gt;

&lt;p&gt;A repository can show you code, commits, who changed a file and when. But code history is not behavior history.&lt;/p&gt;

&lt;p&gt;Git can tell you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This function changed on Tuesday.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It usually cannot tell you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This function handles duplicate webhook delivery because the payment provider retries failed events for 24 hours, and changing this logic without updating the idempotency tests is risky.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That second sentence is the thing teams actually need, and in many codebases it only exists in someone's head. Sometimes it lives in a Slack thread from 2022, or a Jira ticket nobody can find, or a PR comment that made sense at the time. Sometimes it doesn't exist anywhere.&lt;/p&gt;

&lt;p&gt;The code still runs. The tests still pass. The team still ships. But the repo has lost the &lt;em&gt;reason&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI makes this worse, but it didn't create the problem
&lt;/h2&gt;

&lt;p&gt;It's easy to blame AI coding tools here. AI generates code that looks clean, tests that pass, and explanations that sound reasonable. But every team has had code like this long before AI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;US&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;enableManualReview&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why? Fraud rule? Tax rule? Old business requirement? Temporary workaround that became permanent? Nobody knows.&lt;/p&gt;

&lt;p&gt;Now add AI to the picture. A coding agent sees that condition and tries to "simplify" it. A reviewer sees a clean diff. The tests pass because nobody ever wrote a test for the original behavior, and the PR gets merged. Two weeks later, someone asks why orders stopped entering manual review.&lt;/p&gt;

&lt;p&gt;The behavior was real. The evidence was missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  A green test suite is not proof of understanding
&lt;/h2&gt;

&lt;p&gt;I love tests, but tests can only prove what someone remembered to assert. A test can prove that a function returns 200. It may not prove that the function is allowed to retry, that the retry must be idempotent, or that the timeout exists because a mobile client depends on it.&lt;/p&gt;

&lt;p&gt;A passing suite often means "the checks we wrote still pass" - not "the behavior users depend on is still protected."&lt;/p&gt;

&lt;p&gt;This is why missing evidence deserves to be treated as a signal, not just an inconvenience. If a PR changes payment logic and no payment tests changed, that doesn't automatically mean the PR is bad - but it's a signal. If a feature has five implementations, three naming styles, no docs, and tests that only cover happy paths, the next change to it is more dangerous than it looks. The repo is quietly telling you: &lt;em&gt;I may work, but I cannot fully explain why.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That difference matters more now because code is getting easier to produce. &lt;strong&gt;When code becomes cheap, understanding becomes expensive.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The new code review question
&lt;/h2&gt;

&lt;p&gt;Traditional review asks whether the code is correct, readable, secure, and tested. Those questions still matter. But I think every risky PR needs one more:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What behavior does this change claim to preserve, and where is the evidence?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Take a PR that touches billing webhooks. The review shouldn't only ask whether the code looks good. It should ask: does this affect duplicate delivery? Retry behavior? Event ordering? Refunds? And for each answer - is there evidence, or just confidence?&lt;/p&gt;

&lt;p&gt;This isn't about adding bureaucracy. It's about refusing to merge changes that look safe only because the repo cannot explain itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Documentation" is not enough
&lt;/h2&gt;

&lt;p&gt;The usual answer is: write better docs. I half agree. Docs are useful when they stay close to the system and dangerous when they drift away from it.&lt;/p&gt;

&lt;p&gt;A README saying "webhooks are idempotent" is nice. A test proving duplicate delivery is safe is better. A decision record explaining &lt;em&gt;why&lt;/em&gt; retries work this way is better still. And a tool that connects the claim to the actual files, tests, routes, and recent diffs is the best version of all.&lt;/p&gt;

&lt;p&gt;The future of software maintenance isn't more documentation. It's &lt;em&gt;evidence-backed&lt;/em&gt; documentation: here is the claim, here is the evidence, here is what's still uncertain. A repo should be allowed to say "I don't know" - that's much healthier than pretending.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maybe repos need an "understanding score"
&lt;/h2&gt;

&lt;p&gt;We measure test coverage, build time, bundle size, churn, security findings, dependency risk. We almost never measure whether a repository can explain its own important behavior.&lt;/p&gt;

&lt;p&gt;Imagine opening a repo and seeing:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Evidence&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Billing webhooks&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File uploads&lt;/td&gt;
&lt;td&gt;Weak&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Admin permissions&lt;/td&gt;
&lt;td&gt;Unclear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email delivery&lt;/td&gt;
&lt;td&gt;No decision record found&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Not because the score would be perfect, and not because it replaces human review - but because it points attention at the parts of the system where the confidence is fake. And fake confidence is expensive.&lt;/p&gt;

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

&lt;p&gt;AI tools will keep improving. They'll write more code, open more PRs, fix more bugs, generate more tests. That's not the problem. The problem is that faster code generation doesn't automatically create better system understanding - a team can ship more code while understanding less of the behavior they're preserving.&lt;/p&gt;

&lt;p&gt;The bottleneck isn't syntax, boilerplate, or even review speed. The bottleneck is evidence. Can we prove what this behavior is, why it exists, and that this change doesn't break it? Until repositories can answer those questions, we're relying on memory, folklore, and confidence.&lt;/p&gt;

&lt;p&gt;And confidence is not evidence.&lt;/p&gt;




&lt;p&gt;The most dangerous code in your repo isn't always the ugly code, the old code, or the AI-generated code. Sometimes it's the behavior everybody depends on but nobody can prove. Once you start looking for it, you see it everywhere.&lt;/p&gt;

&lt;p&gt;I've started exploring this idea in an open-source CLI tool called &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;DevTime&lt;/a&gt; - it scans a repository and generates evidence-backed explanations of how things actually work, linking every claim to real files and tests. If the problem in this post sounds familiar, I'd love your feedback on it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What's the piece of "everybody knows" behavior in your codebase that nobody can actually prove? Tell me in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>software</category>
      <category>ai</category>
      <category>testing</category>
      <category>programming</category>
    </item>
    <item>
      <title>DevTime v0.1.1 - I made the first-run experience much easier</title>
      <dc:creator>Aviad Shakargy</dc:creator>
      <pubDate>Sun, 28 Jun 2026 21:00:07 +0000</pubDate>
      <link>https://dev.to/shakargy/devtime-v011-i-made-the-first-run-experience-much-easier-5c2k</link>
      <guid>https://dev.to/shakargy/devtime-v011-i-made-the-first-run-experience-much-easier-5c2k</guid>
      <description>&lt;p&gt;A few days ago I released DevTime v0.1.0.&lt;/p&gt;

&lt;p&gt;It worked. The repo was public, the demo was ready, the README was detailed, and the release was clean.&lt;/p&gt;

&lt;p&gt;But there was still one problem: it was too annoying for a stranger to try.&lt;/p&gt;

&lt;p&gt;Trying it meant cloning a repo, creating a virtual environment, and installing from source. That is a fine path for a contributor. It is not a great path for someone who just wants to understand what the tool does in one minute.&lt;/p&gt;

&lt;p&gt;So &lt;strong&gt;DevTime v0.1.1&lt;/strong&gt; is about one thing: make DevTime easy to try.&lt;/p&gt;

&lt;p&gt;If you are new here, DevTime is a local-first Engineering Intelligence CLI that scans a repository and helps it explain itself from evidence.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;
        Shakargy
      &lt;/a&gt; / &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;
        devtime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first Engineering Intelligence for software repositories.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DevTime&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Local-first Engineering Intelligence for software repositories.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DevTime helps a codebase explain itself from evidence.&lt;/p&gt;
&lt;p&gt;It scans code, tests, configs, routes, and decisions to identify supported software
concepts, link claims to files, surface uncertainty, and warn about a narrow set of
risky changes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No cloud. No telemetry. No code execution. No AI required.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/1Hiu3Y9J_SI" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShakargy%2Fdevtime%2FHEAD%2Fassets%2Fdevtime-demo-thumbnail-v0.1.0.png" alt="DevTime demo - Repository memory from evidence"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Watch the 2-minute demo: DevTime scans a repo locally, explains concepts from
evidence, surfaces uncertainty, catches a risky diff, and shows how a corroborated
decision improves understanding.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try DevTime in 60 seconds&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pipx install devtime-ei
dtc demo init
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; devtime-demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Billing Webhooks&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The PyPI distribution is &lt;code&gt;devtime-ei&lt;/code&gt;. The Python package remains &lt;code&gt;devtime&lt;/code&gt;, and the
CLI command remains &lt;code&gt;dtc&lt;/code&gt;. &lt;code&gt;dtc demo init&lt;/code&gt; copies a small static example repo into
&lt;code&gt;./devtime-demo-saas&lt;/code&gt; so you can try DevTime without cloning this repository.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;From source&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/Shakargy/devtime.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1Hiu3Y9J_SI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  What Changed in v0.1.1
&lt;/h2&gt;

&lt;p&gt;DevTime is now published on PyPI. The distribution name is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;devtime-ei
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The Python package is still:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;devtime&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And the CLI command is still:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;So the new install path is one line:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;devtime-ei
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;No clone. No virtual environment setup. No installing from source.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try It Without Cloning
&lt;/h2&gt;

&lt;p&gt;After installing, you can create a local demo repo directly from the installed package:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc demo init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Then scan it:&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;cd &lt;/span&gt;devtime-demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="s2"&gt;"Billing Webhooks"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That means someone can now try DevTime on a real example without cloning the GitHub repo first.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I Added the Demo Command
&lt;/h2&gt;

&lt;p&gt;DevTime is about evidence, so a fake printed example is not enough. The demo needs real files, real routes, real tests, and real uncertainty.&lt;/p&gt;

&lt;p&gt;So this command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc demo init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;copies a small packaged demo repository into your current directory. It does &lt;strong&gt;not&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute any code&lt;/li&gt;
&lt;li&gt;Call the network&lt;/li&gt;
&lt;li&gt;Send anything anywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It just creates a local demo app you can scan. The output shows how DevTime detects concepts like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Billing Webhooks&lt;/li&gt;
&lt;li&gt;Background Jobs&lt;/li&gt;
&lt;li&gt;Data Export&lt;/li&gt;
&lt;li&gt;Admin Permissions&lt;/li&gt;
&lt;li&gt;File Uploads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then it explains those concepts from evidence:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc explain &lt;span class="s2"&gt;"Billing Webhooks"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The goal is not just to say "this repo has billing webhooks". The goal is to show what DevTime believes, which files support it, what is still uncertain, and what evidence is missing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That last part matters because DevTime should not pretend to know more than the repository can prove.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  The Rule I Care About Most
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No claim without evidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If evidence is weak, DevTime should not sound confident. It should show uncertainty. That is why one of the main product principles is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Uncertainty is a feature, not a bug.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This matters even more now because AI coding tools are making code generation faster. The bottleneck is not only writing code. The bottleneck is understanding what the codebase can prove.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI writes. EI remembers.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  A Nice Thing That Happened
&lt;/h2&gt;

&lt;p&gt;After the public release, a GitHub user opened the first external PR to improve the README. It was a docs-only change, but it mattered. It proved the public backlog worked:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I opened small good-first-issue items&lt;/li&gt;
&lt;li&gt;someone found one&lt;/li&gt;
&lt;li&gt;they forked the repo&lt;/li&gt;
&lt;li&gt;they sent a PR&lt;/li&gt;
&lt;li&gt;it got merged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a new open-source project, that small loop feels important.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is in v0.1.1?
&lt;/h2&gt;

&lt;p&gt;New commands:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc demo init
dtc demo init &lt;span class="nt"&gt;--force&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Plus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PyPI package (devtime-ei)&lt;/li&gt;
&lt;li&gt;pipx install support&lt;/li&gt;
&lt;li&gt;packaged demo repository&lt;/li&gt;
&lt;li&gt;README quickstart starting from pipx install&lt;/li&gt;
&lt;li&gt;97 passing tests&lt;/li&gt;
&lt;li&gt;no cloud&lt;/li&gt;
&lt;li&gt;no telemetry&lt;/li&gt;
&lt;li&gt;no code execution during scan&lt;/li&gt;
&lt;li&gt;no AI required&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Quick Install
&lt;/h2&gt;

&lt;p&gt;Install with pipx:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipx &lt;span class="nb"&gt;install &lt;/span&gt;devtime-ei
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Or with 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;devtime-ei
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Create the demo repo:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc demo init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Run the demo:&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;cd &lt;/span&gt;devtime-demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="s2"&gt;"Billing Webhooks"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  What I Want Feedback On
&lt;/h2&gt;

&lt;p&gt;The most useful feedback is not "nice project". The most useful feedback is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DevTime got this concept wrong&lt;/li&gt;
&lt;li&gt;This claim is too strong&lt;/li&gt;
&lt;li&gt;This uncertainty is missing&lt;/li&gt;
&lt;li&gt;This evidence is weak&lt;/li&gt;
&lt;li&gt;This repo structure confused it&lt;/li&gt;
&lt;li&gt;The install flow failed&lt;/li&gt;
&lt;li&gt;The wording is misleading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That kind of feedback can become a fixture and make the tool more trustworthy.&lt;/p&gt;
&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;
        Shakargy
      &lt;/a&gt; / &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;
        devtime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first Engineering Intelligence for software repositories.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DevTime&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Local-first Engineering Intelligence for software repositories.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevTime helps a codebase explain itself from evidence.&lt;/p&gt;

&lt;p&gt;It scans code, tests, configs, routes, and decisions to identify supported software
concepts, link claims to files, surface uncertainty, and warn about a narrow set of
risky changes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No cloud. No telemetry. No code execution. No AI required.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://youtu.be/1Hiu3Y9J_SI" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShakargy%2Fdevtime%2FHEAD%2Fassets%2Fdevtime-demo-thumbnail-v0.1.0.png" alt="DevTime demo - Repository memory from evidence"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Watch the 2-minute demo: DevTime scans a repo locally, explains concepts from
evidence, surfaces uncertainty, catches a risky diff, and shows how a corroborated
decision improves understanding.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Try DevTime in 60 seconds&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pipx install devtime-ei
dtc demo init
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; devtime-demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Billing Webhooks&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The PyPI distribution is &lt;code&gt;devtime-ei&lt;/code&gt;. The Python package remains &lt;code&gt;devtime&lt;/code&gt;, and the
CLI command remains &lt;code&gt;dtc&lt;/code&gt;. &lt;code&gt;dtc demo init&lt;/code&gt; copies a small static example repo into
&lt;code&gt;./devtime-demo-saas&lt;/code&gt; so you can try DevTime without cloning this repository.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;From source&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/Shakargy/devtime.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1Hiu3Y9J_SI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;https://github.com/Shakargy/devtime&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;PyPI: &lt;a href="https://pypi.org/project/devtime-ei/0.1.1/" rel="noopener noreferrer"&gt;https://pypi.org/project/devtime-ei/0.1.1/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Release: &lt;a href="https://github.com/Shakargy/devtime/releases/tag/v0.1.1" rel="noopener noreferrer"&gt;https://github.com/Shakargy/devtime/releases/tag/v0.1.1&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you try it on a repo and it gets something wrong, please open an issue. That is exactly the feedback I am looking for!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
      <category>ci</category>
      <category>programming</category>
    </item>
    <item>
      <title>I built DevTime - a local-first CLI that helps a repo explain itself from evidence</title>
      <dc:creator>Aviad Shakargy</dc:creator>
      <pubDate>Tue, 23 Jun 2026 17:25:41 +0000</pubDate>
      <link>https://dev.to/shakargy/i-built-devtime-a-local-first-cli-that-helps-a-repo-explain-itself-from-evidence-b58</link>
      <guid>https://dev.to/shakargy/i-built-devtime-a-local-first-cli-that-helps-a-repo-explain-itself-from-evidence-b58</guid>
      <description>&lt;p&gt;Git remembers code.&lt;/p&gt;

&lt;p&gt;It remembers what changed, who changed it, and when.&lt;/p&gt;

&lt;p&gt;But it does not remember &lt;em&gt;understanding&lt;/em&gt;. It does not tell you why a behavior exists, what evidence supports it, what nobody has decided yet, or where a risky change may be touching an important concept.&lt;/p&gt;

&lt;p&gt;That is the problem I started working on with &lt;strong&gt;DevTime&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;DevTime is a local-first Engineering Intelligence CLI that scans a repository and helps it explain itself from evidence.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;
        Shakargy
      &lt;/a&gt; / &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;
        devtime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first Engineering Intelligence for software repositories.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DevTime&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Local-first Engineering Intelligence for software repositories.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;DevTime helps a repository explain itself from evidence. It scans code, tests
configs, routes, and decisions to identify the concepts inside a codebase, show the
evidence behind them, surface uncertainty, and warn about risky changes.&lt;/p&gt;
&lt;p&gt;It does not execute your code. It does not send your code anywhere. It does not
require AI. It does not pretend to know things without evidence.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No cloud. No telemetry. No code execution. No AI required.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why this exists&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Git remembers &lt;em&gt;code&lt;/em&gt;. It does not remember &lt;em&gt;understanding&lt;/em&gt; - why a behavior exists,
what evidence supports it, or what nobody has decided yet. As AI tools generate code
faster than teams can review it, that missing understanding becomes the bottleneck.&lt;/p&gt;
&lt;p&gt;DevTime builds &lt;strong&gt;evidence-backed repository memory&lt;/strong&gt;: a local layer that says what a
repository can prove, and - just as importantly - what it cannot prove yet.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1Hiu3Y9J_SI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  What DevTime Does
&lt;/h2&gt;

&lt;p&gt;DevTime creates local repository memory. You can run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="s2"&gt;"Billing Webhooks"&lt;/span&gt;
dtc risk &lt;span class="nt"&gt;--diff&lt;/span&gt;
dtc context &lt;span class="s2"&gt;"Authentication"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It scans the repo locally, stores memory in &lt;code&gt;.devtime/&lt;/code&gt;, detects known software concepts, links claims to evidence, and shows uncertainty when evidence is missing or weak.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example, it can say:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This repo appears to have Billing Webhooks.&lt;/li&gt;
&lt;li&gt;Here are the files that support that claim.&lt;/li&gt;
&lt;li&gt;Here is what is still uncertain.&lt;/li&gt;
&lt;li&gt;No decision was found explaining retry strategy.&lt;/li&gt;
&lt;li&gt;This diff changed retry behavior without duplicate-delivery test changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;That last part matters because DevTime should not pretend to know more than the repository can prove.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  What DevTime Does Not Do
&lt;/h2&gt;

&lt;p&gt;V0 is intentionally narrow. DevTime does &lt;strong&gt;not&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload your code&lt;/li&gt;
&lt;li&gt;Send telemetry&lt;/li&gt;
&lt;li&gt;Execute repository code during scan&lt;/li&gt;
&lt;li&gt;Require AI&lt;/li&gt;
&lt;li&gt;Claim to understand every repository&lt;/li&gt;
&lt;li&gt;Replace code review&lt;/li&gt;
&lt;li&gt;Act as a security scanner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is a heuristic tool with a closed set of supported concept families in V0.&lt;/p&gt;

&lt;p&gt;The goal is not magic. The goal is &lt;strong&gt;evidence-backed repository memory&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;AI coding tools are making code generation faster. But faster code generation creates a new problem: teams can produce changes faster than they can understand the system around those changes.&lt;/p&gt;

&lt;p&gt;DevTime is built around one idea:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI writes. EI remembers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Engineering Intelligence (EI), at least the way I am thinking about it, means a repository should be able to explain what it knows, what evidence supports that knowledge, and what is still uncertain.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Rule I Care About Most
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No claim without evidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If evidence is weak, DevTime should not sound confident. It should show uncertainty. That is why one of the main product principles is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Uncertainty is a feature, not a bug.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If DevTime says "I cannot prove this yet", that is not a failure. That is the product being honest.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is in v0.1.0?
&lt;/h2&gt;

&lt;p&gt;The first public release includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local SQLite repository memory&lt;/li&gt;
&lt;li&gt;Local scan &amp;amp; concept detection&lt;/li&gt;
&lt;li&gt;Evidence-backed explanations&lt;/li&gt;
&lt;li&gt;Understanding Score and Understanding Debt&lt;/li&gt;
&lt;li&gt;Context Packs for humans and agents&lt;/li&gt;
&lt;li&gt;Narrow advisory &lt;code&gt;risk --diff&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Issue template for "DevTime got this wrong"&lt;/li&gt;
&lt;li&gt;Apache-2.0 license&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Current V0 concept families include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Billing Webhooks&lt;/li&gt;
&lt;li&gt;Background Jobs&lt;/li&gt;
&lt;li&gt;Data Export&lt;/li&gt;
&lt;li&gt;Admin Permissions&lt;/li&gt;
&lt;li&gt;File Uploads&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Quick Install
&lt;/h2&gt;

&lt;p&gt;Clone the repo:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Shakargy/devtime.git
&lt;span class="nb"&gt;cd &lt;/span&gt;devtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Create a virtual environment:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Activate it on macOS/Linux:&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;source&lt;/span&gt; .venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Activate it on Windows PowerShell:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;venv&lt;/span&gt;&lt;span class="n"&gt;\Scripts\Activate.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Install DevTime:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;".[dev]"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Run the demo repo:&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;cd &lt;/span&gt;examples/demo-saas
dtc init
dtc scan
dtc concepts
dtc explain &lt;span class="s2"&gt;"Billing Webhooks"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  What I Want Feedback On
&lt;/h2&gt;

&lt;p&gt;The most useful feedback is not "nice project". The most useful feedback is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DevTime got this concept wrong&lt;/li&gt;
&lt;li&gt;This claim is too strong&lt;/li&gt;
&lt;li&gt;This uncertainty is missing&lt;/li&gt;
&lt;li&gt;This evidence is weak&lt;/li&gt;
&lt;li&gt;This repo structure confused it&lt;/li&gt;
&lt;li&gt;The install flow failed&lt;/li&gt;
&lt;li&gt;The wording is misleading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That kind of feedback can become a fixture and make the tool more trustworthy.&lt;/p&gt;
&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shakargy" rel="noopener noreferrer"&gt;
        Shakargy
      &lt;/a&gt; / &lt;a href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;
        devtime
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first Engineering Intelligence for software repositories.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;DevTime&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Local-first Engineering Intelligence for software repositories.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevTime helps a repository explain itself from evidence. It scans code, tests
configs, routes, and decisions to identify the concepts inside a codebase, show the
evidence behind them, surface uncertainty, and warn about risky changes.&lt;/p&gt;
&lt;p&gt;It does not execute your code. It does not send your code anywhere. It does not
require AI. It does not pretend to know things without evidence.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No cloud. No telemetry. No code execution. No AI required.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why this exists&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Git remembers &lt;em&gt;code&lt;/em&gt;. It does not remember &lt;em&gt;understanding&lt;/em&gt; - why a behavior exists,
what evidence supports it, or what nobody has decided yet. As AI tools generate code
faster than teams can review it, that missing understanding becomes the bottleneck.&lt;/p&gt;
&lt;p&gt;DevTime builds &lt;strong&gt;evidence-backed repository memory&lt;/strong&gt;: a local layer that says what a
repository can prove, and - just as importantly - what it cannot prove yet.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shakargy/devtime" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1Hiu3Y9J_SI"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you try it on a repo and it gets something wrong, please open an issue. That is exactly the feedback I am looking for!&lt;/p&gt;

</description>
      <category>cli</category>
      <category>git</category>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>I Monitored 15 Popular APIs for 7 Days. 73% Changed While Nobody Was Watching.</title>
      <dc:creator>Aviad Shakargy</dc:creator>
      <pubDate>Thu, 21 May 2026 22:40:39 +0000</pubDate>
      <link>https://dev.to/shakargy/i-monitored-15-popular-apis-for-7-days-73-changed-while-nobody-was-watching-8ij</link>
      <guid>https://dev.to/shakargy/i-monitored-15-popular-apis-for-7-days-73-changed-while-nobody-was-watching-8ij</guid>
      <description>&lt;p&gt;Every backend depends on a graveyard of third-party APIs. Stripe for billing, Twilio for SMS, OpenAI for inference, that internal auth service from two teams over that nobody remembers who owns.&lt;/p&gt;

&lt;p&gt;Ask any backend engineer to list every external HTTP call their service makes and you'll get half the list. The other half lives in a forgotten cron job, a legacy integration, or a vendor your predecessor added and never documented.&lt;/p&gt;

&lt;p&gt;I wanted to know: &lt;strong&gt;how often do these APIs actually change?&lt;/strong&gt; Not the big announcements that hit Hacker News - the quiet ones. The field that becomes required. The header that gets renamed. The deprecation notice buried in page 4 of a changelog.&lt;/p&gt;

&lt;p&gt;So I built a system to find out.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Experiment
&lt;/h2&gt;

&lt;p&gt;I pointed my monitoring engine at the changelogs and release notes of 15 widely-used APIs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stripe&lt;/strong&gt; · &lt;strong&gt;OpenAI&lt;/strong&gt; · &lt;strong&gt;Twilio&lt;/strong&gt; · &lt;strong&gt;GitHub&lt;/strong&gt; · &lt;strong&gt;Auth0&lt;/strong&gt; · &lt;strong&gt;SendGrid&lt;/strong&gt; · &lt;strong&gt;Slack&lt;/strong&gt; · &lt;strong&gt;Shopify&lt;/strong&gt; · &lt;strong&gt;Cloudflare&lt;/strong&gt; · &lt;strong&gt;Vercel&lt;/strong&gt; · &lt;strong&gt;Supabase&lt;/strong&gt; · &lt;strong&gt;Notion&lt;/strong&gt; · &lt;strong&gt;Firebase&lt;/strong&gt; · &lt;strong&gt;HubSpot&lt;/strong&gt; · &lt;strong&gt;Datadog&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every 6 hours, a worker fetches each changelog URL, extracts the text, computes a content hash, diffs it against the previous snapshot, and runs the diff through a severity classifier that scans for keywords like &lt;code&gt;breaking change&lt;/code&gt;, &lt;code&gt;deprecated&lt;/code&gt;, &lt;code&gt;removed&lt;/code&gt;, &lt;code&gt;security&lt;/code&gt;, &lt;code&gt;end of life&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I let it run for a week with zero manual intervention. No tweaking, no hand-holding. Just the pipeline doing its job.&lt;/p&gt;

&lt;p&gt;Here's what came back.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;7 days. 15 APIs. 58 change events detected.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;11 out of 15 APIs - &lt;strong&gt;73%&lt;/strong&gt; - shipped at least one change to their changelog or docs during a single week.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;API&lt;/th&gt;
&lt;th&gt;Changes Detected&lt;/th&gt;
&lt;th&gt;Risk Keywords Found&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;security, deprecated, removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;security, deprecated, beta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;security, vulnerability, removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shopify&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;deprecated, removed, beta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Datadog&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;shutdown, breaking change, vulnerability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slack&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;breaking change, deprecated, renamed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firebase&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;breaking change, vulnerability, renamed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;breaking change, deprecated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;end of life, breaking change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;breaking change, deprecated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HubSpot&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;beta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stripe&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Twilio&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SendGrid&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notion&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Let that sink in. In one week, the classifier flagged entries containing high-risk terms like &lt;code&gt;breaking change&lt;/code&gt;, &lt;code&gt;deprecated&lt;/code&gt;, &lt;code&gt;removed&lt;/code&gt;, and &lt;code&gt;end of life&lt;/code&gt; across 11 different APIs. Cloudflare, Datadog, and Firebase had &lt;code&gt;vulnerability&lt;/code&gt; mentions. Auth0 had an &lt;code&gt;end of life&lt;/code&gt; notice. Datadog's changelog contained &lt;code&gt;shutdown&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Not every flagged entry means something broke. But each one is the kind of change worth reviewing before your next deploy - and in a normal week, most teams probably would not have seen them in time.&lt;/p&gt;

&lt;p&gt;And this is just what's in the public changelogs. This is vendors doing the responsible thing and documenting their changes. How many don't?&lt;/p&gt;

&lt;h3&gt;
  
  
  Methodology note
&lt;/h3&gt;

&lt;p&gt;This experiment tracked visible changes in public changelog and release-note pages. It does not prove that every detected change was breaking, only that the monitored source changed and contained risk-related language worth reviewing.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Surprised Me
&lt;/h2&gt;

&lt;h3&gt;
  
  
  During this week, GitHub changed almost every 12 hours
&lt;/h3&gt;

&lt;p&gt;14 change events in 7 days. During this monitoring period, GitHub's blog changelog updated almost twice a day with deprecations, security patches, and feature removals. If your CI/CD pipeline, your auth flow, or your webhook integrations depend on GitHub's API - and they probably do - things are moving under your feet constantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  The "stable" APIs really are stable
&lt;/h3&gt;

&lt;p&gt;Stripe, Twilio, SendGrid, and Notion had &lt;strong&gt;zero&lt;/strong&gt; detected changes all week. That's not boring - that's a signal. These teams invest heavily in API stability. When you're choosing between vendors, this kind of data matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Most detected changes carried high-risk keywords
&lt;/h3&gt;

&lt;p&gt;A large share of the 58 events contained keywords like &lt;code&gt;security&lt;/code&gt;, &lt;code&gt;deprecated&lt;/code&gt;, or &lt;code&gt;removed&lt;/code&gt;. That doesn't mean every change was production-breaking - it means these were the changes most worth reviewing. Changelog entries tend to cluster around consequential updates. Nobody updates their changelog to say "we fixed a typo in an error message." When an entry appears, it usually matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Auth0 dropped an "end of life" notice
&lt;/h3&gt;

&lt;p&gt;One event, one week, but the keywords were: &lt;code&gt;end of life&lt;/code&gt;, &lt;code&gt;breaking change&lt;/code&gt;, &lt;code&gt;deprecated&lt;/code&gt;, &lt;code&gt;removed&lt;/code&gt;, &lt;code&gt;renamed&lt;/code&gt;. If you integrate with Auth0 and you didn't read their changelog this week, you might have missed a deprecation that affects your auth flow.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works Under The Hood
&lt;/h2&gt;

&lt;p&gt;This isn't a cron job running &lt;code&gt;curl&lt;/code&gt; and &lt;code&gt;diff&lt;/code&gt;. It's the same detection engine that powers &lt;a href="https://www.api-graveyard.com" rel="noopener noreferrer"&gt;API Graveyard&lt;/a&gt;, my API dependency intelligence platform, running against real vendor data in production.&lt;/p&gt;

&lt;p&gt;The pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Celery Beat&lt;/strong&gt; dispatches fetch jobs every 6 hours for each monitored source&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Worker&lt;/strong&gt; fetches the changelog URL, extracts text, and computes a content hash&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diff engine&lt;/strong&gt; compares against the previous snapshot - if the hash changed, it generates a diff&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Severity classifier&lt;/strong&gt; scans the diff for risk keywords and assigns a severity level (critical / high / medium / low)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk events&lt;/strong&gt; are created and surfaced on the dashboard with severity, timestamp, and source attribution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public API&lt;/strong&gt; serves the data through unauthenticated read-only endpoints - no login, no paywall&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole thing runs on a single Docker Compose stack: FastAPI backend, React frontend, PostgreSQL, Redis, Celery workers. Deployed to a GCP Compute Engine instance via GitHub Actions. Total infra cost: less than the price of one Datadog alert channel.&lt;/p&gt;

&lt;p&gt;Some engineering choices that matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hash-based change detection&lt;/strong&gt; means we don't store raw changelog HTML (copyright-safe) - we only store diffs when something actually changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyword classifier&lt;/strong&gt; is intentionally simple (pattern matching, not ML) because false negatives are worse than false positives here - I'd rather flag something that isn't breaking than miss something that is&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Each vendor is an isolated adapter&lt;/strong&gt; (~40 lines each). When Stripe redesigns their docs site - and they will - only the Stripe adapter breaks. The other 14 keep running.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSRF protection&lt;/strong&gt; on the fetch layer blocks private IP ranges and localhost - because this system fetches arbitrary URLs from a database, and that's exactly the kind of thing that gets you in trouble if you're not careful&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Most teams find out about breaking API changes one of three ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A deploy breaks in production.&lt;/strong&gt; The Slack channel lights up at 2 AM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Someone happens to read the changelog.&lt;/strong&gt; Usually the one person who's subscribed to the vendor's blog, and they mention it casually in standup two days later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A quarterly dependency audit catches it.&lt;/strong&gt; Three months late, during a sprint nobody wanted.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of these are good. The first one costs you an incident. The second one depends on luck. The third one is always too late.&lt;/p&gt;

&lt;p&gt;What I learned from this week of data is that &lt;strong&gt;the problem is worse than most people think&lt;/strong&gt;. 73% of the APIs we commonly depend on are changing every single week. Not every change is breaking, but the ones that are? They're buried in changelogs that nobody reads, mixed in with dozens of other entries.&lt;/p&gt;

&lt;p&gt;For teams that depend on multiple external APIs, automated monitoring is quickly becoming less of a nice-to-have and more of a safety net. It's the difference between catching a deprecation notice on Tuesday and debugging a production outage on Saturday.&lt;/p&gt;




&lt;h2&gt;
  
  
  See It Live
&lt;/h2&gt;

&lt;p&gt;The public dashboard is running right now at &lt;strong&gt;&lt;a href="https://www.api-graveyard.com/api-health" rel="noopener noreferrer"&gt;www.api-graveyard.com/api-health&lt;/a&gt;&lt;/strong&gt; - no login, no signup, no paywall. Real data from real APIs, updated every 6 hours.&lt;/p&gt;

&lt;p&gt;The source code for the case study (architecture diagrams, screenshots, SDK links) is on GitHub: &lt;a href="https://github.com/Shakargy/api-graveyard-case-study" rel="noopener noreferrer"&gt;github.com/Shakargy/api-graveyard-case-study&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This case study only monitors public changelogs. The full product goes one layer deeper: discovering the actual APIs your services call from live traffic, mapping dependency risk across your entire stack, and alerting when something changes. One-line SDK integration for &lt;a href="https://github.com/Shakargy/api-graveyard-python" rel="noopener noreferrer"&gt;Python&lt;/a&gt;, &lt;a href="https://github.com/Shakargy/api-graveyard-go" rel="noopener noreferrer"&gt;Go&lt;/a&gt;, and &lt;a href="https://github.com/Shakargy/api-graveyard-node" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; - check it out at &lt;a href="https://www.api-graveyard.com" rel="noopener noreferrer"&gt;www.api-graveyard.com&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built by the solo developer behind &lt;a href="https://www.api-graveyard.com" rel="noopener noreferrer"&gt;API Graveyard&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
