Daski admission is a coordinated product and protocol review. Code that runs locally is not automatically listed, and a signed artifact does not grant Mainnet access.
Start on Testnet. Mainnet is separately whitelisted through the Daski Discord.
| Term | Meaning |
|---|---|
| Provider | Your organization, runtime, ERC-8004 identity, and provider wallet |
| Supplier | The upstream API, MCP server, or product, even when provider-owned |
| Service | One coherent public product boundary |
| Skill | One buyer-visible fixed operation |
| Runtime listing | Reviewed listing/payment coordinate for a skill |
| Gateway | Daski entrypoint that admits payment and signs provider calls |
| Signed binding | Daski-issued/reviewed runtime listing, signer, audience, contract, and evidence configuration |
Use this minimal repository only for fixed-price, fully automated, one-shot operations that terminally complete or fail within 50 seconds. Use provider-full for dynamic pricing, jobs, later input, assets/actions, human review, email, admin, direct A2A, multi-replica execution, or ambiguity that must reconcile after restart.
Changing starters after artifact issuance changes the fulfillment contract and requires renewed review.
| Provider supplies | Daski supplies or confirms |
|---|---|
| Legal/public identity, terms, privacy, support, website, HTTPS origin | Current marketplace legal links and onboarding channel |
| Service/skill descriptions, exact input schema, fixed price, examples, artifacts, timing, and tests | Taxonomy and listing decision |
| Fixed API/MCP operation mapping, product modes/credentials, idempotency, reconciliation, readiness, and operations | Gateway origin/signer and standard-rail environment |
| Dedicated provider wallet, intended ERC-8004 identity, payee, and controlled-wallet facts | Current identity/evidence/contract coordinates and registration procedure |
| Deployed candidate and successful end-to-end Testnet evidence | Reviewed global policy/runtime bundles and Mainnet whitelist decision |
The provider owns product credentials and operation. Daski owns marketplace admission and its signed bindings. Do not invent a missing Daski value.
Send a concise versioned packet containing:
- provider legal name, website, terms, privacy notice, support contact/SLA, and intended public HTTPS origin;
- service slug/version/name/description, category family, proposed service type, jurisdictions, and turnaround;
- each skill id, plain-language outcome, examples, required/optional fields, exact bounds, and JSON Schema;
- exact fixed price in atomic USDC, capacity, and deadline;
- terminal artifact schemas and stable failure codes;
- API origin/endpoint/method or MCP server/transport/tool mapping, with proof that buyer input cannot select them;
- product fake/sandbox/Testnet/live separation and every possible Testnet side effect or upstream charge;
- timeout, response-size, concurrency, idempotency, ambiguity, and immediate authoritative reconciliation behavior;
- data sent to the product, retention, redaction, and support evidence;
- provider wallet/identity/payee and other provider-controlled wallets; and
- commit/image identifier and local gate results.
The checked-in service docs, schemas, and tests are the packet's technical source. Do not maintain a second private specification that can drift.
Replace the dummy following Adding a service. Use a fake product client in unit tests and a separately configured product sandbox for Testnet. If the sandbox can create real records or charges, document and strictly bound the campaign before connecting it.
Run every local gate. Do not proceed when a product ambiguity, timeout, or result can outlive the 50-second synchronous window.
Choose a dedicated Base Sepolia provider wallet and intended ERC-8004 identity. Fund only bounded Testnet needs; use Base's official faucet directory. Keep the key in an approved secret manager.
Deploy one active application replica at a stable HTTPS origin. Provider and gateway audiences are signed exact strings, so a localhost/tunnel URL and the later production URL are not interchangeable.
This minimal starter has no chain-mutating registration script. Follow the identity registration/binding procedure and tooling confirmed by Daski. Review the chain, contracts, signer, origin, wallet, and cost before authorizing any transaction.
Install the reviewed Base Sepolia chain/identity coordinates, gateway signer and audiences, provider audience, signed global rail policy, evidence/reputation contracts, control-profile hash, and one runtime bundle per service exactly as supplied. Never combine revisions, hand-edit an envelope or bundle, or weaken validation.
The reviewed Daski onboarding flow obtains provider-wallet authorization before issuing the completed bundle. Keep that authorization and the bundle out of Git and support messages. This repository does not register identity or send chain transactions.
With the reviewed environment configured and PostgreSQL reachable, install each bundle from a protected operator path:
npm run daski:install-runtime -- --file /secure/path/runtime-bundle.jsonThe importer verifies signatures, exact local contract hashes and price, runtime commitments, global policy, and splitter provenance before one atomic catalog promotion. An identical retry is safe. Any mismatch requires a new bundle from Daski, not a local edit.
npm run doctor -- --stage=testnetFix every failure. Then boot the deployed provider and verify
/health/ready, discovery documents, public legal/support fields, installed
service/skill ids, and /standard-rail/outcomes against the reviewed packet.
Doctor is local and read-only. It does not prove the external listing, whitelist, wallet balance, public reachability, or a paid journey.
Through the Daski gateway, test at least:
- provider/service discovery;
- malformed and boundary input rejection before product execution;
- one successful fixed quote and paid dispatch;
- terminal artifact and provider attestation;
- same-dispatch replay returning the durable result;
- changed request/dispatch replay rejection;
- product timeout/outage and safe public failure;
- product idempotency and authoritative ambiguity reconciliation, when mutating;
- process restart with an active request, verifying it fails terminally and is not blindly re-executed; and
- readiness failure/recovery for database, identity, rail, and product.
Do not call the provider dispatch endpoint directly with invented envelopes as a substitute. A valid journey includes the real gateway and reviewed Base Sepolia contracts/evidence.
Retain commit/image digest, deployment revision, doctor codes, non-sensitive
request ids, public chain coordinates, and redacted results. Do not retain or
share .env, wallet keys, API tokens, buyer payloads, signed authorizations,
raw product responses, or database dumps.
- Clean-clone install and every CI/release gate pass.
- No dummy or provider-specific secret/example remains in the real path.
- Deployed readiness and discovery match the packet.
- The product operation stays inside the minimal-starter fit.
- Paid success, replay, failure, outage, and restart cases pass.
- Daski confirms Testnet review completion.
Mainnet is not self-service. Ask through the Daski Discord and provide Testnet evidence plus the proposed immutable release commit/image.
No local flag, doctor result, contract deployment, signed artifact, or
successful Testnet payment can grant Mainnet admission. Doctor deliberately
emits MAINNET_WHITELIST_REQUIRED because this manual external decision cannot
be machine-proven.
Before Mainnet:
- remove
src/services/dummyand obtain a real-service runtime bundle; - use Base chain id
8453withNODE_ENV=production; - use canonical reviewed contracts/USDC and a new Mainnet artifact set;
- create separate Mainnet wallet, PostgreSQL, product account, RPC, origin, secrets, monitoring, and support/incident process;
- make every service incapable of selecting fake/sandbox/Testnet mode;
- use verified database TLS and separate runtime/migration principals;
- verify reverse-proxy CIDRs and edge rate limiting;
- operate one active instance and prove failure/recovery behavior;
- run
npm run doctor -- --stage=mainnetand every release gate; and - obtain explicit Daski whitelist/coordinated release approval.
Contact Daski before changing a reviewed origin/audience, gateway signer, provider identity/wallet/payee, service/skill/runtime-listing id, request/artifact schema, fixed price, capacity, deadline, commission, contract/evidence binding, API/MCP operation, or fulfillment guarantee. Request one new complete policy/bundle set and retest it on Testnet before promotion.