harness-tools

Personal extensions and skills for Pi.

Included extensions

  • dictate — Linux-only local voice dictation through a socket-activated NVIDIA Parakeet service.
  • effort-controls — /effort reasoning-level selection and /fast priority mode for eligible OpenAI models.
  • update — /update and --update support for updating Pi and configured Pi packages.

Repository layout

docs/          Usage guides
extensions/    Pi extensions
profiles/nono/ Repo-managed nono profiles, symlinked into ~/.config/nono/profiles
services/      Host-side services used by extensions
skills/        Pi skills (one directory with a SKILL.md per skill)
systemd/user/  Repository-managed systemd user units

The root package.json exposes the extensions and skills as a single Pi package.

Nono sandbox

Use pi-sbx to launch Pi with a nono profile selected from the current directory. Manage routes with pi-sbx-profile set <profile> [directory]; omitting the directory assigns the current working directory. See docs/nono.md for setup, profile settings, Internet tiers, multi-repository access, and the nono-profiles editing skill.

Install locally

pi install /absolute/path/to/harness-tools

For a one-off development run:

pi -e ./extensions/effort-controls
pi -e ./extensions/update

Development

Node.js 22.19 or newer is required by the current Pi development dependencies.

npm install
npm run typecheck

Extensions are TypeScript modules loaded directly by Pi; no build step is required.

Repository-managed global instructions, skills, and extension exposure are declared in config/pi-links.json and reconciled by one script:

./scripts/pi-links.mjs check
./scripts/pi-links.mjs sync --dry-run
./scripts/pi-links.mjs sync
./scripts/pi-links.mjs prune --dry-run

The repository-local manage-pi-links skill applies this workflow. Global instructions are linked to Pi and Codex as AGENTS.md; Claude receives a CLAUDE.md that imports the shared instructions. The manager preserves unrelated global resources and refuses unmanaged destination collisions. Run /reload after changing active Pi instruction, skill, or extension exposure.

License

MIT

S
Description
No description provided
Readme MIT
2.5 MiB
Languages
TypeScript 66.6%
Python 28.2%
JavaScript 3%
Shell 1.5%
HTML 0.5%
Other 0.2%