pisper 0.5.3 → 0.5.4-darwin-arm64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -78
- package/components/runtime/Pisper_Runtime_Node_0.5.4_darwin_aarch64.tar.gz +0 -0
- package/components/runtime/Pisper_Runtime_Node_0.5.4_darwin_aarch64.tar.gz.sig +1 -0
- package/components/tui/Pisper_TUI_Component_0.5.2_darwin_aarch64.tar.gz +0 -0
- package/components/tui/Pisper_TUI_Component_0.5.2_darwin_aarch64.tar.gz.sig +1 -0
- package/package.json +14 -36
- package/README.en.md +0 -224
- package/bin/pisper.mjs +0 -48
- package/lib/install.mjs +0 -392
- package/lib/npm-platform.mjs +0 -41
- package/lib/npm-update.mjs +0 -165
- package/lib/platform.mjs +0 -43
- package/lib/postinstall.mjs +0 -3
- package/updater.pubkey +0 -1
- package/web/.vite/manifest.json +0 -2326
- package/web/assets/AnimatedContent-BiVNqD3m.js +0 -1
- package/web/assets/AnimatedList-D6P3Wwa6.js +0 -1
- package/web/assets/AppOverlays-CtZlap0P.js +0 -1
- package/web/assets/AppSelect-CY8dVoOm.js +0 -1
- package/web/assets/AssetsPage-Bk1Ean40.js +0 -1
- package/web/assets/ChannelsPage-UjlNRIUi.js +0 -1
- package/web/assets/ChatHistoryPage-DFV0Kr-E.js +0 -1
- package/web/assets/ChatPage-zMVdWA9R.js +0 -8
- package/web/assets/ClickSpark-BxLJ1PyT.js +0 -1
- package/web/assets/ConfigPage-g_BBa1i9.js +0 -1
- package/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/web/assets/MarkdownMessage-BhlDDDLr.js +0 -1
- package/web/assets/MemoryPage-B4cd7wKh.js +0 -1
- package/web/assets/PageHeader-CWalw5jm.js +0 -1
- package/web/assets/PluginsPage-CJnoGfm2.js +0 -1
- package/web/assets/PreviewPages-CogVVS8W.js +0 -1
- package/web/assets/SchedulesPage-D0_dM_I-.js +0 -1
- package/web/assets/ShinyText-K2BPzduJ.js +0 -1
- package/web/assets/SkillsPage-BWuMExeX.js +0 -1
- package/web/assets/StarOrbit-BlI6MhVr.js +0 -1
- package/web/assets/TerminalPanel-BrP-ENHg.css +0 -1
- package/web/assets/TerminalPanel-DtTPQlnX.js +0 -18
- package/web/assets/Threads-CS40baGh.js +0 -1
- package/web/assets/WelcomeEffects-FRYshv3y.js +0 -1
- package/web/assets/WorkflowsPage-BnkPneRQ.js +0 -1
- package/web/assets/alert-B7D8joCd.js +0 -1
- package/web/assets/andromeeda-vGVdxbeo.js +0 -1
- package/web/assets/angular-html-17rlCfBS.js +0 -1
- package/web/assets/angular-ts-it3MaXWH.js +0 -1
- package/web/assets/app-primitives-Ut-b7R7G.js +0 -1
- package/web/assets/astro-BEVDzCov.js +0 -1
- package/web/assets/aurora-x-CDeNXAV0.js +0 -1
- package/web/assets/ayu-dark-DluEY0Gj.js +0 -1
- package/web/assets/ayu-light-C3h-C4tm.js +0 -1
- package/web/assets/ayu-mirage-Bqwy1Gya.js +0 -1
- package/web/assets/badge-BNonIEif.js +0 -1
- package/web/assets/blade-B3yUZIOx.js +0 -1
- package/web/assets/brand-CFOXmGdd.js +0 -1
- package/web/assets/c-aGSZMVdM.js +0 -1
- package/web/assets/catppuccin-frappe-C9Q5zVZY.js +0 -1
- package/web/assets/catppuccin-latte-CtsyrtPq.js +0 -1
- package/web/assets/catppuccin-macchiato-R8nAf1vR.js +0 -1
- package/web/assets/catppuccin-mocha-DjuaAJKi.js +0 -1
- package/web/assets/chevron-down-DybEa6xm.js +0 -1
- package/web/assets/circle-dot-BdcN0YM6.js +0 -1
- package/web/assets/code-block-DDEzY3KA.js +0 -1
- package/web/assets/coffee-ouOQ86EC.js +0 -1
- package/web/assets/copy-O4BLU533.js +0 -1
- package/web/assets/cpp-Bm3vm43L.js +0 -1
- package/web/assets/createLucideIcon-BEEvpXLl.js +0 -1
- package/web/assets/css-CWcS1xXm.js +0 -1
- package/web/assets/csv-Dx-8-gkx.js +0 -1
- package/web/assets/dark-plus-Cs2F2srj.js +0 -1
- package/web/assets/dist-BmM8XOsV.js +0 -1
- package/web/assets/dist-CVSxx6wq.js +0 -1
- package/web/assets/dist-D5GCq83O.js +0 -1
- package/web/assets/dist-XvI9v6Lt.js +0 -1
- package/web/assets/dracula-BHWKrbxM.js +0 -1
- package/web/assets/dracula-soft-5eyTD99u.js +0 -1
- package/web/assets/es2015-C7Y348t9.js +0 -41
- package/web/assets/everforest-dark-sB-x3p7T.js +0 -1
- package/web/assets/everforest-light-Df2xbC6M.js +0 -1
- package/web/assets/eye-BMzzoABY.js +0 -1
- package/web/assets/file-CvhJitS9.js +0 -1
- package/web/assets/file-code-corner-lCJOIDbw.js +0 -1
- package/web/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/web/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/web/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/web/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/web/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/web/assets/github-dark-C-LZuMrd.js +0 -1
- package/web/assets/github-dark-default-DXG-b-1a.js +0 -1
- package/web/assets/github-dark-dimmed-Bx1FflLF.js +0 -1
- package/web/assets/github-dark-high-contrast-B_tTalzw.js +0 -1
- package/web/assets/github-light-EUqPIrTm.js +0 -1
- package/web/assets/github-light-default-BXViO-2h.js +0 -1
- package/web/assets/github-light-high-contrast-B68TUdTA.js +0 -1
- package/web/assets/glsl-TOBAB6bO.js +0 -1
- package/web/assets/graphql-BEmIBNve.js +0 -1
- package/web/assets/gruvbox-dark-hard-C820rvS2.js +0 -1
- package/web/assets/gruvbox-dark-medium-BPjhmG05.js +0 -1
- package/web/assets/gruvbox-dark-soft-MrdJrrXF.js +0 -1
- package/web/assets/gruvbox-light-hard-BC_s9l72.js +0 -1
- package/web/assets/gruvbox-light-medium-BAWPOn9u.js +0 -1
- package/web/assets/gruvbox-light-soft-BSMLrYjP.js +0 -1
- package/web/assets/haml-CDWtFtU9.js +0 -1
- package/web/assets/handlebars-BNtjo3pL.js +0 -1
- package/web/assets/horizon-CE9ld1lL.js +0 -1
- package/web/assets/horizon-bright-DSNQnXHK.js +0 -1
- package/web/assets/houston-CsvMBhTu.js +0 -1
- package/web/assets/html-BVyvp26C.js +0 -1
- package/web/assets/html-derivative-BseLpURQ.js +0 -1
- package/web/assets/http-CkCfSMV9.js +0 -1
- package/web/assets/hurl-syYMt6Rn.js +0 -1
- package/web/assets/image-M6XRBbhu.js +0 -1
- package/web/assets/imba-DsUTQ-LC.js +0 -1
- package/web/assets/index-CJHB7VuH.js +0 -6
- package/web/assets/index-DpxwLREi.css +0 -2
- package/web/assets/java-duG_UTKe.js +0 -1
- package/web/assets/javascript-DWVbOe4X.js +0 -1
- package/web/assets/jinja-Boj4niAz.js +0 -1
- package/web/assets/jison-CHwnC1Pv.js +0 -1
- package/web/assets/json-qhed-kSA.js +0 -1
- package/web/assets/json5-BR5RXkoi.js +0 -1
- package/web/assets/jsonc-CYpm1nAK.js +0 -1
- package/web/assets/jsonl-CmCQp5Yx.js +0 -1
- package/web/assets/jsx-fcCEM_-L.js +0 -1
- package/web/assets/julia-VoF7UKfw.js +0 -1
- package/web/assets/kanagawa-dragon-Bozd7klA.js +0 -1
- package/web/assets/kanagawa-lotus-BmuOG9ZW.js +0 -1
- package/web/assets/kanagawa-wave-BML5mF2J.js +0 -1
- package/web/assets/laserwave-C_8bwKvT.js +0 -1
- package/web/assets/less-DVTAwKKz.js +0 -1
- package/web/assets/light-plus-DVQuIRkW.js +0 -1
- package/web/assets/link-2-Dd2E7M_B.js +0 -1
- package/web/assets/markdown-BYOwaDjH.js +0 -1
- package/web/assets/marko-Cupn1xhw.js +0 -1
- package/web/assets/material-theme-Bm3Qr25_.js +0 -1
- package/web/assets/material-theme-darker-2IIEA8gg.js +0 -1
- package/web/assets/material-theme-lighter-uhdI0v04.js +0 -1
- package/web/assets/material-theme-ocean-CHQ94UKr.js +0 -1
- package/web/assets/material-theme-palenight-B5W6OYN7.js +0 -1
- package/web/assets/mdc-4FfK5iWR.js +0 -1
- package/web/assets/mdx-DQZ5AkYe.js +0 -1
- package/web/assets/message-circle-Bi-lz-6t.js +0 -1
- package/web/assets/min-dark-BSWPekZh.js +0 -1
- package/web/assets/min-light-DDpmG2fV.js +0 -1
- package/web/assets/monokai-B_bV9PQ9.js +0 -1
- package/web/assets/network-UhG-ym-z.js +0 -1
- package/web/assets/night-owl-DhmEMT88.js +0 -1
- package/web/assets/night-owl-light-eJ-hLW7d.js +0 -1
- package/web/assets/nord-Cb4Vim4T.js +0 -1
- package/web/assets/one-dark-pro-CLwyXe_n.js +0 -1
- package/web/assets/one-light-D7Lr4KcI.js +0 -1
- package/web/assets/panel-top-BnVDkV60.js +0 -1
- package/web/assets/paperclip-D7mny7G8.js +0 -1
- package/web/assets/pencil-DpO4AUNy.js +0 -1
- package/web/assets/php-CUREQQ7f.js +0 -1
- package/web/assets/pick-system-directory-D9Nz1xAa.js +0 -1
- package/web/assets/plastic-DQwYfKfQ.js +0 -1
- package/web/assets/play-3QiwbcM7.js +0 -1
- package/web/assets/plus-CI2ql0x4.js +0 -1
- package/web/assets/poimandres-DRFjx7u4.js +0 -1
- package/web/assets/postcss-BXeXVLqQ.js +0 -1
- package/web/assets/progress-CWv9pjbF.js +0 -6
- package/web/assets/pug-CQyGKZpv.js +0 -1
- package/web/assets/python-gzcpVVnB.js +0 -1
- package/web/assets/r-C5FwQflr.js +0 -1
- package/web/assets/react-bits-BFnYwuxx.css +0 -1
- package/web/assets/red-DX1BQOs8.js +0 -1
- package/web/assets/regexp--aR2_iz7.js +0 -1
- package/web/assets/rolldown-runtime-B0Z9INg1.js +0 -1
- package/web/assets/rose-pine-aMsaMD1D.js +0 -1
- package/web/assets/rose-pine-dawn-8PwUyIlP.js +0 -1
- package/web/assets/rose-pine-moon-DO-qXg-I.js +0 -1
- package/web/assets/sass-DXrisJhu.js +0 -1
- package/web/assets/save-D--1z1bw.js +0 -1
- package/web/assets/scss-Davl4E3T.js +0 -1
- package/web/assets/search-CVBbTPAG.js +0 -1
- package/web/assets/shellscript-CLZ0U2zV.js +0 -1
- package/web/assets/shield-check-mwXhKsZm.js +0 -1
- package/web/assets/slack-dark-DnToyrRv.js +0 -1
- package/web/assets/slack-ochin-B2OO5cIa.js +0 -1
- package/web/assets/smithy-Dgaz7aur.js +0 -1
- package/web/assets/snazzy-light-4G7pJPwS.js +0 -1
- package/web/assets/solarized-dark-UdsmMDCL.js +0 -1
- package/web/assets/solarized-light-C1IUL_tW.js +0 -1
- package/web/assets/sql-b92rrcVl.js +0 -1
- package/web/assets/square-C7qN58NE.js +0 -1
- package/web/assets/square-terminal-C9TjK-fA.js +0 -1
- package/web/assets/storage-BbqIMx9Y.js +0 -1
- package/web/assets/stylus-B6D30XZt.js +0 -1
- package/web/assets/svelte-BfstjgUc.js +0 -1
- package/web/assets/switch-CK25u8n0.js +0 -1
- package/web/assets/synthwave-84-nFMaYfgc.js +0 -1
- package/web/assets/tabs-BbTEXOJ3.js +0 -1
- package/web/assets/terminal-ClxNGVIF.js +0 -1
- package/web/assets/terminal-J_QEgSpL.js +0 -2
- package/web/assets/tokyo-night-oM2G3aXe.js +0 -1
- package/web/assets/trash-2-CATziWCd.js +0 -1
- package/web/assets/ts-tags-Cckpt1jI.js +0 -1
- package/web/assets/tsx-JMDX3aQ7.js +0 -1
- package/web/assets/typescript-BAz-bF8J.js +0 -1
- package/web/assets/use-i18n-BnCVa7_8.js +0 -1
- package/web/assets/usePagePrimaryAction-Bw0OFTDZ.js +0 -1
- package/web/assets/utils-C8uzG5AZ.js +0 -1
- package/web/assets/vendor-dockview-D5adAaCg.css +0 -1
- package/web/assets/vendor-dockview-yY5mBM3U.js +0 -1
- package/web/assets/vendor-markdown-lQaMEIxc.js +0 -130
- package/web/assets/vendor-markdown-plugins-ERG5SnGL.js +0 -263
- package/web/assets/vendor-motion-XxgxfZSY.js +0 -9
- package/web/assets/vendor-react-CHuvPdJE.js +0 -9
- package/web/assets/vendor-router-Bw2aAdMs.js +0 -4
- package/web/assets/vendor-shiki-runtime-DFSfH2tH.js +0 -153
- package/web/assets/vendor-state-DE1O_s6m.js +0 -1
- package/web/assets/vendor-ui-DvrYggeS.js +0 -1
- package/web/assets/vendor-xyflow-CnjXtcyK.js +0 -7
- package/web/assets/vendor-xyflow-DLioOiRN.css +0 -1
- package/web/assets/vesper-DdrHHSXu.js +0 -1
- package/web/assets/vitesse-black-fwtXNY1n.js +0 -1
- package/web/assets/vitesse-dark-BZCL-v6S.js +0 -1
- package/web/assets/vitesse-light-VbXTXTou.js +0 -1
- package/web/assets/vue-3H7P6ncC.js +0 -1
- package/web/assets/vue-html-DZGW9MGR.js +0 -1
- package/web/assets/vue-vine-BECt67gq.js +0 -1
- package/web/assets/wasm-BnjxR4X6.js +0 -1
- package/web/assets/wasm-ByWQv1Qj.js +0 -1
- package/web/assets/wgsl-BsKzXJz4.js +0 -1
- package/web/assets/wit-DdvCle-K.js +0 -1
- package/web/assets/wrench-BaMct6KV.js +0 -1
- package/web/assets/xml-CNfvW5JP.js +0 -1
- package/web/assets/yaml-rwi0_p6S.js +0 -1
- package/web/assets/zap-Ch1TQ5QU.js +0 -1
- package/web/favicon.svg +0 -25
- package/web/icons.svg +0 -24
- package/web/index.html +0 -57
- package/web/memory-galaxy-background.webp +0 -0
- package/web/notification-sw.js +0 -13
- package/web/release-notes.json +0 -5
- package/web/tauri-pet.css +0 -117
- package/web/tauri-pet.html +0 -16
- package/web/tauri-pet.js +0 -117
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<p align="right"><
|
|
1
|
+
<p align="right"><a href="./README.md">简体中文</a> · <strong>English</strong></p>
|
|
2
2
|
|
|
3
3
|
<a id="top"></a>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<img src="docs/brand/pisper-logo.svg" width="112" alt="Pisper
|
|
6
|
+
<img src="docs/brand/pisper-logo.svg" width="112" alt="Pisper project logo" />
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<h1 align="center">Pisper</h1>
|
|
10
10
|
|
|
11
|
-
<p align="center"><strong>
|
|
11
|
+
<p align="center"><strong>A local-first Agent application powered by Pi</strong></p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
14
|
<img src="https://img.shields.io/badge/Node.js-17141F?style=flat-square&logo=nodedotjs&logoColor=F59E0B" alt="Node.js" />
|
|
@@ -20,18 +20,18 @@
|
|
|
20
20
|
|
|
21
21
|
<p align="center">
|
|
22
22
|
<a href="https://github.com/ling-kong-ran/pisper/releases/latest">
|
|
23
|
-
<img src="https://img.shields.io/badge
|
|
23
|
+
<img src="https://img.shields.io/badge/Download%20Desktop-Windows%20%7C%20macOS%20%7C%20Linux-F59E0B?style=for-the-badge&logo=github&logoColor=17141F" alt="Download Pisper desktop" />
|
|
24
24
|
</a>
|
|
25
25
|
</p>
|
|
26
26
|
|
|
27
27
|
<a id="sponsors"></a>
|
|
28
28
|
|
|
29
|
-
## ❤️
|
|
29
|
+
## ❤️ Sponsors
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Thanks to the following partners for supporting the Pisper community. If you'd like to appear here too, feel free to reach out via [Issues](https://github.com/ling-kong-ran/pisper/issues).
|
|
32
32
|
|
|
33
33
|
<details open>
|
|
34
|
-
<summary
|
|
34
|
+
<summary>View sponsors</summary>
|
|
35
35
|
|
|
36
36
|
<table>
|
|
37
37
|
<tr>
|
|
@@ -39,143 +39,143 @@
|
|
|
39
39
|
<a href="https://matrix.000328.xyz/sign-up?aff=ZPeH"><strong>Matrix</strong></a>
|
|
40
40
|
</td>
|
|
41
41
|
<td>
|
|
42
|
-
|
|
42
|
+
Thanks to <a href="https://matrix.000328.xyz/sign-up?aff=ZPeH">Matrix</a> for supporting the Pisper community. Registering through <a href="https://matrix.000328.xyz/sign-up?aff=ZPeH">this link</a> may generate referral revenue for the project.
|
|
43
43
|
</td>
|
|
44
44
|
</tr>
|
|
45
45
|
</table>
|
|
46
46
|
|
|
47
|
-
>
|
|
47
|
+
> Sponsor links contain a referral parameter. Sponsor content is not targeted using conversations, workspaces, providers, models, or API configuration, and Pisper does not send that data to sponsors. The public configuration for the in-app sponsor placement is maintained in [`docs/sponsors.json`](./docs/sponsors.json).
|
|
48
48
|
|
|
49
49
|
</details>
|
|
50
50
|
|
|
51
51
|
<p align="center">
|
|
52
|
-
<a href="#overview"
|
|
53
|
-
<a href="https://ling-kong-ran.github.io/pisper/"
|
|
54
|
-
<a href="#features"
|
|
55
|
-
<a href="#data-safety"
|
|
56
|
-
<a href="#desktop-pet"
|
|
57
|
-
<a href="#install"
|
|
58
|
-
<a href="#tui"
|
|
59
|
-
<a href="#development"
|
|
60
|
-
<a href="#sponsors"
|
|
61
|
-
<a href="#license"
|
|
52
|
+
<a href="#overview">Overview</a> ·
|
|
53
|
+
<a href="https://ling-kong-ran.github.io/pisper/">Project Site</a> ·
|
|
54
|
+
<a href="#features">Features</a> ·
|
|
55
|
+
<a href="#data-safety">Data Safety</a> ·
|
|
56
|
+
<a href="#desktop-pet">Desktop Pet</a> ·
|
|
57
|
+
<a href="#install">Install</a> ·
|
|
58
|
+
<a href="#tui">Terminal Client</a> ·
|
|
59
|
+
<a href="#development">Development</a> ·
|
|
60
|
+
<a href="#sponsors">Sponsors</a> ·
|
|
61
|
+
<a href="#license">License</a>
|
|
62
62
|
</p>
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
66
66
|
<a id="overview"></a>
|
|
67
67
|
|
|
68
|
-
##
|
|
68
|
+
## Overview
|
|
69
69
|
|
|
70
|
-
Pisper
|
|
70
|
+
Pisper is a desktop and terminal client built on [Pi Coding Agent](https://github.com/earendil-works/pi/tree/main/packages/coding-agent), with multiple sessions, Tools, Skills, MCP, automation, and per-session permissions.
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
See the [Pisper project site](https://ling-kong-ran.github.io/pisper/) for the product overview and interface preview.
|
|
73
73
|
|
|
74
|
-
###
|
|
74
|
+
### Get Started in Three Steps
|
|
75
75
|
|
|
76
|
-
1. [
|
|
77
|
-
2.
|
|
78
|
-
3.
|
|
76
|
+
1. [Download the desktop app](https://github.com/ling-kong-ran/pisper/releases/latest) (Windows / macOS / Linux, no Node.js required)
|
|
77
|
+
2. Configure any model provider with an API key
|
|
78
|
+
3. Create a session and start working in parallel
|
|
79
79
|
|
|
80
80
|
<a id="features"></a>
|
|
81
81
|
|
|
82
|
-
##
|
|
82
|
+
## Features
|
|
83
83
|
|
|
84
|
-
-
|
|
85
|
-
- **Tools
|
|
86
|
-
- **
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
84
|
+
- **Multiple sessions:** independent models, context, workspaces, and permissions with Dock splits and layout restoration.
|
|
85
|
+
- **Tools, Skills, and MCP:** manage capabilities and call permissions in one place.
|
|
86
|
+
- **Subagents:** run temporary tasks in isolated contexts and return results to the parent session.
|
|
87
|
+
- **Memory and multimodal input:** retrieve project memory and process images, documents, and code.
|
|
88
|
+
- **Automation and channels:** schedules, visual workflows, Feishu, and personal Weixin.
|
|
89
|
+
- **Desktop and terminal:** Tauri desktop app and Ratatui TUI.
|
|
90
|
+
- **Permission controls:** `Read only / Full access` execution modes, one-shot approval, and credential isolation.
|
|
91
91
|
|
|
92
92
|
<a id="data-safety"></a>
|
|
93
93
|
|
|
94
|
-
##
|
|
94
|
+
## Data Safety & Privacy
|
|
95
95
|
|
|
96
|
-
Pisper
|
|
96
|
+
Pisper is local-first and does not provide a cloud service that hosts or relays conversations. Sessions and settings are stored under `~/.pisper/agent` by default; set `PISPER_AGENT_DIR` to move them.
|
|
97
97
|
|
|
98
|
-
- Runtime
|
|
99
|
-
-
|
|
100
|
-
-
|
|
98
|
+
- The Runtime listens on `127.0.0.1` by default, and Pi telemetry is disabled by default.
|
|
99
|
+
- Model calls and enabled remote services such as MCP, Web search, and messaging receive the data required for each request.
|
|
100
|
+
- Common credential formats are redacted at storage and display boundaries, but this is not a replacement for DLP or end-to-end encryption. Protect the local Agent data directory and its backups.
|
|
101
101
|
|
|
102
102
|
<a id="desktop-pet"></a>
|
|
103
103
|
|
|
104
|
-
##
|
|
104
|
+
## Desktop Pet
|
|
105
105
|
|
|
106
|
-
Pisper
|
|
106
|
+
Pisper supports [Petdex](https://petdex.dev)-compatible pets. Install and manage them under **Settings → Desktop pet**. See [`docs/petdex-integration.md`](./docs/petdex-integration.md).
|
|
107
107
|
|
|
108
108
|
<a id="install"></a>
|
|
109
109
|
|
|
110
|
-
##
|
|
110
|
+
## Install
|
|
111
111
|
|
|
112
|
-
###
|
|
112
|
+
### Desktop (Recommended)
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
Download a Windows, macOS, or Linux installer from [GitHub Releases](https://github.com/ling-kong-ran/pisper/releases/latest). It works out of the box — no separate Node.js install is required.
|
|
115
115
|
|
|
116
|
-
#### macOS
|
|
116
|
+
#### If macOS Refuses to Open Pisper
|
|
117
117
|
|
|
118
|
-
Pisper
|
|
118
|
+
Pisper is not currently notarized by Apple. Confirm that it came from the official Releases page, then select **Open Anyway** in **System Settings → Privacy & Security**. If that option is unavailable, run:
|
|
119
119
|
|
|
120
120
|
```bash
|
|
121
121
|
sudo xattr -rd com.apple.quarantine /Applications/Pisper.app
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
Use this command only for Pisper downloaded from the official Releases page and placed in `/Applications`.
|
|
125
125
|
|
|
126
|
-
#### Linux AppImage
|
|
126
|
+
#### If the Linux AppImage Does Not Start
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
129
|
chmod +x Pisper_*_linux_x86_64.AppImage
|
|
130
130
|
./Pisper_*_linux_x86_64.AppImage
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
If FUSE is missing, install `libfuse2` or `libfuse2t64`, or use the `.deb` package:
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
136
|
sudo apt install ./Pisper-*-linux-amd64.deb
|
|
137
137
|
```
|
|
138
138
|
|
|
139
|
-
###
|
|
139
|
+
### Component Updates
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
**Settings → Updates** in the desktop app is the unified update entry point. A single **Check for updates** action checks the Desktop package, TUI client, and Runtime together. Install controls appear only for components with a newer version, so a small component update does not require downloading the full desktop installer. Each component uses an independent signed Release channel. Runtime updates take effect after restarting the app, and Pisper falls back to the versions bundled with the desktop package if an installed component is unavailable or fails to start.
|
|
142
142
|
|
|
143
143
|
<a id="tui"></a>
|
|
144
144
|
|
|
145
|
-
###
|
|
145
|
+
### Terminal Client (TUI)
|
|
146
146
|
|
|
147
|
-
|
|
147
|
+
With Node.js 20+, you can install the Pisper CLI through npm. npm obtains the lightweight launcher, platform-independent Web frontend, and signed TUI and Runtime packages for the current platform from the configured registry, without downloading from GitHub Releases. Installation verifies and extracts the local component packages so Pisper is ready when the command returns; it does not install the desktop shell:
|
|
148
148
|
|
|
149
149
|
```bash
|
|
150
150
|
npm install -g pisper --progress=true --foreground-scripts
|
|
151
151
|
pisper
|
|
152
|
-
pisper update --check #
|
|
153
|
-
pisper update #
|
|
152
|
+
pisper update --check # check the complete distribution through the npm registry
|
|
153
|
+
pisper update # update the launcher, Web, TUI, and Runtime through npm
|
|
154
154
|
```
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
Platform packages use the same registry when an npm mirror is configured. `--progress=true` shows npm download progress, while `--foreground-scripts` shows local signature verification and extraction; add `--loglevel=info` only when request and cache details are needed:
|
|
157
157
|
|
|
158
158
|
```bash
|
|
159
159
|
npm install -g pisper --registry=https://registry.npmmirror.com --progress=true --foreground-scripts
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
After entering the TUI for the first time, use `/provider` to choose a Provider and edit its protocol, effective Base URL, and masked API key. The official default Base URL is shown when no override exists, and leaving API Key blank preserves the saved secret. `/model` lists only models from configured Providers. For a known Provider, `/provider <id>` skips the picker (`/apikey` remains a compatible alias). For visual configuration, run `pisper web`; Pisper uses the Web frontend bundled in the npm package and opens an authenticated, localhost-only settings page in your default browser. **Save Provider settings** does not change the default model; only **Set as default Provider** changes the default for later sessions.
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
After installing the desktop app, you can also install the `pisper` command from **Settings → App updates**. The first installation remains explicit; after later desktop updates restart Pisper, it automatically refreshes this managed terminal client:
|
|
165
165
|
|
|
166
166
|
```bash
|
|
167
|
-
pisper #
|
|
168
|
-
pisper resume #
|
|
169
|
-
pisper doctor #
|
|
170
|
-
pisper web #
|
|
171
|
-
pisper --help #
|
|
167
|
+
pisper # start a new conversation
|
|
168
|
+
pisper resume # resume from a list across all workspaces
|
|
169
|
+
pisper doctor # diagnose the runtime
|
|
170
|
+
pisper web # open Web settings
|
|
171
|
+
pisper --help # show complete onboarding and command help
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
-
npm
|
|
174
|
+
The npm distribution has one complete `pisper update` command. It uses the configured npm registry to update the launcher, Web, TUI, and Runtime; `pisper update --check` only queries and does not install, and component names are not accepted. The standalone TUI exposes no component-update command; the desktop distribution is managed through **Settings → App updates**. See the **[Pisper TUI user guide](./src-tui/README.en.md)** for installation, commands, keyboard controls, attachments, execution modes, and approvals.
|
|
175
175
|
|
|
176
|
-
###
|
|
176
|
+
### Run from Source
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
Requires Node.js 20+, npm, and at least one model provider with an API key.
|
|
179
179
|
|
|
180
180
|
```bash
|
|
181
181
|
git clone https://github.com/ling-kong-ran/pisper.git
|
|
@@ -184,20 +184,20 @@ npm install
|
|
|
184
184
|
npm run dev
|
|
185
185
|
```
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
Desktop development and packaging:
|
|
188
188
|
|
|
189
189
|
```bash
|
|
190
190
|
npm run desktop:webview:dev
|
|
191
191
|
npm run desktop:webview:build
|
|
192
192
|
```
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
Data is stored under `~/.pisper/agent` by default. Set `PISPER_AGENT_DIR` to use another location.
|
|
195
195
|
|
|
196
196
|
<a id="development"></a>
|
|
197
197
|
|
|
198
|
-
##
|
|
198
|
+
## Development
|
|
199
199
|
|
|
200
|
-
|
|
200
|
+
Main stack: React, TypeScript, Tauri, Rust, Node SEA, and Pi Coding Agent.
|
|
201
201
|
|
|
202
202
|
```bash
|
|
203
203
|
npm run check
|
|
@@ -205,20 +205,20 @@ npm test
|
|
|
205
205
|
npm run build
|
|
206
206
|
```
|
|
207
207
|
|
|
208
|
-
|
|
208
|
+
[Issues](https://github.com/ling-kong-ran/pisper/issues) and [pull requests](https://github.com/ling-kong-ran/pisper/pulls) are welcome. Do not commit API keys, bot credentials, or personal data from `~/.pisper/agent`.
|
|
209
209
|
|
|
210
210
|
<a id="license"></a>
|
|
211
211
|
|
|
212
|
-
##
|
|
212
|
+
## License
|
|
213
213
|
|
|
214
|
-
Pisper
|
|
214
|
+
Pisper is released under the [MIT License](./LICENSE). Third-party dependencies and community resources retain their own licenses.
|
|
215
215
|
|
|
216
|
-
##
|
|
216
|
+
## Acknowledgments
|
|
217
217
|
|
|
218
|
-
|
|
218
|
+
Thanks to [Pi Coding Agent](https://github.com/earendil-works/pi/tree/main/packages/coding-agent), [Petdex](https://petdex.dev), and the open-source software used by this project.
|
|
219
219
|
|
|
220
|
-
|
|
220
|
+
Contributors:
|
|
221
221
|
|
|
222
|
-
- [@mik-myp](https://github.com/mik-myp) —
|
|
222
|
+
- [@mik-myp](https://github.com/mik-myp) — Frontend TypeScript architecture, shadcn/ui / AI Elements, Zustand, and i18n refactor ([#1](https://github.com/ling-kong-ran/pisper/pull/1))
|
|
223
223
|
|
|
224
|
-
<p align="right"><a href="#top"
|
|
224
|
+
<p align="right"><a href="#top">Back to top ↑</a></p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVTa3p5NWdvVExsOEpwaytEOUE3bUpFSHB3VHR5bmRiSVRQam5MWEpSblFGdUVMYkhEYnlTZ2VqQ1ltV2lhaHNVRFMxcjZ2dlVPem1hcGN4c1ZZWlAyWWVSR3FwWFFFMHc0PQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg2NjQxMTEzCWZpbGU6UGlzcGVyX1J1bnRpbWVfTm9kZV8wLjUuNF9kYXJ3aW5fYWFyY2g2NC50YXIuZ3oKNUkreXBTRGc5RFlFbVZFUGF0ajBYcVZCcnJYS042RTVVM1RWeTNWR2hWc3dZNVhjZm5mKzJ2U29RRm5PWGdoKzVlM2cweitiYzFwTGErZ0lWZlRBREE9PQo=
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVTa3p5NWdvVExsOEdzN1ZqNHg3YjA0K0tZc0pqbGplbjBkQ2drdjZac29JUkMxVVBwRDNMYmJXSlJkYi9Gdkt0WmJjd09TVnRhWm5yRml4b0xRUkFkc2V2SmRMMCtUdVFBPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNzg2NjIxODMzCWZpbGU6UGlzcGVyX1RVSV9Db21wb25lbnRfMC41LjJfZGFyd2luX2FhcmNoNjQudGFyLmd6CkdlSGRQQm1vclZGR0dvaDJzalF3MjFSNUFybTN3ZFlSSDB0SFppYXpOVFdqcTlFcTZ3WTl3R3lwTkJPd3ZPR0NQeWlaS2VBd3VEWWc2cjVrMnAraUJBPT0K
|
package/package.json
CHANGED
|
@@ -1,57 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pisper",
|
|
3
|
-
"version": "0.5.
|
|
4
|
-
"description": "Pisper
|
|
3
|
+
"version": "0.5.4-darwin-arm64.0",
|
|
4
|
+
"description": "Pisper signed TUI and Node Runtime bundle for darwin-arm64.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "ling-kong-ran",
|
|
8
8
|
"email": "65328093+ling-kong-ran@users.noreply.github.com",
|
|
9
9
|
"url": "https://github.com/ling-kong-ran"
|
|
10
10
|
},
|
|
11
|
-
"type": "module",
|
|
12
|
-
"homepage": "https://github.com/ling-kong-ran/pisper#readme",
|
|
13
11
|
"repository": {
|
|
14
12
|
"type": "git",
|
|
15
13
|
"url": "git+https://github.com/ling-kong-ran/pisper.git"
|
|
16
14
|
},
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
"bin": {
|
|
24
|
-
"pisper": "bin/pisper.mjs"
|
|
25
|
-
},
|
|
26
|
-
"scripts": {
|
|
27
|
-
"postinstall": "node lib/postinstall.mjs"
|
|
28
|
-
},
|
|
15
|
+
"os": [
|
|
16
|
+
"darwin"
|
|
17
|
+
],
|
|
18
|
+
"cpu": [
|
|
19
|
+
"arm64"
|
|
20
|
+
],
|
|
29
21
|
"files": [
|
|
30
|
-
"
|
|
31
|
-
"lib/",
|
|
32
|
-
"web/",
|
|
33
|
-
"updater.pubkey",
|
|
22
|
+
"components/",
|
|
34
23
|
"README.md",
|
|
35
|
-
"README.en.md",
|
|
36
24
|
"LICENSE"
|
|
37
25
|
],
|
|
38
|
-
"dependencies": {
|
|
39
|
-
"@threema/wasm-minisign-verify": "0.1.3",
|
|
40
|
-
"tar": "7.5.22"
|
|
41
|
-
},
|
|
42
|
-
"pisper": {
|
|
43
|
-
"repository": "ling-kong-ran/pisper",
|
|
44
|
-
"tuiVersion": "0.5.2",
|
|
45
|
-
"runtimeVersion": "0.5.3"
|
|
46
|
-
},
|
|
47
|
-
"optionalDependencies": {
|
|
48
|
-
"pisper-binary-win32-x64": "npm:pisper@0.5.3-win32-x64.0",
|
|
49
|
-
"pisper-binary-darwin-x64": "npm:pisper@0.5.3-darwin-x64.0",
|
|
50
|
-
"pisper-binary-darwin-arm64": "npm:pisper@0.5.3-darwin-arm64.0",
|
|
51
|
-
"pisper-binary-linux-x64": "npm:pisper@0.5.3-linux-x64.0"
|
|
52
|
-
},
|
|
53
26
|
"publishConfig": {
|
|
54
27
|
"access": "public",
|
|
55
28
|
"provenance": true
|
|
29
|
+
},
|
|
30
|
+
"pisperBundle": {
|
|
31
|
+
"target": "darwin_aarch64",
|
|
32
|
+
"tuiVersion": "0.5.2",
|
|
33
|
+
"runtimeVersion": "0.5.4"
|
|
56
34
|
}
|
|
57
35
|
}
|
package/README.en.md
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
<p align="right"><a href="./README.md">简体中文</a> · <strong>English</strong></p>
|
|
2
|
-
|
|
3
|
-
<a id="top"></a>
|
|
4
|
-
|
|
5
|
-
<p align="center">
|
|
6
|
-
<img src="docs/brand/pisper-logo.svg" width="112" alt="Pisper project logo" />
|
|
7
|
-
</p>
|
|
8
|
-
|
|
9
|
-
<h1 align="center">Pisper</h1>
|
|
10
|
-
|
|
11
|
-
<p align="center"><strong>A local-first Agent application powered by Pi</strong></p>
|
|
12
|
-
|
|
13
|
-
<p align="center">
|
|
14
|
-
<img src="https://img.shields.io/badge/Node.js-17141F?style=flat-square&logo=nodedotjs&logoColor=F59E0B" alt="Node.js" />
|
|
15
|
-
<img src="https://img.shields.io/badge/TypeScript-17141F?style=flat-square&logo=typescript&logoColor=F59E0B" alt="TypeScript" />
|
|
16
|
-
<img src="https://img.shields.io/badge/React-17141F?style=flat-square&logo=react&logoColor=F59E0B" alt="React" />
|
|
17
|
-
<img src="https://img.shields.io/badge/Tauri-17141F?style=flat-square&logo=tauri&logoColor=F59E0B" alt="Tauri" />
|
|
18
|
-
<a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-F59E0B?style=flat-square" alt="MIT License" /></a>
|
|
19
|
-
</p>
|
|
20
|
-
|
|
21
|
-
<p align="center">
|
|
22
|
-
<a href="https://github.com/ling-kong-ran/pisper/releases/latest">
|
|
23
|
-
<img src="https://img.shields.io/badge/Download%20Desktop-Windows%20%7C%20macOS%20%7C%20Linux-F59E0B?style=for-the-badge&logo=github&logoColor=17141F" alt="Download Pisper desktop" />
|
|
24
|
-
</a>
|
|
25
|
-
</p>
|
|
26
|
-
|
|
27
|
-
<a id="sponsors"></a>
|
|
28
|
-
|
|
29
|
-
## ❤️ Sponsors
|
|
30
|
-
|
|
31
|
-
Thanks to the following partners for supporting the Pisper community. If you'd like to appear here too, feel free to reach out via [Issues](https://github.com/ling-kong-ran/pisper/issues).
|
|
32
|
-
|
|
33
|
-
<details open>
|
|
34
|
-
<summary>View sponsors</summary>
|
|
35
|
-
|
|
36
|
-
<table>
|
|
37
|
-
<tr>
|
|
38
|
-
<td width="180" align="center">
|
|
39
|
-
<a href="https://matrix.000328.xyz/sign-up?aff=ZPeH"><strong>Matrix</strong></a>
|
|
40
|
-
</td>
|
|
41
|
-
<td>
|
|
42
|
-
Thanks to <a href="https://matrix.000328.xyz/sign-up?aff=ZPeH">Matrix</a> for supporting the Pisper community. Registering through <a href="https://matrix.000328.xyz/sign-up?aff=ZPeH">this link</a> may generate referral revenue for the project.
|
|
43
|
-
</td>
|
|
44
|
-
</tr>
|
|
45
|
-
</table>
|
|
46
|
-
|
|
47
|
-
> Sponsor links contain a referral parameter. Sponsor content is not targeted using conversations, workspaces, providers, models, or API configuration, and Pisper does not send that data to sponsors. The public configuration for the in-app sponsor placement is maintained in [`docs/sponsors.json`](./docs/sponsors.json).
|
|
48
|
-
|
|
49
|
-
</details>
|
|
50
|
-
|
|
51
|
-
<p align="center">
|
|
52
|
-
<a href="#overview">Overview</a> ·
|
|
53
|
-
<a href="https://ling-kong-ran.github.io/pisper/">Project Site</a> ·
|
|
54
|
-
<a href="#features">Features</a> ·
|
|
55
|
-
<a href="#data-safety">Data Safety</a> ·
|
|
56
|
-
<a href="#desktop-pet">Desktop Pet</a> ·
|
|
57
|
-
<a href="#install">Install</a> ·
|
|
58
|
-
<a href="#tui">Terminal Client</a> ·
|
|
59
|
-
<a href="#development">Development</a> ·
|
|
60
|
-
<a href="#sponsors">Sponsors</a> ·
|
|
61
|
-
<a href="#license">License</a>
|
|
62
|
-
</p>
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
<a id="overview"></a>
|
|
67
|
-
|
|
68
|
-
## Overview
|
|
69
|
-
|
|
70
|
-
Pisper is a desktop and terminal client built on [Pi Coding Agent](https://github.com/earendil-works/pi/tree/main/packages/coding-agent), with multiple sessions, Tools, Skills, MCP, automation, and per-session permissions.
|
|
71
|
-
|
|
72
|
-
See the [Pisper project site](https://ling-kong-ran.github.io/pisper/) for the product overview and interface preview.
|
|
73
|
-
|
|
74
|
-
### Get Started in Three Steps
|
|
75
|
-
|
|
76
|
-
1. [Download the desktop app](https://github.com/ling-kong-ran/pisper/releases/latest) (Windows / macOS / Linux, no Node.js required)
|
|
77
|
-
2. Configure any model provider with an API key
|
|
78
|
-
3. Create a session and start working in parallel
|
|
79
|
-
|
|
80
|
-
<a id="features"></a>
|
|
81
|
-
|
|
82
|
-
## Features
|
|
83
|
-
|
|
84
|
-
- **Multiple sessions:** independent models, context, workspaces, and permissions with Dock splits and layout restoration.
|
|
85
|
-
- **Tools, Skills, and MCP:** manage capabilities and call permissions in one place.
|
|
86
|
-
- **Subagents:** run temporary tasks in isolated contexts and return results to the parent session.
|
|
87
|
-
- **Memory and multimodal input:** retrieve project memory and process images, documents, and code.
|
|
88
|
-
- **Automation and channels:** schedules, visual workflows, Feishu, and personal Weixin.
|
|
89
|
-
- **Desktop and terminal:** Tauri desktop app and Ratatui TUI.
|
|
90
|
-
- **Permission controls:** `Read only / Full access` execution modes, one-shot approval, and credential isolation.
|
|
91
|
-
|
|
92
|
-
<a id="data-safety"></a>
|
|
93
|
-
|
|
94
|
-
## Data Safety & Privacy
|
|
95
|
-
|
|
96
|
-
Pisper is local-first and does not provide a cloud service that hosts or relays conversations. Sessions and settings are stored under `~/.pisper/agent` by default; set `PISPER_AGENT_DIR` to move them.
|
|
97
|
-
|
|
98
|
-
- The Runtime listens on `127.0.0.1` by default, and Pi telemetry is disabled by default.
|
|
99
|
-
- Model calls and enabled remote services such as MCP, Web search, and messaging receive the data required for each request.
|
|
100
|
-
- Common credential formats are redacted at storage and display boundaries, but this is not a replacement for DLP or end-to-end encryption. Protect the local Agent data directory and its backups.
|
|
101
|
-
|
|
102
|
-
<a id="desktop-pet"></a>
|
|
103
|
-
|
|
104
|
-
## Desktop Pet
|
|
105
|
-
|
|
106
|
-
Pisper supports [Petdex](https://petdex.dev)-compatible pets. Install and manage them under **Settings → Desktop pet**. See [`docs/petdex-integration.md`](./docs/petdex-integration.md).
|
|
107
|
-
|
|
108
|
-
<a id="install"></a>
|
|
109
|
-
|
|
110
|
-
## Install
|
|
111
|
-
|
|
112
|
-
### Desktop (Recommended)
|
|
113
|
-
|
|
114
|
-
Download a Windows, macOS, or Linux installer from [GitHub Releases](https://github.com/ling-kong-ran/pisper/releases/latest). It works out of the box — no separate Node.js install is required.
|
|
115
|
-
|
|
116
|
-
#### If macOS Refuses to Open Pisper
|
|
117
|
-
|
|
118
|
-
Pisper is not currently notarized by Apple. Confirm that it came from the official Releases page, then select **Open Anyway** in **System Settings → Privacy & Security**. If that option is unavailable, run:
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
sudo xattr -rd com.apple.quarantine /Applications/Pisper.app
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Use this command only for Pisper downloaded from the official Releases page and placed in `/Applications`.
|
|
125
|
-
|
|
126
|
-
#### If the Linux AppImage Does Not Start
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
chmod +x Pisper_*_linux_x86_64.AppImage
|
|
130
|
-
./Pisper_*_linux_x86_64.AppImage
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
If FUSE is missing, install `libfuse2` or `libfuse2t64`, or use the `.deb` package:
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
sudo apt install ./Pisper-*-linux-amd64.deb
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Component Updates
|
|
140
|
-
|
|
141
|
-
**Settings → Updates** in the desktop app is the unified update entry point. A single **Check for updates** action checks the Desktop package, TUI client, and Runtime together. Install controls appear only for components with a newer version, so a small component update does not require downloading the full desktop installer. Each component uses an independent signed Release channel. Runtime updates take effect after restarting the app, and Pisper falls back to the versions bundled with the desktop package if an installed component is unavailable or fails to start.
|
|
142
|
-
|
|
143
|
-
<a id="tui"></a>
|
|
144
|
-
|
|
145
|
-
### Terminal Client (TUI)
|
|
146
|
-
|
|
147
|
-
With Node.js 20+, you can install the Pisper CLI through npm. npm obtains the lightweight launcher, platform-independent Web frontend, and signed TUI and Runtime packages for the current platform from the configured registry, without downloading from GitHub Releases. Installation verifies and extracts the local component packages so Pisper is ready when the command returns; it does not install the desktop shell:
|
|
148
|
-
|
|
149
|
-
```bash
|
|
150
|
-
npm install -g pisper --progress=true --foreground-scripts
|
|
151
|
-
pisper
|
|
152
|
-
pisper update --check # check the complete distribution through the npm registry
|
|
153
|
-
pisper update # update the launcher, Web, TUI, and Runtime through npm
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Platform packages use the same registry when an npm mirror is configured. `--progress=true` shows npm download progress, while `--foreground-scripts` shows local signature verification and extraction; add `--loglevel=info` only when request and cache details are needed:
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
npm install -g pisper --registry=https://registry.npmmirror.com --progress=true --foreground-scripts
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
After entering the TUI for the first time, use `/provider` to choose a Provider and edit its protocol, effective Base URL, and masked API key. The official default Base URL is shown when no override exists, and leaving API Key blank preserves the saved secret. `/model` lists only models from configured Providers. For a known Provider, `/provider <id>` skips the picker (`/apikey` remains a compatible alias). For visual configuration, run `pisper web`; Pisper uses the Web frontend bundled in the npm package and opens an authenticated, localhost-only settings page in your default browser. **Save Provider settings** does not change the default model; only **Set as default Provider** changes the default for later sessions.
|
|
163
|
-
|
|
164
|
-
After installing the desktop app, you can also install the `pisper` command from **Settings → App updates**. The first installation remains explicit; after later desktop updates restart Pisper, it automatically refreshes this managed terminal client:
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
pisper # start a new conversation
|
|
168
|
-
pisper resume # resume from a list across all workspaces
|
|
169
|
-
pisper doctor # diagnose the runtime
|
|
170
|
-
pisper web # open Web settings
|
|
171
|
-
pisper --help # show complete onboarding and command help
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
The npm distribution has one complete `pisper update` command. It uses the configured npm registry to update the launcher, Web, TUI, and Runtime; `pisper update --check` only queries and does not install, and component names are not accepted. The standalone TUI exposes no component-update command; the desktop distribution is managed through **Settings → App updates**. See the **[Pisper TUI user guide](./src-tui/README.en.md)** for installation, commands, keyboard controls, attachments, execution modes, and approvals.
|
|
175
|
-
|
|
176
|
-
### Run from Source
|
|
177
|
-
|
|
178
|
-
Requires Node.js 20+, npm, and at least one model provider with an API key.
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
git clone https://github.com/ling-kong-ran/pisper.git
|
|
182
|
-
cd pisper
|
|
183
|
-
npm install
|
|
184
|
-
npm run dev
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
Desktop development and packaging:
|
|
188
|
-
|
|
189
|
-
```bash
|
|
190
|
-
npm run desktop:webview:dev
|
|
191
|
-
npm run desktop:webview:build
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
Data is stored under `~/.pisper/agent` by default. Set `PISPER_AGENT_DIR` to use another location.
|
|
195
|
-
|
|
196
|
-
<a id="development"></a>
|
|
197
|
-
|
|
198
|
-
## Development
|
|
199
|
-
|
|
200
|
-
Main stack: React, TypeScript, Tauri, Rust, Node SEA, and Pi Coding Agent.
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
npm run check
|
|
204
|
-
npm test
|
|
205
|
-
npm run build
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
[Issues](https://github.com/ling-kong-ran/pisper/issues) and [pull requests](https://github.com/ling-kong-ran/pisper/pulls) are welcome. Do not commit API keys, bot credentials, or personal data from `~/.pisper/agent`.
|
|
209
|
-
|
|
210
|
-
<a id="license"></a>
|
|
211
|
-
|
|
212
|
-
## License
|
|
213
|
-
|
|
214
|
-
Pisper is released under the [MIT License](./LICENSE). Third-party dependencies and community resources retain their own licenses.
|
|
215
|
-
|
|
216
|
-
## Acknowledgments
|
|
217
|
-
|
|
218
|
-
Thanks to [Pi Coding Agent](https://github.com/earendil-works/pi/tree/main/packages/coding-agent), [Petdex](https://petdex.dev), and the open-source software used by this project.
|
|
219
|
-
|
|
220
|
-
Contributors:
|
|
221
|
-
|
|
222
|
-
- [@mik-myp](https://github.com/mik-myp) — Frontend TypeScript architecture, shadcn/ui / AI Elements, Zustand, and i18n refactor ([#1](https://github.com/ling-kong-ran/pisper/pull/1))
|
|
223
|
-
|
|
224
|
-
<p align="right"><a href="#top">Back to top ↑</a></p>
|