catalogue: Dial update, plus Dead Simple Email, Kinetic Pricing, Rent A Human, Upfile - #454
Merged
Conversation
… A Human and Upfile Matches the app-store set already live on the website (pilot-protocol/website#203), so the store pages and the catalogue agree. io.pilot.dial 0.1.0 20 methods byo + provider signup (app update) io.pilot.deadsimple 0.1.0 19 methods byo + agent signup io.pilot.kinetic 1.0.0 27 methods managed io.pilot.rentahuman 0.2.0 5 methods managed io.pilot.upfile 0.2.3 10 methods cli + sourced binaries Twenty platform bundles are live on the prod artifact registry, each fetched back over its public URL and sha-checked. Every entry passes all ten review-gate checks. Store pages are hand-built from each authored submission, with the prose blocks lifted verbatim so a page cannot drift from what installs. metadata_sha256 is pinned to the committed bytes in each case, and catalogue.json is re-signed and verifies under the embedded trust anchor. Catalogue stays at version 2. Publisher keys are per app, one stable key each, generated for this release and held out of the repo. Whichever key first publishes an app owns every future update to it. Two apps are managed and need a broker master key before their calls will work: KINETIC_MASTER_KEY (in hand) and RENTAHUMAN_MASTER_KEY (being sourced; partner access is enterprise-gated and not self-serve). Broker registry entries for both, including per-user tenancy and a credit block, are in app-template#100 under deploy/broker-entries/. Until RENTAHUMAN_MASTER_KEY is registered, that app installs and every call 401s at the broker. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Collaborator
Author
|
Dial is the urgent one in this set — treating it as an app update. Its store pages are already live on the website, so this catalogue entry is what makes the install command resolve rather than 404. Everything Dial needs is in place:
Dial has no dependency on the two broker keys, so if you want it out immediately this entry can merge on its own and the rest can follow. |
Alexgodoroja
enabled auto-merge (squash)
August 9, 2026 07:38
TeoSlayer
approved these changes
Aug 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Catalogue entries matching the app-store set already live on the website (pilot-protocol/website#203), so the store pages and the catalogue agree.
Dial — the urgent one
Dial ships here as an app update. Its pages are already live on the store, and this entry is what makes
pilotctl appstore install io.pilot.dialactually resolve. A real US phone number for an agent: AI voice calls, SMS and iMessage, with atransferTothat waits out hold music and IVR menus and hands the live call to a human the moment a real person answers.Its API came back from the scheduled-maintenance window it was in earlier, so every claim in the listing was verified against a live endpoint rather than taken from the submission.
Verification
✗in a full-catalogue verify are the pre-existingio.pilot.walletandio.pilot.smolmachines, untouched here.metadata_sha256pinned to the committed bytes for each app, checked after writing. This is the check that broke agentphone's store page in July.catalogue.jsonre-signed; the signature verifies under the embedded trust anchor. Catalogue stays atversion: 2.Store pages
Hand-built from each authored submission rather than generated, with
description_md,product_demoandnext_stepslifted verbatim so a page cannot drift from what installs. The generated path reuses an existing page and refreshes only runtime facts, which is right for a version bump and wrong for a first entry.Publisher keys
One stable key per app, generated for this release and held out of the repo. Whichever key first publishes an app owns every future update to it, and moving it later is an admin-gated rotation — worth knowing before this merges.
Before the managed apps work
Two apps are
managedand need a broker master key registered before any call succeeds:KINETIC_MASTER_KEY, in hand.RENTAHUMAN_MASTER_KEY, being sourced. Partner access is enterprise-gated and not self-serve, so this app will install and 401 at the broker until that key lands. If you would rather not ship a guaranteed-failing app, drop that one entry and I will re-add it with the key; the other four are independent.Broker registry entries for both — including per-user tenancy and a credit block — are in app-template#100 under
deploy/broker-entries/. Tenancy matters here because both apps front a shared partner account: without it, any Pilot user could read another user's pricing studies or their RentAHuman request thread, phone number included. That is covered by attack tests which I verified fail when tenancy is disabled.Opened by hand
publish-on-mergecannot do this yet. The token is set and valid — the:?guard passes — butpublish-rich-from-r2.sh:187clonespilot-protocol/pilotprotocolwith stderr sent to/dev/null, so a scope failure on that repo specifically kills the script with no message. Removing that redirect would have saved several weeks of misdiagnosis, mine included.