{"full_name":"earendil-works/pi","owner":"earendil-works","name":"pi","url":"https://github.com/earendil-works/pi","description":"AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI","homepage":"","topics":[],"language":"TypeScript","license":"MIT","avatar":"https://avatars.githubusercontent.com/u/207902832?v=4","created_at":"2025-08-09T14:03:50Z","pushed_at":"2026-11-10T09:24:18Z","metrics":{"stars":121173,"forks":15613,"watchers":341,"issues":7772,"prs":3725,"releases":276,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":360},"growth":{"day":{"stars":204,"forks":31,"base_day":"2026-11-09"},"week":{"stars":1594,"forks":260,"base_day":"2026-11-03"},"month":{"stars":8491,"forks":1316,"base_day":"2026-10-11"}},"history":{"dates":["2026-09-06","2026-09-07","2026-09-08","2026-09-09","2026-09-10","2026-09-11","2026-09-12","2026-09-13","2026-09-14","2026-09-15","2026-09-16","2026-09-17","2026-09-18","2026-09-19","2026-09-20","2026-09-21","2026-09-22","2026-09-23","2026-09-24","2026-09-25","2026-09-26","2026-09-27","2026-09-28","2026-09-29","2026-09-30","2026-10-01","2026-10-02","2026-10-03","2026-10-04","2026-10-05","2026-10-06","2026-10-07","2026-10-08","2026-10-09","2026-10-10","2026-10-11","2026-10-12","2026-10-13","2026-10-14","2026-10-15","2026-10-16","2026-10-17","2026-10-18","2026-10-19","2026-10-20","2026-10-21","2026-10-22","2026-10-23","2026-10-24","2026-10-25","2026-10-26","2026-10-27","2026-10-28","2026-10-29","2026-10-30","2026-10-31","2026-11-01","2026-11-02","2026-11-03","2026-11-04","2026-11-09","2026-11-10"],"stars":[96551,97184,97721,98264,98496,98725,99048,100461,100959,101417,101802,102098,102727,103120,103451,103805,104129,104382,105072,105592,106253,106583,106989,107287,108089,108506,108881,109151,109334,109540,110059,110358,111075,111721,112085,112682,112927,113167,113495,113779,114081,114575,114875,115154,115421,115712,115940,116397,116677,116936,117177,117420,117587,117999,118262,118519,118782,119006,119579,119818,120969,121173],"forks":[11933,12013,12085,12155,12182,12216,12281,12479,12551,12608,12683,12730,12815,12886,12924,12980,13041,13083,13199,13272,13361,13437,13498,13543,13676,13758,13832,13875,13900,13927,13991,14033,14118,14175,14221,14297,14340,14370,14435,14463,14499,14590,14622,14658,14708,14736,14786,14855,14891,14936,14967,15014,15045,15117,15146,15186,15233,15269,15353,15379,15582,15613],"watchers":[314,316,318,316,316,317,317,321,321,321,323,321,323,322,322,324,324,325,328,330,331,332,333,333,335,335,336,336,337,336,332,332,336,337,338,341,340,344,344,345,346,346,348,348,348,348,352,353,353,351,352,351,346,346,343,342,342,342,341,340,341,341],"issues_open":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"prs_open":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]},"boards":{"daily":171,"weekly":87,"monthly":72,"weekly_rate":200,"monthly_rate":175,"total":100},"same_owner":[],"issues":[{"number":7547,"title":"[Windows] [sink-thread] How do you use Pi on windows? What issues are you seeing?","comments":94,"created_at":"2026-08-03T12:08:25Z"},{"number":4945,"title":"openai-codex Connection Reliability Issues","comments":88,"created_at":"2026-05-24T06:36:18Z"},{"number":7730,"title":"High CPU usage on Mac OS with long session","comments":30,"created_at":"2026-08-06T17:06:53Z"},{"number":10256,"title":"0.99.x: terminal color query replies leak into the prompt and BEL opens the external editor (mintty on Windows, ConPTY)","comments":25,"created_at":"2026-09-30T15:52:21Z"},{"number":5363,"title":"Add amazon-bedrock-mantle provider for OpenAI-compatible models","comments":19,"created_at":"2026-06-03T14:05:42Z"},{"number":9549,"title":"[fullscreen] Large transcripts re-render every frame; every resize re-emits the whole transcript (1 core saturated)","comments":17,"created_at":"2026-09-13T12:00:57Z"},{"number":10300,"title":"ChatGPT OAuth ID token is not persisted, preventing extensions from accessing account identity","comments":16,"created_at":"2026-10-01T14:42:45Z"},{"number":8643,"title":"Bedrock: OpenAI models reject images nested in toolResult.content","comments":16,"created_at":"2026-08-25T18:07:32Z"}],"discussions":[{"number":11930,"title":"Show & tell: Assistant UI adapter for Pi Durable","comments":0,"category":"General","created_at":"2026-11-08T17:46:54Z"},{"number":11922,"title":"Show & tell: omp-web, a self-hosted browser workspace for Pi with a terminal and files","comments":0,"category":"General","created_at":"2026-11-08T05:50:22Z"},{"number":11912,"title":"Show & tell: agentswarm.space task-discovery skill for Pi","comments":1,"category":"General","created_at":"2026-11-07T12:58:40Z"},{"number":11911,"title":"Pi vs OMP for research work (GPT/DeepSeek): scientific reasoning, experimental design, and token efficiency?","comments":0,"category":"General","created_at":"2026-11-07T10:46:13Z"},{"number":11870,"title":"How do you keep skills organized across Pi and other agents?","comments":0,"category":"General","created_at":"2026-11-06T07:48:31Z"},{"number":11860,"title":"Show & tell: CaseClip — save a Pi mistake as a reviewable case card","comments":0,"category":"General","created_at":"2026-11-06T01:29:36Z"},{"number":11844,"title":"pi-mom-slack: a community Slack bot for pi 1.x","comments":0,"category":"General","created_at":"2026-11-05T16:47:36Z"},{"number":11830,"title":"How do you juggle two live conversations? Every extra one costs a terminal tab","comments":0,"category":"General","created_at":"2026-11-05T08:32:43Z"}],"latest_release":{"name":"v1.5.0","tag":"v1.5.0","published_at":"2026-11-02T11:05:31Z","body":"### New Features\n\n- **Extension update changelogs**: see what changed in installed extension packages on the next fresh launch after an update. Package authors can choose the changelog path, and `collapseChangelog` condenses the notices. See [Show a changelog](https://github.com/earendil-works/pi/blob/v1.5.0/packages/coding-agent/docs/packages.md#show-a-changelog).\n- **Faster streaming**: large tool calls are parsed incrementally, and code-heavy answers and tool rows reuse highlighting and rendered Markdown instead of repeating the work on every update. See [Keep rendering responsive](https://github.com/earendil-works/pi/blob/v1.5.0/packages/coding-agent/docs/tui.md#keep-rendering-responsive).\n- **Custom self-update commands**: use `PI_SELF_UPDATE_COMMAND` or `selfUpdateCommand` to update pi through a wrapper or another package manager. See [Custom update command](https://github.com/earendil-works/pi/blob/v1.5.0/packages/coding-agent/docs/cli.md#custom-update-command).\n- **GPT-6.1 Terra**: available through OpenAI, Azure OpenAI Responses, and OpenAI Codex, with tool search, mid-conversation thinking-level changes, and thinking `off`. Codex offers a 500K context window. See [Models](https://github.com/earendil-works/pi/blob/v1.5.0/packages/coding-agent/docs/cli.md#models).\n\n### Breaking Changes\n\n- Tool argument validation runs on `@earendil-works/pi-schema`. TypeBox features outside JSON Schema (`Type.Refine()`, `Type.BigInt()`, `Type.Undefined()`, codecs, `Format.Set()` formats) no longer apply to tool arguments; see [Tool parameter schemas and TypeBox](https://github.com/earendil-works/pi/blob/v1.5.0/packages/coding-agent/docs/extensions.md#tool-parameter-schemas-and-typebox). Plain JSON Schema tools, including MCP tools, now get the same coercion as TypeBox tools, such as converting numeric strings and wrapping a single value into an array. Validation failures the model sees list pi-schema's messages (`- path: missing`, `- limit: expected number, got string`) instead of TypeBox's (`must have required properties path`, `must be number`).\n\n### Added\n\n- Extension packages can now show their changelog after an update. Pi reads `pi.changelogPath` from the package's `package.json`, or `CHANGELOG.md` in the package root, and on the next fresh launch shows entries newer than the last seen version under \"Extension Updates\". The `collapseChangelog` setting condenses this to one line per package ([#5958](https://github.com/earendil-works/pi/issues/5958), [#8790](https://github.com/earendil-works/pi/pull/8790))\n- `pi.exec()` accepts a `maxBuffer` option that limits stdout and stderr combined, and its result has a `truncated` field that is true when output exceeded the limit ([#11360](https://github.com/earendil-works/pi/issues/11360))\n- Device-code login (for example GitHub Copilot) now opens the verification page and copies the code when you press Enter. Providers can turn either action off with `openBrowserOnConfirm: false` or `copyCodeOnConfirm: false` ([#9282](https://github.com/earendil-works/pi/issues/9282), [#9301](https://github.com/earendil-works/pi/pull/9301))\n- `pi update` can update Pi through a wrapper or another package manager. Set `PI_SELF_UPDATE_COMMAND` (for example `mise use -g npm:{packageName}@{version}`) or the global `selfUpdateCommand` setting; `pi update` runs it when pi.dev reports a newer release and fills `{packageName}`, `{version}`, and `{installSpec}` from that release. See [Custom update command](https://github.com/earendil-works/pi/blob/v1.5.0/packages/coding-agent/docs/cli.md#custom-update-command) ([#7756](https://github.com/earendil-works/pi/issues/7756), [#5607](https://github.com/earendil-works/pi/issues/5607))\n- Extensions can format the user's configured keybindings with `keyText()` and `keyHint()` from the tool render context and the message and entry renderer options. Importing these functions from `@earendil-works/pi-coding-agent` can resolve the extension's own copy of the package, which does "},"readme":true,"readme_zh":false,"news":[{"title":"Pi coding agent: config folder is out of place on Linux","url":"https://github.com/earendil-works/pi/issues/534","hn":"https://news.ycombinator.com/item?id=49328206","source":"Hacker News","lang":"en","date":"2026-08-17","points":56,"comments":21},{"title":"Pi v1.0.0","url":"https://github.com/earendil-works/pi/releases/tag/v1.0.0","hn":"https://news.ycombinator.com/item?id=49927682","source":"Hacker News","lang":"en","date":"2026-10-01","points":12,"comments":2},{"title":"Show HN: Nico – a two-agent type personal agent on your Mac","url":"https://nico.app/","hn":"https://news.ycombinator.com/item?id=50377851","source":"Hacker News","lang":"en","date":"2026-11-05","points":7,"comments":2},{"title":"Show HN: Cogram Studio – CAD and BIM workspace for humans and agents","url":"https://studio.cogram.com/","hn":"https://news.ycombinator.com/item?id=49501620","source":"Hacker News","lang":"en","date":"2026-08-30","points":6,"comments":0},{"title":"Show HN: Always responsive UI for a coding agent","url":"https://news.ycombinator.com/item?id=49320073","hn":"https://news.ycombinator.com/item?id=49320073","source":"Hacker News","lang":"en","date":"2026-08-16","points":3,"comments":0},{"title":"Chord, distributed objects and hot reload for pi-durable","url":"https://github.com/earendil-works/pi/blob/main/packages/chord/README.md","hn":"https://news.ycombinator.com/item?id=50241468","source":"Hacker News","lang":"en","date":"2026-10-26","points":1,"comments":0},{"title":"Pi's AgentHarness: From an In-Process Loop to a Durable Runtime","url":"https://github.com/earendil-works/pi/tree/main/packages/agent/docs","hn":"https://news.ycombinator.com/item?id=49255681","source":"Hacker News","lang":"en","date":"2026-08-11","points":1,"comments":0},{"title":"A Raspberry Pi Turns Spinning LEDs Into A 3D Display","url":"https://www.electronicsforu.com/news/a-raspberry-pi-turns-spinning-leds-into-a-3d-display","source":"Electronics For You","lang":"en","date":"2026-11-05"},{"title":"Vortex Spins Two LED Panels on a Raspberry Pi 4 Into a True Volumetric 3D Display","url":"https://circuitdigest.com/news/vortex-spins-two-led-panels-on-a-raspberry-pi-4-into-a-true-volumetric-3d-display","source":"Circuit Digest","lang":"en","date":"2026-11-05"},{"title":"GitHub 代码暗示 Raspberry Pi Zero 和 Pi 4 主板即将推出","url":"https://news.google.com/rss/articles/CBMilwFBVV95cUxNaXpiSl9ndzYzUkE2ejc0VkViZ1phZDFGVkhiMjRqcVRYTW94d2kyZTlzeDdGUlQ1eUd1UGhncnhkeFVWOTFnZUlTNjBqaWluWmxCa0s5YlVROXFuVTB1QnlGUjZhcTNWOXVsU1A1aEsxXzFYX1c0aUk3WEllek5WN0stRlJpby1Vb0ZMZzlvTWxMend2S0dj?oc=5","source":"Mezha.net","lang":"zh","date":"2026-10-29"},{"title":"英伟达震撼开源Harness！AI自己爆改AI","url":"https://news.google.com/rss/articles/CBMihwFBVV95cUxQRHdZODJheGVxNHZCdHRuclhta0lWcVlNVWdScEtzNlVjdmhndkVrSWd1U2N6VUd1cjNBQWEtd1oxSUZybkFIZ0c0dnF1VTB5dU1lQ0VOQ0pabk45SWtsTDNaempabzZWd3VEVUZZYVVMZkZZRzNnMV9xdVRlYzRJZjJ2OHlLZHc?oc=5","source":"新浪财经","lang":"zh","date":"2026-09-28"},{"title":"缓存命中率99.93%！DeepSeek最适合的Harness来了，GitHub狂揽8.6万Star","url":"https://news.google.com/rss/articles/CBMiSEFVX3lxTE5Jb0N6SzJyN2JSbFZIWkFYdFlsNVlOZlp1cWYtOUh6R182MmRhWUdKd1BtWTJMVXRCZnZXMVBXNm9PVXBad2R4Mw?oc=5","source":"智源社区","lang":"zh","date":"2026-08-12"},{"title":"Pi Coding Agent：力量在于他们没有构建的部分","url":"https://news.google.com/rss/articles/CBMifkFVX3lxTFB5V29MMC13dHNYbDVJWHlSbjBQdV9uc1hOXzFia3Fyd21oZzNtMTJpbGk2aURXWWR6cXVheTNtdE9sWFZrS2dMU3RaajJNeUJRcHpRQ2lZVEtrYTZjbElHdTMzcjNUUUs5UW01MVc2SjZEQm42TDhRd095U1dWZw?oc=5","source":"Pasquale Pillitteri","lang":"zh","date":"2026-06-20"},{"title":"GitHub热门项目OpenCLI：将任意网页转化为AI Agent可调用的CLI工具","url":"https://news.google.com/rss/articles/CBMibkFVX3lxTE1IU1JDT1R0U2F4SG1KWm1LQ1NhZERRc0FNSEJ1S1ItVXVMUlYwdGxIR1NQTFRLUmRFV1NFOHZyWUtHVFE3WUNkVUpmbFdxeEp0dW54MzZOQnJEaUtkMEdZZWxOMHJvUGJ5c19QVDJn?oc=5","source":"80aj.com","lang":"zh","date":"2026-05-16"}],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}