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

chatlab-cli

v0.23.0

Published

ChatLab CLI & Service - Chat history analysis tool

Downloads

1,554

Readme

Your chat history, finally yours.

English | 简体中文

Official Website · Documentation · Roadmap

ChatLab is an open-source desktop app for understanding your social conversations. It combines a flexible SQL engine with AI agents so you can explore patterns, ask better questions, and extract insights from chat data, all on your own machine.

Currently supported: WhatsApp, LINE, WeChat, QQ, Discord, Instagram, and Telegram. Coming next: iMessage, Messenger, and KakaoTalk.

Core Features

  • 🚀 Built for large histories: Stream parsing and multi-worker processing keep imports and analysis responsive, even at million-message scale.
  • 🔒 Private by default: Your chat data and settings stay local. No mandatory cloud upload of raw conversations.
  • 🤖 AI that can actually operate on data: Agent + Function Calling workflows can search, summarize, and analyze chat records with context.
  • 📊 Insight-rich visual views: See trends, time patterns, interaction frequency, rankings, and more in one place.
  • 🧩 Cross-platform normalization: Different export formats are mapped into a unified model so you can analyze them consistently.

Usage Guides

Preview

For more previews, please visit the official website: chatlab.fun

Preview Interface

System Architecture

Architecture Principles

  • Local-first by default: Raw chat data, indexes, and settings remain on-device unless you explicitly choose otherwise.
  • Streaming over buffering: Stream-first parsing and incremental processing keep large imports stable and memory-efficient.
  • Composable intelligence: AI features are assembled through Agent + Tool Calling, not hard-coded into one model path.
  • Schema-first evolution: Import, query, analysis, and visualization share a consistent data model that scales with new features.

Runtime Architecture

  • Main Process (control plane): apps/desktop/main/index.ts handles lifecycle and windows. apps/desktop/main/ipc/ defines domain-scoped IPC. Core AI, query, NLP, import, and merge logic lives in shared packages (packages/core, packages/node-runtime, packages/tools); apps/desktop/main/ai/ and apps/desktop/main/i18n/ are thin Electron adaptation layers.
  • Worker Layer (compute plane): apps/desktop/main/worker/ runs import, indexing, and query tasks via workerManager, delegating core logic to @openchatlab/core and @openchatlab/node-runtime.
  • Renderer Layer (interaction plane): Vue 3 + Nuxt UI + Tailwind CSS drive management, private chat, group chat, and analysis interfaces. apps/desktop/preload/index.ts exposes tightly scoped APIs for secure process boundaries.

Data Pipeline

  1. Ingestion: parser/ detects file format and dispatches to the matching parser module.
  2. Persistence: Stream-based writes populate core local entities: sessions, members, and messages.
  3. Indexing: Session- and time-oriented indexes are built for timeline navigation and retrieval.
  4. Query & Analysis: worker/query/* powers activity metrics, interaction analysis, SQL Lab, and AI-assisted exploration.
  5. Presentation: The renderer turns query output into charts, rankings, timelines, and conversational analysis flows.

Extensibility & Reliability

  • Pluggable parser architecture: Adding a new import source is mostly an extension in parser/formats/*, without reworking downstream query logic.
  • Full + incremental import paths: streamImport.ts and incrementalImport.ts support both first-time onboarding and ongoing updates.
  • Modular IPC boundaries: Domain-based IPC segmentation reduces cross-layer coupling and limits permission spread.
  • Unified i18n evolution: Main and renderer processes share an i18n system that can evolve with product scope.

Local Development

Requirements

  • Node.js >= 20
  • pnpm

Setup

# install dependencies
pnpm install

# run electron app in dev mode
pnpm dev

If Electron encounters exceptions during startup, you can try using electron-fix:

npm install electron-fix -g
electron-fix start

Privacy Policy & User Agreement

Before using this software, please read the Privacy Policy & User Agreement.

Community

Please follow these principles before submitting a Pull Request:

  • Obvious bug fixes can be submitted directly.
  • For new features, please submit an Issue for discussion first; PRs submitted without prior discussion will be closed.
  • Keep one PR focused on one task; if changes are extensive, consider splitting them into multiple independent PRs.

Thanks to all contributors:

License

AGPL-3.0 License