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

cliper-memory

v0.1.14

Published

Transform any repository into a persistent AI memory graph for AI assistants and coding agents.

Readme

npm version license PRs welcome

There are several ways to use Cliper Intelligence

Use cliper using Cliper APP

Chat with your codebase from anywhere

Use it through Cliper Slack Agent

Chat with your codebase from Slack app

Cliper Memory

New to Cliper? Start with the friendly tour.

Transform any repository into a persistent AI memory graph.

Git stores source code. Cliper stores engineering knowledge.

Every AI conversation about your codebase currently starts from zero - you re-send files, re-explain architecture, re-describe decisions. Cliper Memory inverts this: run cliper init once, and your repository becomes a structured knowledge graph in Cognee Cloud - typed memories connected by explicit relationships - that any AI application can query from that point on.

Repository
    │
    ▼
cliper init            ← scan, extract, structure
    │
    ▼
Structured Memories    ← 13 typed memory objects
    │
    ▼
Cognee Cloud           ← knowledge graph (cognify)
    │
    ├──────────────┐
    ▼              ▼
Mobile App     AI Agents
    │              │
    └──────┬───────┘
           ▼
Persistent Engineering Knowledge

Requirements

  • Node.js 18+ (native fetch is used throughout)
  • A GitHub Personal Access Token - repo (or public_repo) scope, used to fetch issues and pull requests
  • A memory provider - either a Cognee Cloud account (base URL and API key from your dashboard), or the built-in Local JSON provider, which needs nothing (see Memory Providers)

Installation

npm install -g cliper-memory

This installs the cliper binary.


Setup Guide

1. Authenticate

cliper auth

cliper auth

This runs two configuration steps:

GitHub - paste your Personal Access Token. Cliper verifies it against the GitHub API and registers your user. The token is used to enrich repository memory with issues and pull requests.

Cognee - paste your Cognee Base URL (e.g. https://tenant-xxxx.aws.cognee.ai) and API Key. This is where your memory graphs are stored.

Credentials are written to ~/.cliper/config.json with 0600 permissions. You can also configure a single provider:

cliper auth github
cliper auth cognee
cliper auth local-json

2. Initialize a repository

cd your-project
cliper init

The full pipeline runs in one command:

cliper init in action

✔ Scope detected: 22 paths active, 0 watched
✔ File tree built
✔ Extracted 43 files
✔ Git: main - feat: add restaking module
✔ References: 3 fetched, 0 failed
✔ Found 94 gaps (9 high priority)
✔ Dependency map: 70 edges, 13 external packages
✔ Context document built
✔ Repository registered with Cliper
✔ Cognee memory updated

What happened:

  1. Scope detection - git activity analysis determines which paths matter; manual additions via cliper scope are preserved and merged.
  2. Extraction - file tree annotation, source content extraction (default cap 50KB per file, configurable with --max-file-size), semantic labeling of what each file does.
  3. Intelligence passes - dependency graph construction (internal edges + external packages), gap detection (undocumented patterns, ranked by severity), git context (commits, branch state), GitHub context (issues, pull requests), external reference resolution.
  4. Memory build - everything is converted into typed, self-describing memory objects (see Memory Types) with explicit relationships.
  5. Sync - memories are uploaded to your Cognee dataset (cliper-<project>) in parallel batches, then cognified into a knowledge graph. Chunked upload is deliberate: it keeps each ingestion unit small enough for Cognee's extraction pipeline to process reliably on real-world repositories.
  6. Local artifact - a complete context document is written to .cliper/context.md for direct use with any LLM.

3. Use the memory

Paste context anywhere:

cliper export | pbcopy        # macOS
cliper export | xclip         # Linux

Query the graph (via the Cognee search API, GRAPH_COMPLETION mode - this is what powers the Cliper mobile app's Ask mode):

How is authentication implemented?
Which modules use the config loader?
What are the highest-priority gaps in this codebase?
How does the auth command relate to the init command?

Because memories are graph-connected rather than embedded in isolation, relationship questions ("how does X relate to Y", "what depends on Z") resolve through actual graph traversal instead of keyword proximity.

Connect a coding agent:

cliper agent connect

Detects locally installed agents (Claude Code, Codex, Cursor Agent), opens an authenticated WebSocket to the Cliper backend, and registers this machine as online - enabling remote task dispatch from the Cliper mobile app. Code execution always happens on your machine; only memory travels.


Keep the memory fresh:

cliper sync

Every memory is content-hashed into .cliper/manifest.json. Unchanged repo? Sync finishes in seconds with zero uploads. New commit? Only the delta ships:

✔ Scanned 306 memories - 3 new, 2 changed, 285 unchanged
✔ Cognee memory updated (5 memories)

Init once. Sync forever. Add --watch to auto-sync on new commits.

Memory Types

Cliper does not upload raw files. Each unit of knowledge is a typed memory object - titled, tagged, related, and self-describing - so the graph understands what kind of thing it is storing:

| Memory Type | What it captures | | --- | --- | | Repository Memory | Identity of the project - name, purpose, top-level shape | | File Summary Memory | Per-file semantic summary: what the file does, not just its name | | Responsibility Memory | The role a file/module plays in the system | | Architecture Memory | Module boundaries, layering, structural patterns | | Dependency Memory | Internal import edges - who depends on whom | | External Package Memory | Third-party packages and where they are used | | Git Memory | Branch state, working tree context | | Commit Memory | Individual commits with messages, authors, changed files | | Release Memory | Release points in project history | | Timeline Memory | The evolution of the repository over time | | Issue Memory | GitHub issues attached to the repository | | Pull Request Memory | GitHub PRs with their commit and file linkage | | Gap Memory | Undocumented patterns and risky corners, ranked by severity |

Relationship Graph

Memories are connected by explicit, first-class relationships - this is what makes Cliper a knowledge graph rather than a document dump:

Repository ──▶ Commit          Repository ──▶ Issue
Repository ──▶ Release         Repository ──▶ Pull Request
Repository ──▶ Timeline

File ──▶ Dependency            Commit ──▶ Changed Files
File ──▶ Responsibility        Pull Request ──▶ Commit
Module ──▶ Architecture        Pull Request ──▶ File
Package ──▶ Repository         Gap ──▶ File Release ──▶ Commit

A question like "which files were touched by the PR that changed the auth flow?" is a two-hop traversal (PR → Commit → Changed Files), not a similarity guess.


Command Reference

| Command | Description | | --- | --- | | cliper init [-p path] [--max-file-size kb] | Full scan → memory build → provider sync → backend registration | | cliper auth [github\|cognee\|local-json] | Configure credentials (~/.cliper/config.json) | | cliper agent connect | Register local AI coding agents over WebSocket | | cliper sync [--watch] | Incremental memory sync - content-hashed manifest, uploads only what changed | | cliper status | Show what is fresh, stale, and in scope | | cliper scope <add\|remove\|watch\|list> [path] | Manually steer what gets remembered | | cliper export [--format md\|txt] | Print the context document to stdout | | cliper analyze --model <claude\|chatgpt> | Generate a model-optimized prompt from the context |

Configuration

| Location | Contents | | --- | --- | | ~/.cliper/config.json | GitHub token, Cognee credentials, Local JSON settings (mode 0600) | | .cliper/context.md | Generated context document (per repo) | | .cliper/ scope config | Active/watched paths for this repo | | .cliper/manifest.json | Sync manifest - content hashes of every uploaded memory | | .cliper/memory/ | Local JSON provider's stored memories (one JSON file per memory) |

Cognee credentials can alternatively be provided via environment: COGNEE_BASE_URL, COGNEE_API_KEY.

cliper init automatically appends its artifacts to .gitignore and untracks accidentally committed node_modules.

Memory Providers

Cliper generates memories the same way regardless of where they end up - a provider is just where they're stored and searched. Two ship today:

| Provider | Storage | Search | Setup | | --- | --- | --- | --- | | Cognee | Cloud knowledge graph | Real graph traversal (GRAPH_COMPLETION) | cliper auth cognee - needs a Cognee Cloud account | | Local JSON | .cliper/memory/<dataset>/*.json in the repo | Keyword scoring + one hop of relationship expansion | cliper auth local-json - no account, no network |

cliper init and cliper sync use whichever provider is configured; if both are, Cognee takes priority. Local JSON is the zero-dependency option - useful for CI, tests, or working fully offline - and every memory it stores is a plain, readable JSON file, so cat-ing .cliper/memory/ is a legitimate way to inspect what Cliper extracted.

Adding another provider (Neo4j, pgvector, ...) means implementing src/providers/memoryProvider.ts's interface - see CONTRIBUTING.md.


Roadmap

Done - repository knowledge graph (all 13 memory types above), GitHub intelligence for issues/PRs, Cognee cloud provider with chunked sync, Local JSON provider (zero-dependency offline storage), incremental manifest-based sync, mobile + web companion (GitHub sign-in, repository browser, memory chat, live agent presence), per-user encrypted credentials.

In progress - agent task execution pipeline (dispatch from phone → headless agent run → streamed edit/test/commit events), Cognee-side pruning of removed memories.

Planned - multi-provider support (Neo4j, Memgraph, PostgreSQL + pgvector, Graphiti, LanceDB), hybrid semantic search, developer SDK (new Cliper().search(...), .timeline(), .graph()), team workspaces with cross-repository knowledge graphs, and a full agent ecosystem (refactoring, documentation, security review, PR review).

Philosophy

The memory layer for software engineering. Instead of repeatedly sending repositories to AI models, developers initialize once, sync incrementally, and let AI applications and coding agents understand, search, and evolve software through a persistent knowledge graph.

Your code never leaves your machine - only its knowledge does.


License: MIT · Issues & source: github.com/bristinWild/cliper-sdk