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

@agent-crm/cli

v0.17.0

Published

The headless CRM for Claude

Downloads

5,738

Readme

Claude is running your GTM and your leads live in CSVs. Spreadsheets fall apart around 30 deals in: you lose track of who said what, what's open, and what's next. CRMs solve that, but they were built for humans clicking through UIs, not agents reading and writing it on your behalf.

Plug Claude into your CRM via MCP and the schema torches your context, every action is a network round-trip, and you blow through your usage limits. Salesforce and HubSpot are shipping their own CLIs, but they end at the deal record — the scrapes, enrichment runs, and half-cleaned lists that fed it live somewhere else. You can't see what your last scrape pulled in and what it didn't clean up, or pick up where last weekend's list-building session left off.

Agents work best on files. Agent CRM is a portable .acrm file your agent can query, edit, diff, and version — pipeline, scrapes, and enrichments, all in one place.

                    ┌──────────────┐
                    │  Custom UIs  │
                    └──────┬───────┘
                           │
┌────────────┐      ┌──────▼──────┐      ┌───────────────┐
│ AI Agents  ├─────►│  .acrm      │◄─────┤ CLI / Scripts │
└────────────┘      └─────────────┘      └───────────────┘

What's in a .acrm file?

A .acrm file is a SQLite database with a change-history layer on top. That means:

  • No proprietary format. Open it with any lix client and your data is right there in standard tables.
  • Every write is a versioned checkpoint. Like git for your CRM — branch to run an experiment, diff to see what changed, revert if Claude mangles a row.
  • It's just a file. Copy it, email it, commit it, sync it through Google Drive. No server, no account, no migration tool needed if you ever walk away.

If you can read SQLite, you can read your CRM. That's the whole guarantee.

Quickstart

Install the CLI:

npm install -g @agent-crm/cli

Create your first .acrm file and let Claude rip on it:

claude --dangerously-skip-permissions

Create an .acrm file

! acrm init pipeline.acrm

Then import your CSVs

! acrm import csv ./leads.csv

Why Agent CRM

  • 🧩 Headless: Ships as a CLI.
  • ⚒️ Skills based: Claude writes skills against the CLI (transcript ingestion, stale-deal sweeps, weekly reports) as .md files.
  • 🧱 Modeled: uses Attio's data model out of the box — people, companies, deals, posts, transcripts. Typed, related, queryable with plain SQL. Fixed schema = predictable agent edits.
  • 🔀 Version controlled: every change is a checkpoint on a branch. Diff, merge, revert, time-travel.
  • 🔌 Pluggable transcript providers: transcripts are vendor-agnostic. Drop a transcript-provider-<vendor> skill into ~/.claude/skills/ to plug in Granola, Otter, Fireflies, Fathom, Zoom, manual paste, or anything else.

Use cases

A grab-bag of jobs Agent CRM handles today. Each is a skill or a CLI command — bring your own, or use the ones we ship.

Prep for a sales call. /prep-call pulls the person's full history from your .acrm, fetches their LinkedIn profile (cached, 14-day TTL), and hands you a one-pager with discovery questions tied to what they've actually been talking about.

Pull call transcripts from Granola. /post-call fetches the transcript from your connected provider, resolves participants by email, and imports it as a transcripts record linked to the attendees. Local, queryable, and easy to spot patterns across calls.

Draft follow-ups in your voice. /follow-up finds leads with stale activity, reads the prior thread plus any past-call transcripts, and drafts the next message. You review and send.

Import a scraped list. acrm import csv ./leads.csv ingests a CSV with auto-derived attributes. New columns become typed attributes on the right object — no schema setup.

Sweep stale deals. Ask Claude to query your .acrm for deals untouched in N days and surface them. It's just SQL underneath, so any filter you can describe, Claude can run.

Import X / LinkedIn posts. You're scrolling and see a post worth following up on. Paste the URL into Claude Code — acrm import post <url> upserts the post and adds the author as a contact.

Import X / LinkedIn profiles. Come across someone you want to chat to. Paste the profile URL into Claude Code — acrm import linkedin <url> or acrm import x <handle> pulls the enriched profile and dedupes against existing people.

Plug in a new transcript provider. Adapters are themselves skills. Drop a transcript-provider-<vendor> SKILL.md into ~/.claude/skills/ following the contract in docs/transcript-provider-protocol.md (Otter, Fireflies, Fathom, Zoom). /setup-transcripts picks it up and walks you through connecting it before your first /post-call.

Write your own skill. Ask Claude for "a skill that reads my call transcripts, updates deal stages, and posts a summary to Slack" and it writes a .md file into ~/.claude/skills/. No code.

Query with plain SQL. acrm execute "SELECT ..." runs against the Attio-style schema. It's just SQLite — bring any client you like.