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

@djabolum/doppelganger

v0.1.2

Published

A local-first continuity toolkit for user-approved context, handoffs, receipts, and bounded offline contract validation.

Readme

Doppelganger

A local-first continuity toolkit for carrying user-approved AI context between assistants.

Doppelganger is not a clone of you.
It is a reflection of the intention you choose to convey.

It does not connect your AI accounts.
It does not scrape conversations.
It does not upload by default.
It does not act on your behalf.

It prepares contexts, boundaries, and exchanges that you choose to share with an AI.

What it does

  • Create local context cards
  • Build scoped context packs
  • Prepare handoff cards between AI assistants
  • Write trust receipts
  • Import validated Markdown/Notion-like card drafts
  • Build bounded candidate 0.3 files for local verification
  • Inspect contract identity, hashes, size, and drift locally

What it does not do

  • It does not connect your AI accounts
  • It does not scrape conversations
  • It does not contain a network client or upload path
  • It does not configure an endpoint or credential
  • It does not perform a live Quark deposit
  • It does not create an autonomous agent
  • It does not treat memory as truth

Core invariants

  • Doppelganger ≠ user
  • Context ≠ identity
  • Memory ≠ authority
  • Handoff ≠ command
  • Host ≠ owner

See docs/doctrine.md for the full list of ten invariants.

Quickstart

npm install --global @djabolum/doppelganger

doppel init

doppel card add memory \
  --label "Response style" \
  --content "Answer in layers, avoid generic replies."

doppel card add boundary \
  --label "No diagnosis" \
  --content "Do not turn my traces or emotions into a diagnosis."

# `fossil` is the short CLI alias for the internal kind `fossil_trace`.
# Fossil traces carry a short pattern label, never narrative `--content`.
doppel card add fossil \
  --label "Trace de passage"

# Validate a Markdown card file you created or exported locally
doppel card import \
  --from markdown \
  --file ./cards.md \
  --dry-run

doppel context build --scope minimal --target claude
doppel context build --scope minimal --target chatgpt --format json

doppel status
doppel doctor

# Remove a local card while keeping a revocation audit record
doppel card revoke --id <card_id>

For repository development, use npm install, npm run build, and node dist/packages/cli/index.js ....

See examples/minimal/ for the manifest, cards, and context pack this produces, docs/field-cases.md for realistic usage paths, and docs/scopes.md for what each scope includes.

Status — V1.1 frozen

Doppelganger V1.1 is frozen as a local-first continuity kit with validated Markdown/Notion-like import. See docs/v1.1-freeze.md.

The vault validates every object again when it is read, uses private filesystem permissions (0700 directories, 0600 files), records every context/handoff export, and exposes explicit local revocation commands.

V1.1 adds field diagnostics, explicit Markdown/JSON exports, readable receipt detail, receiving profiles for ChatGPT, Claude, Gemini, and generic assistants, and a strict local Markdown importer. Notion-like exports enter only through Doppelganger validation; the boundary is documented in docs/markdown-card-import.md.

Candidate 0.3 tooling is local verification only. The Contract Doctor, fixture exporter, and doppel contract build-quark-candidate command write or inspect local files; they do not contact Quark. doppel quark deposit remains an explicit refusal.

Network construction and activation remain blocked by docs/network-activation-preconditions-v0.md.

The long-term layering is deliberate: writing surfaces write, Doppelganger bounds, and receiving hosts receive. Official Notion, browser, and MCP interfaces remain V3 work, after the transport contract is stable.

Because this repository is public, documentation follows docs/publication-policy.md: public contracts and guarantees are documented; private deployment topology is not.

Contributing

See CONTRIBUTING.md before opening a PR — it lists what gets rejected (silent scraping, default uploads, authoritative memory, hidden agentivity) regardless of code quality.

Security

See SECURITY.md to report a vulnerability, and docs/threat-model.md for what this project does and does not do by design.

Verification

npm test

The suite covers vault tampering, malformed JSON, scope isolation, mandatory receipts, revocation, filesystem permissions, CLI flag validation, local candidate construction, and contract drift.

License

Apache License 2.0 — see LICENSE.