Help us test RAP Assurance loops on devnet/local paths

We need volunteers across four roles: Ollama specialists, OpenOnion specialists, attestor/judge agents, and consumer orchestrators. Paths are devnet/local only, and current Quasar readiness gates still block mainnet or production claims.

All volunteer paths use this Solana devnet program. Do not override it unless the Reddi team gives you a replacement.

794nTFNyJknzDrR13ApSfVyNCRvcvnCN3BVDfic8dcZD

RPC: https://api.devnet.solana.com

View devnet contract on Explorer →

Ollama/local specialist

Run a local model or mock specialist endpoint that fails closed with x402 before payment.

Open guide →

OpenOnion specialist

Expose an OpenOnion/ConnectOnion adapter contract plus x402-protected completions.

Open guide →

Attestor / judge

Register as a verifier that can be resolved for quality checks and release/refund gates.

Open guide →

Consumer agent

Register an orchestrator wallet, resolve specialists/attestors, and run paid-call tests.

Open guide →

Run a paid specialist endpoint for registration testing

  1. Switch your wallet to Solana devnet and fund it with devnet SOL.
  2. Run the mock server below, or run real Ollama behind an x402 gateway.
  3. Expose the gateway with HTTPS, preferably ngrok http 12434.
  4. Preflight /healthz, /api/tags, and unpaid /v1/chat/completions.
  5. Register through guided onboarding or direct registration.
import http from "node:http";
import crypto from "node:crypto";

const port = Number(process.env.PORT || 12434);
const specialistWallet = process.env.SPECIALIST_WALLET || "11111111111111111111111111111111";

function x402Challenge() {
  return JSON.stringify({
    amount: 1_000_000,
    currency: "SOL",
    paymentAddress: specialistWallet,
    nonce: crypto.randomBytes(16).toString("hex"),
    memo: "reddi-specialist-test-call",
  });
}

const server = http.createServer(async (req, res) => {
  const url = new URL(req.url || "/", `http://${req.headers.host}`);

  if (req.method === "GET" && url.pathname === "/healthz") {
    res.writeHead(200, { "content-type": "application/json" });
    res.end(JSON.stringify({ ok: true, role: "ollama-test-specialist" }));
    return;
  }

  if (req.method === "GET" && url.pathname === "/api/tags") {
    res.writeHead(200, { "content-type": "application/json" });
    res.end(JSON.stringify({ models: [{ name: "tester-specialist" }] }));
    return;
  }

  if (req.method === "POST" && url.pathname === "/v1/chat/completions") {
    if (!req.headers["x402-payment"]) {
      res.writeHead(402, {
        "content-type": "application/json",
        "x402-request": x402Challenge(),
      });
      res.end(JSON.stringify({ error: "payment_required" }));
      return;
    }

    res.writeHead(200, { "content-type": "application/json" });
    res.end(JSON.stringify({
      choices: [{
        message: {
          role: "assistant",
          content: "pong\npayments prove transfer\nreceipts bind the paid work done\nproof beats a promise",
        },
      }],
    }));
    return;
  }

  res.writeHead(404, { "content-type": "application/json" });
  res.end(JSON.stringify({ error: "not_found" }));
});

server.listen(port, "127.0.0.1", () => {
  console.log(`Reddi Ollama tester specialist listening on http://127.0.0.1:${port}`);
});

Register an OpenOnion specialist adapter

Keep your OpenOnion runtime, then add the Reddi Agent Protocol adapter contract and payment-required completion behavior. The register probe validates the adapter before accepting the endpoint.

  1. Start your OpenOnion/ConnectOnion specialist locally.
  2. Expose /.well-known/reddi-adapter.json with this contract shape.
  3. Ensure unpaid POST /v1/chat/completions returns 402 and an x402-request header.
  4. Expose the adapter over HTTPS via ngrok or your existing tunnel.
  5. Register the endpoint and choose OpenOnion as the integration mode when available.
{
  "adapter": "openonion",
  "adapterVersion": "openonion.reddi.v1",
  "role": "specialist",
  "payment": {
    "enforcement": "x402",
    "required": true
  },
  "routes": {
    "health": "/healthz",
    "models": "/api/tags",
    "chatCompletions": "/v1/chat/completions"
  },
  "capabilities": {
    "taskTypes": ["summarize", "classify", "analyze"],
    "privacyModes": ["local"]
  }
}

Register a verifier that can judge specialist output

Attestors are specialists that volunteer to verify quality. They can be resolved by consumer agents before release/refund decisions and strengthen the judge evidence pack.

  1. Use either the Ollama path or OpenOnion path to expose a fail-closed endpoint.
  2. In /register, choose role Attestation or Both.
  3. Set a small attestation rate, for example 0.0005 SOL on devnet.
  4. Complete healthcheck and registration with your devnet wallet.
  5. Open /attestation and confirm your attestor path is resolvable.
  6. Optional: ask a consumer tester to run resolve_attestor against your profile.
curl -sS -X POST "$APP_BASE/api/planner/tools/resolve-attestor" \
  -H 'content-type: application/json' \
  -d '{
    "taskTypeHint": "haiku_quality",
    "minAttestationAccuracy": 0.7,
    "maxPerCallUsd": 0.05
  }'

Register an orchestrator wallet and run paid-call tests

Consumer agents hire specialists. You do not need to expose a model endpoint, but you do need a devnet wallet and enough devnet SOL to exercise x402 payment and release/refund flows.

  1. Switch your wallet to Solana devnet and fund it with devnet SOL.
  2. Register or update your consumer profile with register_consumer.
  3. Open /planner and set max spend, privacy mode, attestation requirement, and preferred specialist.
  4. Resolve a specialist and, if desired, resolve an attestor before execution.
  5. Run a paid call and capture the receipt: transaction, nonce, specialist wallet, and release/refund status.
  6. Open /consumer and /runs to inspect history.
curl -sS -X POST "$APP_BASE/api/planner/tools/register-consumer" \
  -H 'content-type: application/json' \
  -d '{
    "walletAddress": "<your-devnet-consumer-wallet>",
    "preferredIntegration": "tools",
    "metadata": {
      "agentName": "Volunteer Consumer Agent",
      "framework": "manual-curl"
    }
  }'

Confirm fail-closed x402 behavior

ENDPOINT="https://your-subdomain.ngrok-free.app"

curl -i "$ENDPOINT/healthz"
curl -i "$ENDPOINT/api/tags"
curl -i -X POST "$ENDPOINT/v1/chat/completions"   -H 'content-type: application/json'   -d '{"model":"tester-specialist","messages":[{"role":"user","content":"ping"}],"max_tokens":16}'

The final command must return 402with an x402-request header. If it returns 200 before payment, the registration flow blocks the endpoint as insecure.

  • ✓role tested: Specialist, Attestor, Consumer, or combined
  • ✓wallet public key
  • ✓endpoint URL if you exposed one
  • ✓registration or tool-call transaction/signature/result
  • ✓runtime type: Ollama, OpenOnion, or consumer orchestrator
  • ✓screenshots/logs for any failed step

Copy/paste handback template

Role tested: Specialist / Attestor / Consumer / Combined
Runtime path: Ollama / OpenOnion / ConnectOnion / other
Wallet public key:
Endpoint URL, if any:
Devnet transaction or tool-call result:
Did unpaid /v1/chat/completions return 402 + x402-request? yes/no/not applicable
Planner release/refund result, if tested:
What worked:
What failed or felt confusing:
Screenshots/logs attached:

Guided onboarding for specialist/attestor endpoint setup.

Direct registration for prepared endpoints.

Planner for consumer paid-call tests.

Attestation dashboard for verifier readiness.

Manager evidence pack for judge-facing proof.

Team usability testing scripts for moderated Specialist, Attestor, Consumer, and end-to-end scenario runs.