-
Notifications
You must be signed in to change notification settings - Fork 0
supply chain
Mike Crowe edited this page Sep 17, 2026
·
1 revision
How harnessed treats third-party agent tooling, and where credentials are allowed to exist. This page used to be the "Supply chain & security" section of the README.
-
pnpm everywhere. Every JavaScript install (global, per-recipe, hatago's bundled servers) uses pnpm, never
npmornpx.pnpm dlxreplacesnpx. A managed supply-chain config appliesminimumReleaseAgecooldowns and lifecycle-script default-deny. Recipe validation flags rawnpm/npxand points at the pnpm equivalent (design rationale). -
In-image supply-chain scan (advisory). The derived image's final layer runs snyk (over mise node globals and recipe installs, via a synthesized manifest; token-gated by a build secret, warn-skips without one), plus credential-free osv-scanner (recipe lockfiles) and pip-audit (the Python env). It reports a compact severity summary and writes
scan-report.json. It does not fail the build. harnessed installs third-party agent tooling whose dependency trees always carry open advisories; a hard gate would block every build on code you do not control. Visibility is the deliverable. -
Opt-in secrets. varlock + 1Password resolve
op://refs as env only (never a profile, image layer, or repo file): into the pod forcontainer-run, into the agent process forhost-run. Copy.env.schema.exampleto~/.config/harnessed/.env.schemato turn it on. See secrets. -
Nightly re-scan. A systemd user timer re-runs osv-scanner online against installed images so a CVE disclosed after build still surfaces. Setup, including the
loginctl enable-lingerprerequisite, is in troubleshooting. - Secrets and auth referenced, never baked. Claude OAuth, scanner tokens, and 1Password secrets reach the instance as env or read-only mounts, never an image layer.
-
Pinned downloads. No
@latest, no--branch main. The build rejects them.harnessed updatefinds outdated pins and offers to bump them, with a pnpm-styleminimumReleaseAgewindow (default 7 days) so a release younger than the window is not offered. See pin management.
Scanner tokens (for example SNYK_TOKEN) are read from the environment. There is no
harnessed auth command.
All examples in the repo use placeholder values only (op(op://Private/Snyk/credential), dummy
tokens), never real credentials.
Start Here
Guides
- Getting started
- Build and images
- Supply chain and security
- Alternatives
- Recipe authoring
- Service authoring
- Stacks
- Extending stacks (proposed)
- Recipe catalog
- System prompt & rules (proposed)
- Secrets
- AWS SSO
- Pulumi (host login forwarding)
- Egress & exposing services
- Container filesystem
- Git hooks
- Troubleshooting
- Pin management (harnessed update)
Codebase Map
Planning & Roadmap
- open work: GitHub Issues
Research & Prompts
- research/ (home-folder requirements per harness, browse in-repo)
- prompts/ (reusable prompt templates, browse in-repo)