<?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: Horilla</title>
    <description>The latest articles on DEV Community by Horilla (@horilla_support_8e7ce9908).</description>
    <link>https://dev.to/horilla_support_8e7ce9908</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3603663%2Fb5696a6f-16c7-44ea-acdb-c3fd44f426c5.png</url>
      <title>DEV Community: Horilla</title>
      <link>https://dev.to/horilla_support_8e7ce9908</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/horilla_support_8e7ce9908"/>
    <language>en</language>
    <item>
      <title>Horilla CRM: A Free &amp; Open-Source Django CRM for Modern Businesses in 2026</title>
      <dc:creator>Horilla</dc:creator>
      <pubDate>Thu, 07 May 2026 07:33:03 +0000</pubDate>
      <link>https://dev.to/horilla_support_8e7ce9908/horilla-crm-a-free-open-source-django-crm-for-modern-businesses-in-2026-gnd</link>
      <guid>https://dev.to/horilla_support_8e7ce9908/horilla-crm-a-free-open-source-django-crm-for-modern-businesses-in-2026-gnd</guid>
      <description>&lt;p&gt;If you've spent any time searching for an &lt;strong&gt;open-source CRM&lt;/strong&gt;, you've probably hit the same wall most teams hit: the popular options are either bloated, expensive at scale, locked behind paid editions, or built on aging PHP stacks that are painful to extend.&lt;/p&gt;

&lt;p&gt;In this post, I want to introduce you to &lt;strong&gt;&lt;a href="https://github.com/horilla/horilla-crm" rel="noopener noreferrer"&gt;Horilla CRM&lt;/a&gt;&lt;/strong&gt; — a &lt;strong&gt;free, self-hosted, open-source CRM&lt;/strong&gt; built with &lt;strong&gt;Django 6&lt;/strong&gt; and Python 3.13. It's designed for teams who want full control over their customer data, deep customization, and a modern developer experience — without paying per seat.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Horilla also ships a separate &lt;strong&gt;HRMS&lt;/strong&gt; product in its own repository. This article is focused on &lt;strong&gt;Horilla CRM&lt;/strong&gt; specifically. If you need HR features, you can install the HRMS repo alongside the CRM — they're designed to live in the same ecosystem but are deployed independently.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's dig into what makes it different, what it can do, and how it stacks up against the usual suspects like SuiteCRM, EspoCRM, and Vtiger.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Another Open-Source CRM?
&lt;/h2&gt;

&lt;p&gt;Most "free CRMs" today fall into one of three buckets:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Freemium SaaS&lt;/strong&gt; — free until you hit 3 users, 1,000 contacts, or any feature you actually need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy PHP CRMs&lt;/strong&gt; — SuiteCRM, Vtiger, EspoCRM. Mature, but dated stacks and clunky extension models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DIY Django starters&lt;/strong&gt; — GitHub projects with 200 stars, a half-finished pipeline, and no docs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Horilla CRM sits in a different spot. It's a &lt;strong&gt;production-grade Django CRM&lt;/strong&gt; with a real plugin architecture, multi-tenancy baked in, and a modern HTMX-driven frontend — which is rare in the open-source world.&lt;/p&gt;

&lt;p&gt;If you're building for a small business, an agency managing multiple clients, or a startup that wants to &lt;strong&gt;self-host customer data for compliance reasons&lt;/strong&gt;, this is worth a look.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Horilla CRM Actually Includes
&lt;/h2&gt;

&lt;p&gt;Here's the honest feature list — not marketing fluff:&lt;/p&gt;

&lt;h3&gt;
  
  
  Sales &amp;amp; Pipeline
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Leads&lt;/strong&gt; with custom scoring rules, criteria, and conditions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opportunities&lt;/strong&gt; with configurable stages, probability, and forecasting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accounts &amp;amp; Contacts&lt;/strong&gt; with relationship tracking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pipeline visualization&lt;/strong&gt; powered by ECharts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sales cadences&lt;/strong&gt; — scheduled outreach sequences (email, call, task steps)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Marketing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Campaigns&lt;/strong&gt; with member tracking and metrics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email integration&lt;/strong&gt; via the built-in mail module&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forecasting&lt;/strong&gt; with chart-based insights&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Productivity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Activities&lt;/strong&gt; — calls, meetings, notes, tasks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Calendar integration&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time notifications&lt;/strong&gt; via Django Channels + WebSockets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyboard shortcuts&lt;/strong&gt; for power users&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplicate detection&lt;/strong&gt; and record cloning&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Workflow &amp;amp; Automation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;5 automation triggers&lt;/strong&gt;: on_create, on_update, on_create_or_update, on_delete, scheduled&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-step approval workflows&lt;/strong&gt; that plug into any model via ContentType&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review processes&lt;/strong&gt; for peer/manager feedback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom signals&lt;/strong&gt; for cross-module side effects&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pairs With Horilla HRMS (Separate Install)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HR features (recruitment, employee management, payroll, etc.) live in the &lt;strong&gt;separate Horilla HRMS repository&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You can install both side-by-side if you need a unified HR + CRM stack — useful for agencies and SMBs that don't want two unrelated systems&lt;/li&gt;
&lt;li&gt;Each can be deployed independently, so you only run what you need&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Developer-Friendly
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DRF API&lt;/strong&gt; for every module&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webhooks&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modular app architecture&lt;/strong&gt; — drop in new features without touching the core&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenancy&lt;/strong&gt; via &lt;code&gt;CompanyFilteredManager&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Four-layer permission model&lt;/strong&gt;: model → field → row → role&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Tech Stack (What You're Actually Running)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Backend:    Python 3.13 + Django 6.0.3
API:        Django REST Framework
Database:   PostgreSQL
Frontend:   HTMX + Tailwind CSS + Flowbite
Charts:     ECharts
Async:      Celery + Redis
Real-time:  Django Channels (WebSockets)
Scheduling: APScheduler (in-process) + Celery Beat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few things worth calling out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTMX over SPA&lt;/strong&gt;. No React, no Vue. Server-rendered pages with HTMX for dynamic behavior. The result is faster development, simpler debugging, and pages that load in 50ms instead of 3 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Channels for real-time&lt;/strong&gt;. Notifications and live updates are pushed via WebSockets, not polled.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL only&lt;/strong&gt;. The team made the call to skip MySQL/SQLite support in production to avoid the ORM compromises that come with multi-DB.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How It Compares: Horilla CRM vs SuiteCRM vs EspoCRM vs Vtiger
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Horilla CRM&lt;/th&gt;
&lt;th&gt;SuiteCRM&lt;/th&gt;
&lt;th&gt;EspoCRM&lt;/th&gt;
&lt;th&gt;Vtiger CRM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Django 6 / Python&lt;/td&gt;
&lt;td&gt;PHP 8&lt;/td&gt;
&lt;td&gt;PHP 8&lt;/td&gt;
&lt;td&gt;PHP 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;HTMX + Tailwind&lt;/td&gt;
&lt;td&gt;Smarty templates&lt;/td&gt;
&lt;td&gt;Backbone.js&lt;/td&gt;
&lt;td&gt;Smarty&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;td&gt;AGPL v3&lt;/td&gt;
&lt;td&gt;GPL v3&lt;/td&gt;
&lt;td&gt;MPL 2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-tenancy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Built-in&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Paid edition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Real-time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;WebSockets&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Automations&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5 trigger types&lt;/td&gt;
&lt;td&gt;Workflow module&lt;/td&gt;
&lt;td&gt;Workflow module&lt;/td&gt;
&lt;td&gt;Workflow module&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Companion HRMS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (separate repo)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Modern stack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The big differentiators for Horilla:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Modern Python/Django stack&lt;/strong&gt; — easier to hire for, easier to extend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional HRMS companion&lt;/strong&gt; — install the separate Horilla HRMS repo if you want HR alongside CRM, skip it if you don't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time by default&lt;/strong&gt; — WebSockets aren't an afterthought.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenant out of the box&lt;/strong&gt; — &lt;code&gt;CompanyFilteredManager&lt;/code&gt; filters every query automatically.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Self-Hosting Horilla CRM
&lt;/h2&gt;

&lt;p&gt;Self-hosting is the whole point. Here's the short version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone&lt;/span&gt;
git clone https://github.com/horilla/horilla-crm.git
&lt;span class="nb"&gt;cd &lt;/span&gt;horilla-crm

&lt;span class="c"&gt;# Set up Python environment&lt;/span&gt;
python3.13 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# Configure&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;span class="c"&gt;# Edit DATABASE_URL, REDIS_URL, SECRET_KEY&lt;/span&gt;

&lt;span class="c"&gt;# Migrate and run&lt;/span&gt;
python manage.py migrate
python manage.py create_horilla_user
python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For production you'll want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL 14+&lt;/li&gt;
&lt;li&gt;Redis 6+ (for Celery + Channels)&lt;/li&gt;
&lt;li&gt;Gunicorn + Uvicorn workers (for ASGI/WebSocket support)&lt;/li&gt;
&lt;li&gt;Nginx as a reverse proxy&lt;/li&gt;
&lt;li&gt;Celery worker + beat process&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Docker setup is in the repo if you want to skip the manual steps.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Horilla CRM Is Good For
&lt;/h2&gt;

&lt;p&gt;Be honest about fit. Horilla is a strong choice if you're:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;small or mid-size business&lt;/strong&gt; that wants to own its customer data&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;agency&lt;/strong&gt; that needs multi-tenant isolation between clients&lt;/li&gt;
&lt;li&gt;A team that wants the option to &lt;strong&gt;add HRMS later&lt;/strong&gt; via the separate Horilla HRMS repo&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Django shop&lt;/strong&gt; that needs a CRM you can actually extend&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;regulated industry&lt;/strong&gt; (healthcare, finance, EU GDPR) where self-hosting matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's probably not the right pick if you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A turnkey SaaS with zero ops overhead (use HubSpot's free tier)&lt;/li&gt;
&lt;li&gt;Deep marketing automation rivaling Marketo&lt;/li&gt;
&lt;li&gt;A massive third-party integration marketplace on day one&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's Coming Next
&lt;/h2&gt;

&lt;p&gt;A few things on the roadmap that I'm excited about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expanded webhook system&lt;/li&gt;
&lt;li&gt;More automation trigger types&lt;/li&gt;
&lt;li&gt;AI-assisted lead scoring (already partially landed)&lt;/li&gt;
&lt;li&gt;Deeper email threading&lt;/li&gt;
&lt;li&gt;Public API documentation portal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is actively maintained and the community is open to contributions — the GitHub issues are a good place to start if you want to get involved.&lt;/p&gt;




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

&lt;p&gt;If you've been looking for a &lt;strong&gt;free, self-hosted, open-source Django CRM&lt;/strong&gt; that doesn't feel like 2012, give Horilla CRM a serious look:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/horilla/horilla-crm" rel="noopener noreferrer"&gt;https://github.com/horilla/horilla-crm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Demo&lt;/strong&gt;: &lt;a href="https://crm.demo.horilla.com/" rel="noopener noreferrer"&gt;https://crm.demo.horilla.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs&lt;/strong&gt;: &lt;a href="https://www.horilla.com/crm/" rel="noopener noreferrer"&gt;https://www.horilla.com/crm/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Star it, fork it, file an issue, or send a PR. Open source gets better when more people kick the tires.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Horilla CRM is a &lt;strong&gt;free and open-source CRM built with Django 6&lt;/strong&gt;, designed for self-hosting. It includes leads, pipelines, opportunities, campaigns, sales cadences, and automations — with real-time notifications, multi-tenancy, and a modern HTMX-based frontend. Need HR too? Pair it with the separate &lt;strong&gt;Horilla HRMS&lt;/strong&gt; repo. If you want a CRM you can actually own and extend, it's worth a look.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have you tried Horilla CRM, SuiteCRM, EspoCRM, or another open-source CRM? Drop your experience in the comments — I'd love to hear what worked and what didn't.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>django</category>
      <category>crm</category>
      <category>python</category>
    </item>
    <item>
      <title>How we cut our Claude Code token costs by 80% — and the open-source tool we built to do it (v1.1.4, 13 commands)</title>
      <dc:creator>Horilla</dc:creator>
      <pubDate>Mon, 13 Apr 2026 05:00:02 +0000</pubDate>
      <link>https://dev.to/horilla_support_8e7ce9908/how-we-cut-our-claude-code-token-costs-by-80-and-the-open-source-tool-we-built-to-do-it-v114-1ko2</link>
      <guid>https://dev.to/horilla_support_8e7ce9908/how-we-cut-our-claude-code-token-costs-by-80-and-the-open-source-tool-we-built-to-do-it-v114-1ko2</guid>
      <description>&lt;p&gt;Our Claude Code bill was three times what it should have been. For a 9-developer team, that difference was significant enough to make us actually debug it. What we found was embarrassingly simple — and almost certainly affecting your setup too.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem: CLAUDE.md loads on every request
&lt;/h3&gt;

&lt;p&gt;Claude Code reads your &lt;code&gt;CLAUDE.md&lt;/code&gt; file on every single request. That's by design — it's how the tool loads your project instructions, coding conventions, and context. But here's the part that sneaks up on you: the file is read in full, every time, regardless of what task you're working on.&lt;/p&gt;

&lt;p&gt;Our &lt;code&gt;CLAUDE.md&lt;/code&gt; had grown to about 10,000 tokens over six months. It contained:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architecture documentation for 40+ Django apps&lt;/li&gt;
&lt;li&gt;Coding standards and patterns for two separate codebases&lt;/li&gt;
&lt;li&gt;API references and import paths&lt;/li&gt;
&lt;li&gt;Session notes and debugging tips we'd accumulated&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every time a developer asked Claude to fix a typo in a README, the full 10,000-token file was injected into the context. At roughly 60 requests per developer per day, across 9 developers, that's 5.4 million tokens of CLAUDE.md context per month — before writing a single line of code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why prompt caching wasn't saving us
&lt;/h3&gt;

&lt;p&gt;Anthropic caches prompts above 1,024 tokens, and it works well — &lt;em&gt;when the prompt is identical between requests&lt;/em&gt;. One character of difference and you pay full price.&lt;/p&gt;

&lt;p&gt;Our CLAUDE.md had dynamic content: session notes with timestamps, environment-specific paths, and other content that changed between requests. Every request was a cache miss. Every request billed at full input token price.&lt;/p&gt;

&lt;p&gt;This is the second thing &lt;code&gt;claudectx analyze&lt;/code&gt; catches: dynamic content that breaks caching.&lt;/p&gt;

&lt;h3&gt;
  
  
  What we built: claudectx v1.1.4
&lt;/h3&gt;

&lt;p&gt;We built &lt;strong&gt;claudectx&lt;/strong&gt; — a CLI that audits and optimizes what Claude Code loads per session. It's now at v1.1.4 with 13 commands across four categories.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx claudectx analyze
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run this in your project directory right now. No install needed. It outputs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claudectx analyze — token breakdown
════════════════════════════════════════
CLAUDE.md             7,841 tokens  ████████████████████ 68.1%
Open files            2,840 tokens  ██████               20.6%
Conversation history  1,630 tokens  ███                  11.2%
MCP tool results         14 tokens  ░                     0.1%
────────────────────────────────────────
Total                12,325 tokens

Waste patterns detected (3):
  ⚠  CLAUDE.md: 7,841 tokens — 292% over the 2,000 token recommendation
  ⚠  No .claudeignore file found
  ⚠  CLAUDE.md contains dynamic timestamp — breaks prompt caching
  → Run `claudectx optimize --apply` to fix all 3 issues
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The core fix: optimize
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claudectx optimize &lt;span class="nt"&gt;--apply&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This does three things automatically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Splits CLAUDE.md&lt;/strong&gt; into a lean core + demand-loaded &lt;code&gt;@file&lt;/code&gt; sections. Core stays inline (under 2K tokens); large reference sections load only when relevant files are open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generates .claudeignore&lt;/strong&gt; with Node.js, Python, and common binary patterns to stop loading lock files, build artifacts, and assets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strips cache-busting content&lt;/strong&gt; — removes dynamic timestamps and session notes that prevent Anthropic's prompt cache from activating.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Safety:&lt;/strong&gt; Every file claudectx touches is automatically backed up to &lt;code&gt;~/.claudectx/backups/&lt;/code&gt;. If anything looks wrong, &lt;code&gt;claudectx revert --list&lt;/code&gt; shows all backups and &lt;code&gt;claudectx revert --id &amp;lt;id&amp;gt;&lt;/code&gt; restores any of them.&lt;/p&gt;

&lt;p&gt;On our setup this cut tokens from 18,432 to 3,740 per request (79.7% reduction).&lt;/p&gt;

&lt;h3&gt;
  
  
  The MCP proxy: symbol-level reads
&lt;/h3&gt;

&lt;p&gt;The less obvious win is &lt;code&gt;claudectx mcp&lt;/code&gt; — a local MCP server proxy that intercepts file-read requests and returns symbol-level slices instead of whole files.&lt;/p&gt;

&lt;p&gt;When Claude reads a file to find a class definition, it gets the entire file. On a large Django app, that's often 12,000+ tokens for one model. The same information as a symbol-level read (just the class) is typically 800 tokens.&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Configure Claude Code to use the local MCP server and you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;smart_read&lt;/code&gt;&lt;/strong&gt; — reads a symbol by name (class, function, method)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;search_symbols&lt;/code&gt;&lt;/strong&gt; — finds symbols across the codebase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;index_project&lt;/code&gt;&lt;/strong&gt; — builds a local symbol index&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Analytics commands
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;claudectx watch&lt;/code&gt;&lt;/strong&gt; — a live terminal dashboard (Ink/React) showing token burn, cache hit rate, and most-read files as you work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;claudectx compress&lt;/code&gt;&lt;/strong&gt; — distills your session JSONL into a MEMORY.md entry. An 8,000-token session typically compresses to 150–200 tokens. Next session starts lean without losing context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;claudectx report&lt;/code&gt;&lt;/strong&gt; — 7/30-day analytics:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sessions:          23    Requests:       847
Input tokens:   2,341,200    Cache hits:    51%
Total cost (est.): $4.87   Avg/session:  $0.21
Top waste file:    CLAUDE.md  (12,400 tokens, 847 reads)
→ Run `claudectx drift` to clean up stale sections
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;`claudectx budget "&lt;/strong&gt;/&lt;em&gt;.py"`&lt;/em&gt;* — estimate token cost before running a task. Shows per-file token counts, cache hit likelihood, total cost, and .claudeignore recommendations. Like git status for your context window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;claudectx drift&lt;/code&gt;&lt;/strong&gt; — scans CLAUDE.md for dead &lt;code&gt;@file&lt;/code&gt; references, git-deleted file mentions, and sections with zero reads in the last 30 days. Real cost: you're loading documentation for files that no longer exist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Teams and multi-assistant support
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;claudectx teams&lt;/code&gt;&lt;/strong&gt; — per-developer cost attribution for multi-dev teams:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claudectx teams &lt;span class="nb"&gt;export&lt;/span&gt;          &lt;span class="c"&gt;# → ~/.claudectx/team-export-{date}.json&lt;/span&gt;
claudectx teams aggregate &lt;span class="nt"&gt;--dir&lt;/span&gt; ./reports/  &lt;span class="c"&gt;# merge all exports&lt;/span&gt;
claudectx teams aggregate &lt;span class="nt"&gt;--anonymize&lt;/span&gt;       &lt;span class="c"&gt;# Dev 1, Dev 2...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each developer exports an anonymized summary of their session data. The lead aggregates them without seeing session content. Know where the budget is going across the team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;claudectx convert --to cursor|copilot|windsurf&lt;/code&gt;&lt;/strong&gt; — exports your CLAUDE.md to other AI assistant formats. Splits sections into &lt;code&gt;.cursor/rules/*.mdc&lt;/code&gt; files for Cursor, or &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; for Copilot. One source, every assistant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;claudectx warmup&lt;/code&gt;&lt;/strong&gt; — sends a priming request to Anthropic so your first working request gets a cache hit instead of a full miss. &lt;code&gt;--cron "0 9 * * 1-5"&lt;/code&gt; installs as a morning cron job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;claudectx hooks list|add|remove&lt;/code&gt;&lt;/strong&gt; — named hook marketplace. Four built-ins: auto-compress (triggers on file reads), daily-budget (budget check before tool use), slack-digest (session summary to Slack webhook), session-warmup (cache pre-warm on read events).&lt;/p&gt;

&lt;h3&gt;
  
  
  Real results
&lt;/h3&gt;

&lt;p&gt;After running &lt;code&gt;optimize --apply&lt;/code&gt; on our setup:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tokens per request&lt;/td&gt;
&lt;td&gt;18,432&lt;/td&gt;
&lt;td&gt;3,740&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cache hit rate&lt;/td&gt;
&lt;td&gt;12%&lt;/td&gt;
&lt;td&gt;74%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monthly cost estimate&lt;/td&gt;
&lt;td&gt;$87&lt;/td&gt;
&lt;td&gt;$17&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 80% figure is real but came from our specific setup — an unusually large CLAUDE.md and a completely unconfigured .claudeignore. If your config is already lean, expect 20–40%. The &lt;code&gt;analyze&lt;/code&gt; command will tell you in 30 seconds what your actual baseline is.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# No install — try immediately&lt;/span&gt;
npx claudectx analyze

&lt;span class="c"&gt;# Install globally&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; claudectx
&lt;span class="c"&gt;# or via Homebrew:&lt;/span&gt;
brew tap Horilla/claudectx &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew &lt;span class="nb"&gt;install &lt;/span&gt;claudectx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Website: &lt;a href="https://claudectx.horilla.com" rel="noopener noreferrer"&gt;claudectx.horilla.com&lt;/a&gt;&lt;br&gt;
Source (MIT): &lt;a href="https://github.com/Horilla/claudectx" rel="noopener noreferrer"&gt;github.com/Horilla/claudectx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We're the team behind &lt;a href="https://github.com/horilla-opensource/horilla" rel="noopener noreferrer"&gt;Horilla&lt;/a&gt; — an open-source Django HRMS with 40+ apps. This tool came from real pain running Claude Code across a multi-repo, multi-app codebase on a 9-developer team. If you're in a similar situation, we'd love your feedback.&lt;/p&gt;

&lt;p&gt;Issues and PRs welcome. If &lt;code&gt;analyze&lt;/code&gt; shows something surprising, share it in the comments.&lt;/p&gt;

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