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

@reepl/cli

v0.1.3

Published

Reepl command-line interface — create, schedule, and manage LinkedIn / X / Reddit content, carousels, signals, DMs, and writing styles.

Readme

Reepl CLI

reepl — a command-line interface for Reepl. Create, schedule, and manage LinkedIn / X / Reddit content, carousels, signals, DMs, and writing styles from your terminal or an agent.

Built LLM-first: every command emits a stable JSON envelope ({ ok, data } / { ok, error: { code } }), auto-enabled when output is piped, with distinct exit codes per error class so scripts and agents can branch without parsing prose.

Architecture

  • src/core@reepl/api-core, an environment-agnostic client for api.reepl.io/v1. Owns endpoint shapes, Cognito token refresh, workspace scoping, and typed errors. It is the same contract the Reepl MCP server uses internally, and is designed to be extracted to its own npm package so both surfaces share one source of truth.
  • src/cli — the reepl binary: config/token storage, browser login, output rendering, and one command module per resource.

Auth

reepl login opens your browser to the Reepl web app, which hands back Cognito tokens to a one-time localhost loopback URL using a form POST, so tokens never appear in browser history or access-log URLs. Tokens are signature/issuer/audience verified, stored in ~/.reepl/credentials.json (0600 inside a 0700 directory), and refreshed automatically (public Cognito client, no secret). Headless credentials are read from stdin to keep them out of shell history and process listings:

printf '%s' "$REEPL_CREDENTIALS_JSON" | reepl login --credentials-stdin

See SECURITY.md for the threat model and controls shared with the new MCP.

Commands

# Auth & workspace
reepl login | logout | whoami
reepl workspace list | switch <id> | current

# Posts (LinkedIn + X)  --platform linkedin|x
reepl post create -c "..." [--draft | --schedule <iso> | --publish] [--title t] [--media a,b]
reepl post list [--status scheduled|published|drafts] [--search q] [--limit n]
reepl post update <id> [-c "..."] [--schedule <iso>] [--draft]
reepl post delete <id> [--draft]

# Calendar (scheduled across platforms)
reepl calendar [--platform linkedin|x|all]

# Comment / reply. X + Reddit by URL; LinkedIn by Reepl post id (see Notes / limits)
reepl comment <url> -t "..."             # X or Reddit post URL
reepl comment <reepl-post-id> -t "..."   # your own Reepl-published LinkedIn post

# Reddit
reepl reddit search <keyword>            # Pro plan
reepl reddit reply <urlOrId> -t "..."
reepl reddit status

# Signals inbox
reepl signals list

# Carousels
reepl carousel list | get <id> | delete <id>
reepl carousel create --title t --slides '[{"headline":"..","body":".."}]'
reepl carousel update <id> [--title t] [--slides <json>] [--theme x]
reepl carousel generate --topic "..." [--slides n]

# Writing styles (workspace-scoped; train is Pro+)
reepl style get
reepl style set --facet posts -i "..."
reepl style train --facet posts
reepl style test --facet posts -i "..."

# Voice profile
reepl voice get
reepl voice update --file profile.json | --active | --inactive

# X DMs & reply (Premium)
reepl dm list | messages <id> | refresh
reepl dm reply <conversationId> -t "..."
reepl x reply <tweetUrlOrId> -t "..."

# Agent discovery
reepl schema            # full command/flag tree as JSON

Every command accepts --json (auto-enabled when piped) and exits non-zero with a typed error.code on failure (UNAUTHENTICATED, PLAN_REQUIRED, PREMIUM_REQUIRED, ...).

Notes / limits

  • LinkedIn comments address Reepl-tracked posts by their Reepl post id, not arbitrary public LinkedIn URLs (use the Chrome extension for those). Reddit and X comment/reply work for any post by URL.
  • Reddit post creation is intentionally out of scope for v1 (no backend endpoint); Reddit is reply + search only.

Develop

npm install
npm test            # unit tests (fast, hermetic — mocked fetch)
npm run test:e2e    # end-to-end: real binary vs a mock Reepl server
npm run test:all    # both
npm run typecheck   # tsc --noEmit
npm run build       # tsup -> dist/
node dist/cli/index.js --help

Testing is documented in TESTING.md — including the e2e TDD harness (MockReeplServer + runCli) for driving the real CLI in a red/green loop.

Installing the package prints a branded Reepl screen (postinstall); a bare reepl shows it too.