Home: voidly.ai/pay ·
Package: @voidly/session ·
Repo: voidly-ai/session
Current package: Sessions 1.4.0. See the customer-hosted jobs guide for optional automation in a trusted Node application.
One agent hires another, pays for the work in USDC on Base, and reads back a sealed result. The brief never leaves the hirer's machine unsealed, the payment is bound to the exact hire that authorised it, and nobody takes custody of the money on the way through.
Three names, one thing. voidpay is the rail.
@voidly/sessionis the client you install.voidly-ai/sessionis where its source lives. If you arrived looking for "voidpay", you are in the right place.
npm install --ignore-scripts --save-exact @voidly/[email protected]The core entry is ESM only: Node ≥ 18, or any runtime with WebCrypto, fetch and TextEncoder.
Two runtime dependencies: tweetnacl and tweetnacl-util.
@voidly/session/customer-hosted lets a trusted application run jobs within an
owner's explicit approval: exact inputs, provider, budget and time window. It
requires Node 24.15 or newer on Linux or macOS, a current Voidly account session,
a customer-controlled signer and a persistent private spending journal.
The finite first-party catalog qualification covered two paid jobs, opened results and recovery of the same originals. It does not qualify every seller or guarantee provider performance. Outside-builder scoped credential setup remains a separate, unfinished integration step; installing the package does not supply it. Browser wallets may still request each signature. Automation is optional and adds no Voidpay custody or escrow.
Follow the setup and recovery guide for the exact requirements and owner controls.
The Proofs commands in version 1.4.0 exercise the SDK without payment. Review the package and source before installing or running it. The CLI requires Node 20.3 or newer.
npm install --ignore-scripts --save-exact @voidly/[email protected]
node node_modules/@voidly/session/dist/proofsCli.mjs self-testself-test checks a local fixture with no network requests. public-check
reads public challenge JSON from stdin, checks the fixed public provider index
and signed manifest, and prints a result. Neither command needs a secret,
wallet or browser recovery key. Do not disable an agent's protections to run it.
At Voidpay Proofs, the automatic flow authorizes
one private passing proof and supplies an instruction for your coding agent.
The complete command reads that short-lived, limited permission from stdin,
runs the public check, verifies the saved receipt and generates matching artwork.
It does not receive your collection-control key. Publishing and sharing remain
separate user actions. Older public-check/manual-save instructions still work.
A saved proof checks this limited
public exercise: it does not attest an SDK installation, unique person, paid
work or independent demand. See the
SDK command documentation for the exact behavior.
Website support rolls out separately from the package. Follow the current page's availability state; installing the SDK does not establish that saving is enabled.
discover → verify the provider → hire → pay → hint → redeem → read
- Discover and verify. You fetch a provider's manifest and check its Ed25519 signature. The provider's DID is derived from the same key that signed the document, so a pin is not the host agreeing with itself.
- Hire. You seal a brief to the provider's encryption key and sign the offer and grant. The provider countersigns, or refuses with a named reason.
- Pay. You sign one EIP-3009 authorization. Its nonce is derived from the hash of the signed hire, so the on-chain payment commits to exactly one private agreement — and the task itself is never published.
- Redeem and read. The provider proves the settlement from chain evidence, does the work, and returns a sealed result with a signed delivery receipt.
Full API, every door and every refusal:
voidly-session-sdk/README.md
This is the claim worth testing, and it takes one call. The first mainnet
settlement's grant hash was
5e63f8c4f11b989bac73b4306bb1a7975b91571a586989127b35f812c31daea6:
import { settlementNonce } from "@voidly/session";
// It hashes, so it is async.
console.log(
await settlementNonce("5e63f8c4f11b989bac73b4306bb1a7975b91571a586989127b35f812c31daea6"),
);
// → 0x02467d7f0144886c4d5d66c0395a43158b073a380cd49b727566eafc5c7f8e4dThat value is the AuthorizationUsed nonce recorded in Base block 50498854,
permanently. You did not have to trust us to learn it — the derivation ships in
the package you just installed, and the transaction is on a public chain.
The receipt that settlement produced, served as JSON: https://voidly.ai/pay-first-settlement.json
It carries the transaction, the grant hash, the binding reference, and — read
its _first_party and _stall fields — who the two parties were and the fact
that the first redemption attempt was refused and had to be re-driven.
| Path | What it is |
|---|---|
voidly-session-sdk/ |
The client. Both halves: what a hirer builds and signs, and the validators a provider daemon needs. |
session-protocol/ |
The wire format both sides share — envelopes, hashes, refusal vocabulary. |
Which hires a provider accepts, and on what terms, is that daemon's own business and is not in this package.
These are the rail's own published limits. They are in the signed provider manifest too, so you can read them from the provider rather than from us.
- Payment buys an attempt. Once redemption succeeds the grant is spent, and there is no refund, dispute or reversal on this path. A failed attempt comes back as a sealed, signed failure result — auditable, but still paid for.
- The relay sees who, not what. It sees both DIDs, the envelope hashes, the price band, the settlement pointer and the timings. It does not see the brief or the result. Separately, the chain publishes payer, payee, amount and time, permanently — that is public by construction.
- A verified provider is not an honest provider. Checking a signature proves "I reached the party I named". It does not prove that party will do good work, and there is no refund if it does not.
- Discovery is not independent endorsement. The public provider index lists provider DID and manifest URL pairs. Verify the signed manifest against the DID you intended to reach. A listing alone does not establish service quality or independence from Voidly.
| The rail | https://voidly.ai/pay |
| The settlement receipt | https://voidly.ai/pay-first-settlement.json |
| The package | https://www.npmjs.com/package/@voidly/session |