{"adoption": {"forks": 1496, "observed_at": "2026-08-28T04:09:57.833152+00:00", "stars": 7250}, "canonical_url": "https://ross.abutalabs.com/products/chatlab", "card": {"archived": false, "artifact_type": "application", "description": "Local-first chat history analyzer with AI. | 本地优先的 AI 聊天记录分析工具", "domain": ["data-visualization", "analytics", "privacy", "self-hosted", "messaging-platforms", "developer-tools"], "enriched": true, "function": ["data-visualization", "analytics", "nlp", "agent-framework", "mcp", "search-engine", "cli"], "health_score": 100, "homepage": "https://chatlab.fun", "language": "TypeScript", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["ChatLab/ChatLab"], "name": "ChatLab/ChatLab", "platform": ["cross-platform", "cli", "self-hosted"], "pushed_at": "2026-08-26T16:21:56+00:00", "repo": "ChatLab/ChatLab", "stars": 7250, "tags": ["chat-history-analysis", "local-first", "whatsapp", "telegram", "discord", "imessage", "qq", "line", "word-cloud", "sql-engine", "function-calling", "natural-language-processing", "ai-agents", "desktop", "nodejs", "electron", "docker"], "topics": ["chat-history", "data-visualization", "data-analysis", "ai-agent", "chat-analyzer", "harness"], "urls": [], "use_cases": ["analyze my whatsapp chat history with word clouds and heatmaps", "search and summarize years of telegram messages with AI", "visualize who I talk to most and when across chat apps", "import QQ or iMessage exports and explore them with SQL", "run a local MCP server so AI agents can query my chat records", "find relationship trends and topics in million-message chat logs"], "what_it_is": "ChatLab is an open-source, local-first desktop application (with an optional CLI) for analyzing chat histories from platforms like WhatsApp, Telegram, QQ, Discord, LINE, Instagram, iMessage, and Google Chat. It combines a SQL engine, rich visualizations, and an AI agent with function calling (plus MCP support) to let users explore and query their conversations privately on their own machine.", "when_to_avoid": ["you need real-time chat monitoring or live message capture rather than analyzing exports", "you require fully offline AI without any data sent to model providers (AI features send processed content to configured providers)", "you need a team/enterprise multi-user analytics service rather than a personal local tool"], "when_to_choose": ["you want private, local analysis of chat exports without uploading raw conversations", "you need cross-platform normalization of chat formats into one queryable model", "you want AI-assisted search and summarization over large chat histories", "you need visual dashboards like rankings, heatmaps, and timelines for chats"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/chatlab", "repo": "ChatLab/ChatLab", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:57.833152+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:39:43.531039+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "08e1b0df4c3edec4bca99799187844c5321525a35bfe457ebec41a58b8d63264", "fetched_at": "2026-08-28T04:09:57.833152+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ChatLab/ChatLab"}, {"content_hash": "4ddc2978f89845fb72951bcd73085dfe6656f69f5b48003539f6ee6c8cdc9350", "fetched_at": "2026-08-29T08:34:41.415345+00:00", "kind": "homepage", "missing": false, "url": "https://chatlab.fun"}, {"content_hash": "a6769af158dead347ecf92b4fa27b1645fc53cbd723b32f01937a15ed967846b", "fetched_at": "2026-08-29T08:34:41.424631+00:00", "kind": "site_page", "missing": false, "url": "https://docs.chatlab.fun/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 20, "rhythm": 86}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 280, "days_push": 7, "days_rel": 13, "gap_med": 2, "n_releases_24m": 76}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}