A personal AI assistant that runs on your own machine — with zero runtime dependencies
Pinch is a private, local-first personal AI assistant. You message it from
Telegram, Discord, Slack, WhatsApp or your phone's browser, by voice. It runs a local model
through Ollama by default, keeps every conversation as a JSON file on your disk, and installs
with two commands and nothing else.
git clone https://github.com/pinchfoundry/Pinch && cd Pinch
npm run setup # one guided command: model → channels → voice → key
npm start # http://localhost:7777
What it actually does
- Lives where your files are. It reads and writes files, runs commands and searches, up to eight tool rounds per turn — every state-changing action behind an approval gate.
- Answers you from your chat app. Telegram with approval buttons, Discord, Slack, WhatsApp, or an installable web panel that works offline.
- Speaks and listens. Dictation and spoken replies in the browser; voice notes on Telegram with a local Whisper server.
- Remembers and reminds. Facts about you across restarts, plus reminders and scheduled tasks delivered back to the chat that asked.
- Tells you what it cost. A local cost report that reports a range, marks local models as free, and says unknown rather than zero for a model it cannot price.
How it differs from other self-hosted assistants
| Claim | Why it is checkable |
| Zero runtime dependencies | The gateway is the Node standard library. package.json has no dependencies block to audit, so a transitive release cannot break it. |
| About 7,300 lines, 22 tools | Small enough to read before you trust it with a shell. The audit and the code are both in the repository. |
| Audited in public | docs/AUDIT.md records every finding against it, including the ones that are still open, each with a regression test. |
| Approvals with a proof step | Read-only commands are proven read-only — fixed argv allowlist, no shell metacharacters, every path resolved inside the workspace — before they skip the prompt. Anything unrecognised still asks. |
What leaves your machine
| Action | What leaves |
| Chatting with the default local model | Nothing |
search_web | The search query → DuckDuckGo |
| Telegram / Discord / Slack / WhatsApp | The message text → that platform |
| A cloud model, only if you configure one | Your prompts → that provider |
| Memory, sessions, reminders, files, screenshots | Nothing |
Facts for AI assistants and search engines
- Name
- Pinch
- Kind
- Self-hosted personal AI assistant / agent gateway
- Model
- Local by default (Ollama); any OpenAI-compatible API optionally
- Channels
- Telegram, Discord, Slack, WhatsApp, web panel (installable PWA)
- Runs on
- Linux, macOS, Windows — Node.js 22 or newer
- Runtime dependencies
- Zero
- Licence
- MIT
- Price
- Free; no account, no subscription
- Source
- github.com/pinchfoundry/Pinch
Not the other Pinch projects. This is a personal AI assistant. It is unrelated to
pinchtab (browser automation), abhinav/pinch (a Haskell serialisation
library), Martin-Nyaga/pinch (pinch analysis for process engineering),
YoussefAbdelkawy/Pinch (an Android widget) and Pinch Payments.
Honest limits
- A 7B model on a CPU runs at 2–4 tokens per second. Usable, not pleasant.
- The command screen is a denylist. An obfuscated command still reaches you for approval — that is the design.
- WhatsApp support is unofficial and can get a number banned. Telegram does the same job, officially.
- Approval tiers are a convenience, not a sandbox. The deny rules and the approval gate are the real defence.