Remote scripts
Install snippets like curl | sh can run changing code before you have inspected it.
Early project direction
Packy is a planned local desktop AI friend for safer installs. It is designed to live in your dock, tray, or menu bar, notice risky install activity, and help you understand what a command will do before you approve it.
A README tells you to paste a command. A package manager downloads a dependency tree. A postinstall script edits your shell profile. Packy exists for the moment before you hit enter.
Install snippets like curl | sh can run changing code before you have inspected it.
Typosquats, new maintainers, suspicious postinstall scripts, and risky dependency chains can hide inside normal package flows.
Unsigned binaries, global npm installs, pip-as-root, new daemons, services, launch agents, and PATH edits deserve a second look.
Packy's primary UX is planned as a desktop companion, not a CLI-first tool. The planned companion loop is to notice install-related activity, explain the risk in plain language, and offer safer paths without turning every install into a lecture.
Example interaction
This is illustrative product direction, not a shipped workflow yet. The goal is concrete: warn when an install pattern deserves inspection, then help the user choose a safer path.
Packy noticed a remote shell installer.
This command downloads a script and runs it immediately. Want me to fetch it first, summarize what it changes, look for package-manager alternatives, and check whether signatures or release checksums are available?
Planned safer options: 1. Download and inspect the script before running it. 2. Prefer a signed package or official package manager when available. 3. Run with the least privilege needed. 4. Record before/after changes if you continue.
Planned capabilities
These are design goals for the implementation. They should stay phrased as planned until code backs them.
A first prototype now parses command text for common risky patterns. Deeper shell parsing and package-manager plans are planned.
Explain differences between Homebrew, apt, npm, pip, official downloads, signed packages, and ad hoc scripts.
Call out typosquatting, maintainer churn, dependency depth, lifecycle scripts, binary provenance, and risky defaults.
Use package metadata, advisories, signatures, checksums, release pages, and local caches rather than model memory alone.
Track local install activity and produce before/after reports without sending machine state to a cloud service by default.
Store install history, package lists, command context, and risk notes on the device unless the user explicitly chooses otherwise.
Safety model
Packy should be useful without becoming an unsupervised root shell. The assistant can explain and propose, but deterministic policy should gate privileged actions.
Remote shell installers, global writes, unsigned binaries, and hidden lifecycle hooks get flagged.
Packy explains what it wants to inspect, what it can verify, and where uncertainty remains.
The user chooses whether to inspect, use a safer alternative, continue, or stop.
Privileged commands should require explicit approval and policy checks, not LLM impulse.
Local AI
The design center is local-first privacy. Packy should avoid uploading install history, package lists, shell commands, or machine state by default.
A tiny local model can classify install-related activity and decide when to notify. A larger local model can be optional for deeper explanations. Tools, retrieval, and cache should provide current package facts when model memory is not enough.
Cloud services may become optional later, but they should not be required for the core private install-safety loop.
Status
This repository currently hosts a static GitHub Pages site, repo-local agent guidance, an architecture document, and a first deterministic command-risk analyzer. The desktop companion implementation is still to come, so the page distinguishes current code from intended product direction.
Current code can inspect command text only. Future copy should not claim Packy already watches installs, executes commands, verifies signatures, or blocks risky behavior until those capabilities exist in code.