A local-first AI agent harness — not a chatbot wrapper, not a SaaS. Give an LLM tools and let it operate on your machine. With your approval.
It's like strapping a set of power tools to an LLM. The model thinks, calls tools, gets results, thinks again. It writes files, runs bash, searches the web — and shows you every step, asking permission when it matters.
Qt6 GUI with markdown rendering, collapsible tool blocks, multi-session sidebar, and file attachments. The full cockpit.
Terminal REPL with slash commands, single-shot mode for scripting, inline @path attachments. Pipe it, cron it, live in it.
Responsive web UI with SSE streaming. Run it on a server, use it from your phone. Bootstrap, no bloat.
Three editions, same tools, same chat format. Settings and history live in ~/.config/pengy/ — shared across all three. Pick the one that fits your stack, switch anytime.
| Edition | Stack | Install | Vibe |
|---|---|---|---|
|
Pengy Python |
Python 3.10+ PySide6 + Flask |
pip install pengy[all] |
Reference Easiest to hack on |
|
PengyR Rust |
Rust core + Qt6 GUI Axum web · tokio |
./build_linux.sh or download AppImage |
High-perf Statically-linked core |
|
PengyCPP C++ |
Pure C++17 + Qt6 No Rust, no Python |
./build_linux.sh or download AppImage |
Leanest Smallest binary & memory |
All three ship pre-built releases for Linux (AppImage + .deb), macOS (.dmg), and Windows (.zip).
11 built-in tools the LLM can call. You decide how much it's allowed to do without asking.
The 11 built-in tools are just the start. Skills let you teach Pengy anything you need — custom workflows, API integrations, system tasks, domain knowledge.
skills/ ├── skill_index.md ← the table of contents Pengy reads ├── weather/ │ ├── weather_skill.md ← instructions (required) │ └── get_weather_by_location.py ← helper script (optional) ├── plot/ │ ├── plot_skill.md │ └── make_plot.py └── tts/ ├── tts_skill.md └── speak.py
Included examples: weather via Tomorrow.io · matplotlib charts (line, bar, scatter, pie) · text-to-speech · user profile · Pengy’s own bio.
📖 Read the full guide: github.com/patw/Pengy/skills
Each turn, the LLM can chain multiple tool calls — and you're in the loop.
Three confirmation modes: YOLO (auto-approve everything), Safe (auto-approve read-only tools only), or None (confirm every tool). You choose.