{"adoption": {"forks": 12091, "observed_at": "2026-08-28T04:12:23.630049+00:00", "stars": 97788}, "canonical_url": "https://ross.abutalabs.com/products/pi", "card": {"archived": false, "artifact_type": "framework", "description": "AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI", "domain": ["large-language-models", "developer-tools"], "enriched": true, "function": ["agent-framework", "llm-inference", "cli", "terminal-ui", "chatbot"], "health_score": 100, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["earendil-works/pi"], "name": "earendil-works/pi", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-26T22:31:04+00:00", "repo": "earendil-works/pi", "stars": 97788, "tags": ["coding-agent", "multi-provider-llm", "agent-loop", "tool-calling", "tui", "typescript", "ai-agents", "command-line", "nodejs"], "topics": [], "urls": [], "use_cases": ["build a coding agent that edits files and runs commands from the terminal", "call OpenAI, Anthropic, and Google models through one unified API", "create custom AI agents with tool calling and state management", "build terminal UIs for interactive CLI applications", "run an AI assistant in the terminal to work on my codebase"], "what_it_is": "Pi is a TypeScript AI agent toolkit providing a unified multi-provider LLM API, an agent runtime with tool calling, a terminal UI library, and an interactive self-extensible coding agent CLI. It is organized as a monorepo of npm packages including pi-ai, pi-agent-core, pi-tui, and pi-coding-agent.", "when_to_avoid": ["you need built-in permission or sandboxing controls - Pi requires external containerization for isolation", "you prefer a GUI-based coding assistant over a terminal CLI", "you need a non-TypeScript/JavaScript runtime"], "when_to_choose": ["you want a programmatic TypeScript toolkit for building LLM agents rather than a closed product", "you need provider-agnostic LLM access across OpenAI, Anthropic, and Google", "you want an interactive terminal-based coding agent you can extend yourself"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pi", "repo": "earendil-works/pi", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "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:12:23.630049+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.630049+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:12:29.697071+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7464f2f9c534b1c55479d6c675c205e8d7efc49f25db5655fbef07e82d56f82", "fetched_at": "2026-08-28T04:12:23.630049+00:00", "kind": "readme", "missing": false, "url": "https://github.com/earendil-works/pi"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 27, "rhythm": 87}, "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": 389, "days_push": 7, "days_rel": 9, "gap_med": 0, "n_releases_24m": 256}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}