Why
Distribution friction kills trial. Today the path is clone → venv → pip install -e. A real PyPI release (and optionally Homebrew) turns "try it" into one command — exactly what Show HN / Reddit / issue-farmer traffic needs.
Scope
PyPI
- Confirm
pyproject.toml metadata (version, classifiers, URLs, extras)
- Add a GitHub Actions workflow for tagged releases → build sdist/wheel → publish (Trusted Publishing preferred)
- Document:
pipx install personality-protect then personality-protect demo
- Keep heavy extras optional:
personality-protect[mlx], [gguf], [models]
Optional stretch: Homebrew
- Formula or tap that installs the CLI (Python formula pattern)
- Document Apple Silicon MLX extra install after brew
Acceptance criteria
Pointers
pyproject.toml
.github/workflows/ci.yml
- Package data under
personality_protect/data/
Privacy / safety
Release artifacts must contain code + synthetic demo/eval fixtures only.
Difficulty
Easy–Medium — packaging + CI; high traction payoff.
Why
Distribution friction kills trial. Today the path is clone → venv →
pip install -e. A real PyPI release (and optionally Homebrew) turns "try it" into one command — exactly what Show HN / Reddit / issue-farmer traffic needs.Scope
PyPI
pyproject.tomlmetadata (version, classifiers, URLs, extras)pipx install personality-protectthenpersonality-protect demopersonality-protect[mlx],[gguf],[models]Optional stretch: Homebrew
Acceptance criteria
python -m buildproduces clean sdist + wheel locallyworkflow_dispatchfirst)Pointers
pyproject.toml.github/workflows/ci.ymlpersonality_protect/data/Privacy / safety
Release artifacts must contain code + synthetic demo/eval fixtures only.
Difficulty
Easy–Medium — packaging + CI; high traction payoff.