* chore(nix): add reproducible OpenPencil flake * fix(nix): patch and smoke-test prebuilt binaries * chore(ci): keep workflow validation in integration follow-up * feat(integration): expose declarative harness surface * ci: run Nix checks for integration surface * test: verify all OpenPencil runtime tools * feat(integration): expose web server package * chore(nix): remove rebase conflict marker * fix(nix): update OpenPencil CLI prebuilt hash * fix(nix): validate source outputs and pin release assets * fix(nix): refresh desktop release hash * fix(nix): refresh Bun dependency hash * fix(nix): normalize Bun hoisted aliases * ci: make headless desktop smoke test deterministic |
||
|---|---|---|
| .. | ||
| openpencil.nix | ||
| OpenPencil.pkl | ||
| README.md | ||
| Skillnet.pkl | ||
OpenPencil Nix integration surface
The OpenPencil flake exports a versioned Pkl contract at
nix/integration/OpenPencil.pkl and the generated Nix sidecar at
nix/integration/openpencil.nix (lib.integrationManifest). Downstream flakes
should consume the sidecar rather than duplicating executable names, MCP
transport arguments, or harness config paths.
For each supported system the contract names these package outputs:
runtime: source-built desktop and CLI runtime;runtime-prebuilt: the matching release binaries, wrapped soopcan find the desktop executable (exports bothopenpencil-desktopandop);web-server: the source-builtop-host-web-serverplus its web bundle;skills: an immutable Skillnet bundle containingSkillnet.pkland the OpenPencil design skill.
The default MCP adapter is per-session stdio (--mcp <document>). The HTTP
adapter is loopback-only and is intended for an explicitly enabled live-canvas
service (--live-mcp <port>). Consumers should merge the generated adapter
entry into their harness config atomically and preserve unrelated keys.