npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@septum-jdr/private-context

v2.0.2

Published

Enterprise automatic context manager for Claude CLI with SQLite + FTS5

Readme

@septum-jdr/private-context

npm version npm downloads license node version

Persistent semantic memory engine for Claude CLI SQLite + FTS5 powered automatic context injection.


✨ Why This Exists

Claude CLI does not persist long-term context across executions.

@septum-jdr/private-context adds:

  • Persistent memory
  • Automatic context injection
  • Semantic + recency ranking
  • Zero manual workflow
  • Fully automatic execution wrapper

No extra commands. No manual context files.


🚀 What It Does (Automatically)

Every time you run:

claude "your prompt"

The wrapper:

  1. Searches relevant historical entries

  2. Combines:

    • Semantic match (FTS5)
    • Recent history
  3. Injects context before your prompt

  4. Executes claude-original

  5. Stores prompt + response

  6. Auto-prunes old records

  7. Displays: [private-context ACTIVE]

Completely automatic.


🧠 Search Strategy

Hybrid model:

| Strategy | Purpose | | -------------------- | --------------------------------- | | FTS5 Semantic Search | Find conceptually related entries | | Recency Ranking | Maintain session continuity | | Auto-prune | Prevent uncontrolled DB growth |

  • No embeddings required.
  • No external APIs.
  • No recurring costs.

📦 Installation

npm install -g @septum-jdr/private-context

Requires:

  • Node 18+
  • Claude CLI installed

Recommended:

  • Node 20 LTS

🔧 Integration With Claude

Step 1 — Backup original Claude

macOS / Linux / WSL:

mv $(which claude) $(dirname $(which claude))/claude-original

Windows PowerShell:

Rename-Item (Get-Command claude).Source claude-original

Step 2 — Activate wrapper

Add alias:

alias claude="private-context"

Reload shell:

source ~/.zshrc
# or
source ~/.bashrc

Done.


🖥 WSL Installation Notes

Important:

  • Install Node inside WSL
  • Install package inside WSL
  • Backup Claude inside WSL
  • Do not mix Windows Node with WSL Node

Everything must live in the same environment.


📁 Storage Location

~/.claude/private-context.db

SQLite database with FTS5 enabled.


🏗 Architecture Overview

Layered design:

  • CLI Wrapper
  • Core Engine
  • SQLite Adapter
  • Search Engine (FTS5)
  • Context Injector
  • Auto-prune Manager

Fully local. No network dependency. Deterministic behavior.


📊 Manual Context vs private-context

| Feature | Manual | private-context | | ------------------- | ------ | --------------- | | Persistent Memory | ❌ | ✅ | | Automatic Injection | ❌ | ✅ | | Semantic Retrieval | ❌ | ✅ | | Recency Ranking | ❌ | ✅ | | Auto-Prune | ❌ | ✅ | | Setup Complexity | Medium | Low |


🔄 Updating

npm update -g @septum-jdr/private-context

❌ Uninstall

Restore original Claude:

macOS / Linux / WSL:

mv $(dirname $(which claude))/claude-original $(dirname $(which claude))/claude

PowerShell:

Rename-Item claude-original claude

Then:

npm uninstall -g @septum-jdr/private-context

🛡 Security

  • Local-only storage
  • No external APIs
  • No telemetry
  • No remote calls
  • Fully auditable source

🧹 Auto-Prune Policy

Keeps last 500 entries automatically.

Prevents database bloat.

No manual maintenance required.


🧪 Troubleshooting

"private-context ACTIVE" not showing

  • Check alias
  • Confirm correct Node environment
  • Verify Claude binary was backed up correctly

WSL not working

  • Ensure Node and Claude are installed inside WSL
  • Check $HOME path consistency

📈 Roadmap

  • Configurable prune strategy
  • Optional embeddings mode
  • Context size visualization
  • Session tagging
  • Multi-project indexing

🤝 Contributing

PRs welcome.

  1. Fork repository
  2. Create feature branch
  3. Submit PR

📜 License

MIT


👨‍💻 Author

@septum-jdr