hyperspace
LIVE TESTNET — chain 808080

The wallet for AI agents.

Stripe Link gave 200 million humans a one-click wallet. Hyperspace Wallet gives every AI agent — Hermes, OpenClaw, ChatGPT, custom enterprise — a portable identity (did:hyperspace:), a multi-rail wallet, on-chain reputation, and one line of code to pay any counterparty across five payment rails.

Install in 60 seconds Source on GitHub Read the docs
# TypeScript / Node npm install @hyperspace/wallet-sdk # Python pip install hyperspace-wallet
latest block
808080chain id
registered agents
7validators
5payment rails
198tests passing

block + agent count read live from rpc.a1.hyper.space when JS is enabled

Stripe Link is for humans, Hyperspace Wallet is for agents — complementary architectures

Stripe Link gives 200 million humans a wallet. Hyperspace Wallet gives every agent its own identity, its own keys, and one API across every payment rail.

One pay() call, five payment rails — native HSPACE channels, x402, ACP, AP2, MPP

One wallet.pay(). Five rails. The SDK quotes each, picks cheapest, falls through on failure. Every receipt has the same shape.

Agent to Wallet to Chain to Settlement — full pipeline through rpc.a1.hyper.space and 7 DigitalOcean validators

The full pipeline runs end-to-end on the live a1 testnet today. Verified at block 14210, chain id 808080.

Stripe Link
FOR HUMANS
browser, email, card200M+ wallets
one-click checkoutper merchant
person clicks "Pay"1 tx, 1 user
complementary
Hyperspace Wallet
FOR AGENTS
DID + Ed25519 + secp256k1cryptographic identity
5 rails, one pay() callpolicy + receipts + idempotency
agent transacts on its ownbounded by spend policy

Use both. Stripe Link wins humans paying merchants. Hyperspace Wallet gives the agent its own identity, its own keys, its own reputation, and one API across every payment rail — including Stripe ACP itself.

contents

why this exists

An AI agent that wants to pay another agent — for inference, data, an API call, a tool invocation, a checkout — has nowhere to go. Today it has to:

Stripe knows this. Per their March 2026 announcement, agentic commerce is the next $350B+ TAM. They shipped four primitives (Link, ACP, SPT, MPP) and explicitly said they assume "the agent already exists and has authority." Google's AP2 is a trust framework for agent mandates. Coinbase's x402 is a peer-to-peer USDC settlement protocol. Each rail solves part of the problem. None of them issue an agent identity.

our claim

Hyperspace Wallet is the missing layer. The SDK gives every agent one identity (did:hyperspace:), one wallet that speaks every rail, one receipt format portable across rails, one policy engine for spend caps and counterparty whitelists, and one rating call to build reputation on a public chain. The SDK is MIT-licensed and free. We earn 5–15% on transactions routed through it.

what you get

Portable identity

did:hyperspace: resolves on-chain. Ed25519 for receipts, secp256k1 for chain transactions, both derived from one 32-byte seed.

Multi-rail pay()

One method, five rails — native HSPACE channels, Coinbase x402, Stripe ACP, Google AP2, Stripe MPP. Smart routing picks cheapest.

Spend policy

Declarative caps, reputation thresholds, allow/deny lists, capability requirements, custom guards. Wallet-level + per-call.

Idempotency

Persistent (key → request hash → receipt) cache. Replays return cached receipts. Conflicts throw IdempotencyConflictError.

Unified receipts

Schema-versioned envelope wraps rail-specific cryptographic proofs. Verifiable forever, portable across systems.

On-chain reputation

wallet.rate(receipt, did, rating) writes 1-5 stars + sub-ratings to ReputationRegistry. Discovery filters by score.

quickstart — sixty seconds

TypeScript / Node

# 1. Install npm install @hyperspace/wallet-sdk
// 2. Create an agent and pay import { Wallet } from '@hyperspace/wallet-sdk'; const wallet = await Wallet.init({ agentName: 'MyAgent', storage: 'tee', policy: { dailyCapMicroUsdc: 50_000_000n }, // $50/day }); const receipt = await wallet.pay({ to: 'did:hyperspace:808080:0x...', amount: 0.05, currency: 'USDC', for: { type: 'inference', model: 'qwen3.5:32b' }, }); console.log(receipt.id); // receipt id console.log(receipt.rail); // 'native' | 'x402' | 'acp' | 'ap2' | 'mpp' console.log(receipt.proof.eip712Signature ?? receipt.proof);

Python

pip install hyperspace-wallet
import asyncio from hyperspace_wallet import Wallet async def main(): wallet = await Wallet.init( agent_name='MyAgent', storage='tee', policy={'daily_cap_micro_usdc': 50_000_000}, ) receipt = await wallet.pay( to='did:hyperspace:808080:0x...', amount=0.05, currency='USDC', purpose={'type': 'inference', 'model': 'qwen3.5:32b'}, ) print(receipt.id, receipt.rail) asyncio.run(main())

CLI

# initialize an identity (writes 24-word recovery to stdout) npx hyperspace-wallet init MyAgent # pay another agent hyperspace-wallet pay did:hyperspace:808080:0xabc... 0.05 \ --currency USDC --for-model qwen3.5:32b # discover counterparties for a capability hyperspace-wallet discover earnings-call-sentiment --min-rep 80 --max-price 0.10

did:hyperspace: — agent identity

Every agent gets a W3C-compliant Decentralized Identifier the moment Wallet.init() runs. Format:

did:hyperspace:<chain-id>:<agent-id> # Example (live a1 testnet) did:hyperspace:808080:0xb984625df9b00bf49cb033c4645378ab4ab6c0bfe5fa2c7a3110746911488eb3

The agent-id is sha256(ed25519PublicKey || ":" || agentName) — deterministic, so restoring from a 24-word BIP-39 mnemonic produces the same DID. Two keys are derived from one master seed via independent HKDF chains:

SEED32 bytesBIP-39 24 words
HKDF-AEd25519receipts, channels
HKDF-Bsecp256k1EVM, EIP-712
DIDon-chainAgentRegistry

The DID Document carries both verification methods (Ed25519VerificationKey2020 + EcdsaSecp256k1RecoveryMethod2020), resolves to the on-chain AgentRegistry, and ships with a Hyperspace-specific extension carrying chainId, agentId, and the EVM address.

did:hyperspace: derivation — one master seed, two HKDF chains producing Ed25519 and secp256k1 keypairs

One 32-byte seed → independent HKDF chains → Ed25519 (for receipts) and secp256k1 (for chain). Lose either, the other is still safe.

spec

Full did:hyperspace: method specification: DID_SPEC.md — operations (Create / Resolve / Update / Deactivate), W3C conformance matrix, example DID Document.

five payment rails — one pay() call

The SDK ships an adapter for every major agent payment rail. wallet.pay() picks the cheapest available rail by quote; you can force one with rail: 'native' or restrict the set with policy.allowedRails.

railbacked bytypical uselatencySDK take rate
native Hyperspace PaymentChannel, off-chain HSPACE micropayments, sub-cent~50ms3%
x402 Coinbase HTTP-402, USDC on Base/ETH/Polygon/Arbitrum/Optimism peer-to-peer, no intermediary~80ms5%
acp Stripe Agentic Commerce Protocol checkout against Stripe-connected merchants~1.2s2% over Stripe
ap2 Google Agents-to-Payments mandates card / USDC / PayPal via VC mandate~1.5s3% over rail
mpp Stripe Machine Payments Protocol on Tempo session-based streaming micropayments~200ms3% over rail

Smart routing

By default selectRail() tries adapters in this order: native → x402 → acp → mpp → ap2. Each adapter quotes { totalCostMicroUsdc, estimatedLatencyMs }, the cheapest wins; on failure the SDK falls through to the next rail in the order. Counterparties advertise which rails they accept via the PayChallenge.acceptedRails field.

stripe + coinbase, in the SDK today

The Stripe ACP adapter calls api.stripe.com/v1/payment_intents with Stripe-Agentic-Commerce: true and either an sk_live_... or a Shared Payment Token issued via the consent flow. The Coinbase x402 adapter signs an EIP-712 PaymentReceipt and adds it as the X-Payment header on outbound HTTPS calls; the included X402Server verifies replay-protected receipts on the receive side. Both adapters are real REST/HTTP clients — no stubs.

Smart routing — selectRail() quotes each adapter, picks the cheapest, falls through on failure

Smart routing quotes every available adapter, picks the cheapest by total cost + latency, falls through on failure. The agent never has to pick a rail by hand.

unified receipt envelope

Every pay() returns a Receipt of the same shape, regardless of rail. The rail-specific cryptographic proof lives in receipt.proof as a discriminated union — verifiable forever by anyone who has the SDK.

interface Receipt { version: '1'; id: string; // uuid v4 hex idempotencyKey: string; timestamp: number; // unix ms rail: 'native' | 'x402' | 'acp' | 'ap2' | 'mpp'; from: Did; // did:hyperspace:... fromAddress: EvmAddress; to: Did; toAddress: EvmAddress | string; amount: string; // "0.05" currency: Currency; // "USDC" amountMicroUsdc: string; // "50000" for?: PayPurpose; // inference / tool-call / data / etc. proof: ReceiptProof; // rail-discriminated, signed verificationUrl?: string; }

For the x402 rail, proof is an EIP-712 signature recoverable to fromAddress. For native channels, it's a per-update Ed25519 signature over (channelId, totalAmount, nonce). For ACP, it's a Stripe PaymentIntent id queryable against the Stripe API. For AP2, it's the embedded mandate VC + the network reference. For MPP, it's a Tempo tx hash + sequence number.

Verification is one method call:

const result = await wallet.verifyReceipt(receipt); // { valid: true, payerAddress: '0x...', amountMicroUsdc: 50000n }
Receipt envelope — schema versioned outer shell with rail-discriminated cryptographic proof inside

Same outer shape every time. The proof is rail-specific (EIP-712 / Ed25519 channel sig / Stripe id / VC mandate / Tempo tx) but the receipt itself is portable forever.

spend policy — declarative authority

The policy engine evaluates every pay() before it touches the network. Wallet-level policies set the trust envelope; per-call withPolicy overrides can only narrow that envelope further (never widen).

const wallet = await Wallet.init({ agentName: 'ResearchBot', policy: { perTxCapMicroUsdc: 5_000_000n, // $5 per call dailyCapMicroUsdc: 50_000_000n, // $50 / 24h monthlyCapMicroUsdc: 500_000_000n, // $500 / 30d minCounterpartyReputation: 70, // 0-100, on-chain allowedRails: ['native', 'x402'], // no Stripe/Google for this agent requiredCapabilities: ['data-license'], customGuard: async (req, ctx) => ctx.counterpartyReputation > 90 || req.amount < 0.01, }, });

If a policy denies, PolicyDeniedError is thrown with the specific rule that triggered (err.rule === 'perTxCap' | 'dailyCap' | 'minCounterpartyReputation'...) so the agent can choose to retry, ask the user, or fail.

Spend history persists at ~/.hyperspace/wallet-sdk/spend-history/<did>.jsonl so caps work across restarts.

Spend policy engine — declarative rules evaluated before every pay call, allow advances to adapter, deny throws PolicyDeniedError

Declarative authority. Wallet-level + per-call. Per-call only narrows — never widens — so a misbehaving subroutine can't escalate spend.

discovery + reputation

An agent that needs a service finds counterparties via wallet.discover(), then pays the best-ranked one. Ratings flow back to the on-chain ReputationRegistry via wallet.rate().

// 1. discover providers for a capability const results = await wallet.discover({ capability: 'earnings-call-sentiment', maxPriceMicroUsdc: 100_000n, // $0.10 cap minReputation: 80, requiredRails: ['x402'], limit: 5, }); // 2. pick the highest-scored, pay them const chosen = results[0]; const receipt = await wallet.pay({ to: chosen.did, amount: 0.05, currency: 'USDC', for: { type: 'tool-call', tool: 'analyze', args: { ticker: 'NVDA' } }, }); // 3. rate the counterparty after the call returns await wallet.rate(receipt.id, chosen.did, { receiptId: receipt.id, overall: 5, quality: 5, speed: 4, communication: 5, });

Reputation is the moat. Once an agent has 10K transactions and a 4.8 rating on did:hyperspace:, the cost of moving to a competing rail (lose reputation, start over from zero) is high. ENS captured Ethereum names this way.

Reputation lives on-chain — pay then rate then on-chain ReputationRegistry, score and slashing

Tied to receipts, not free-form. Slashable on dispute. Lock-in compounds with every transaction — the ENS pattern, applied to agents.

architecture

The SDK is one Wallet class composing six modules. The agent app imports it; everything else is internal.

AGENT APPLICATION LangChain · CrewAI · Hermes · OpenClaw · Eliza · custom Wallet (top-level class) init() · pay() · verifyReceipt() · discover() · rate() · createSession() · register() Identity DID · keys · TEE sessions · recovery Payments policy · receipts routing · idempotency Reputation on-chain reads discover · rate · dispute Chain client multi-RPC failover contract bindings 5 RAIL ADAPTERS native (HSPACE channels) · x402 (Coinbase USDC) · acp (Stripe) · ap2 (Google) · mpp (Tempo) Hyperspace a1 testnet 7 DO validators · NarwhalTusk · 808080 External rails Stripe API · Coinbase · Google AP2 · Tempo ~/.hyperspace/wallet-sdk/ (TEE/keychain/file/memory)

arch — 6 internal modules · 5 rail adapters · multi-RPC failover · pluggable storage

Wallet SDK architecture — six modules, five adapters, multi-RPC failover

One Wallet class. Six internal modules. Five adapters. Same shape from CLI, from a framework recipe, or from raw code.

live a1 testnet

The SDK ships with the canonical Hyperspace a1 chain id 808080 as default and resolves rpc.a1.hyper.space:8545 for JSON-RPC. Production validators run Narwhal-Tusk DAG BFT consensus across 7 DigitalOcean droplets.

Deployed contracts

contractaddresspurpose
AgentRegistry0xEa3d307678bb3dEcbB239176f42ff12AcE92d93Eidentity, staking, revenue
PaymentChannel0xdAc91f0e11Be05E33dAE82AD30a2E53d58Df1971off-chain HSPACE channels
ReputationRegistry0x42C0F15bF0dBF101d623142e7fBbBf6f9cfF7b90scores, ratings, slashing
PaymentFacilitator0x237732AE105b7891fd2B6a30333585ECCDb5a055HTTP-402 settlement
MarketplaceEscrow0x57C6488B1b99329c50BFaa3fE0A945e151EdE8bdservice-completion escrow
WrappedUSDC0xEaE0b38B7F800a1B81942A38015F7Dd769AC1c41bridged USDC
Woppal (WOPPAL)0x6b3380AE2D061bC4eAe2B7c3Be9176917DE8F141experiment-adoption micropayments

All addresses verified live at block 14210 on 2026-04-29 (deploy manifest: a1-blockchain-hyperspace/contracts/deployments/hyperspace-do-prod.json). Override any of them via HYPERSPACE_AGENT_REGISTRY_ADDRESS, HYPERSPACE_PAYMENT_CHANNEL_ADDRESS, etc., or in WalletConfig.addresses.

end-to-end live

The full agent → wallet → chain → settlement flow works on the live testnet today. Verified in scripts/e2e-register.mjs: SDK creates a DID, signs a tx via the public RPC hostname, validators mine it within 3 blocks, the SDK reads it back via eth_call. totalRegistered increments. No IPs in the user-facing path.

stripe ACP — agentic commerce

Stripe's Agentic Commerce Protocol is implemented as a real REST client in src/adapters/acp/index.ts. The adapter authenticates via a Stripe API key (sk_live_... / sk_test_...) for development, or a Shared Payment Token issued via the user's ACP consent flow for production.

const wallet = await Wallet.init({ agentName: 'BuyerAgent', adapters: { acp: { apiKey: process.env.STRIPE_API_KEY }, }, }); // pay a Stripe-connected merchant const receipt = await wallet.pay({ to: 'did:stripe:acct_1ABC123...', amount: 19.99, currency: 'USD', for: { type: 'merchant-checkout', cartId: 'cart_xyz' }, }); // receipt.proof.stripeId === 'pi_3NXYZ...'

The SDK posts to /v1/payment_intents with the Stripe-Agentic-Commerce: true header, on_behalf_of set to the merchant's connected account, and an idempotency key to prevent double-spends. verifyReceipt() queries /v1/payment_intents/{id} to confirm async settlement.

SDK take rate over Stripe: 2% via application_fee_amount. Net merchant cost ~4.9% + $0.30 (2.9% + $0.30 Stripe + 2% Hyperspace).

Stripe ACP and Coinbase x402 — real REST clients in the SDK

Stripe ACP and Coinbase x402 are real REST clients in the SDK — no stubs. Same Receipt envelope wraps either rail's proof.

coinbase x402 — peer-to-peer USDC

x402 is a peer-to-peer protocol — no platform credentials needed. The SDK ships both sides: X402Adapter for the consumer, X402Server for the receiver.

Consumer — pay any 402 server

// the SDK responds to HTTP 402 challenges with EIP-712 receipts const { response, receipt } = await wallet .getX402Adapter() .payFor402('https://api.example.com/v1/data', challenge, did, addr); const data = await response.json(); // receipt.proof.eip712Signature is recoverable to the payer

Receiver — paywall any HTTP endpoint

import { X402Server } from '@hyperspace/wallet-sdk/adapters/x402'; import express from 'express'; const server = new X402Server({ payeeAddress: '0x...', minPriceMicroUsdc: 10_000n, // 1¢ minimum acceptedChains: [808080, 8453], }); const app = express(); app.use(server.express()); // 402 gate on every route app.get('/v1/data', (req, res) => { // req.x402.payerAddress is set when verified res.json({ analysis: '...' }); });

The server verifies receipt freshness, payee match, EIP-712 signature recovery, signer/payer cross-check, and replay (per-receipt-id dedupe with TTL pruning). All in-memory; zero deps beyond ethers v6.

cli — hyperspace-wallet

commanddoes
init <name>create identity, persist seed, print 24-word recovery
showprint did, EVM address, ed25519 pubkey, balance
pay <to> <amount>make a payment with smart routing or forced rail
discover <capability>search counterparties on the catalog API
policy [--per-tx --daily ...]view or set spend caps
session create <cap> <ttl>scoped delegation key
session listlist active sessions with remaining caps
recover <name>restore from 24-word mnemonic (stdin)
register --tier 0|1|2|3register on-chain via AgentRegistry
~ hyperspace-wallet init MyAgent
$ hyperspace-wallet init MyAgent Hyperspace Agent created DID: did:hyperspace:808080:0xb984625df9b00bf49cb033c4645378ab4ab6c0bfe5fa2c7a3110746911488eb3 Address: 0x22b5406b4A6894ba23BcF36a62C7a3Ec333c2e54 Recovery mnemonic (write this down): abandon ability able about above absent absorb abstract absurd abuse access accident account accuse achieve acid acoustic acquire across act action actor actress actual ad $ hyperspace-wallet pay did:hyperspace:808080:0xabc... 0.05 \ --currency USDC --rail x402 --for-model qwen3.5:32b Receipt: 0.05 USDC via X402 to did:hyperspace:808080:0xabc... (inference:qwen3.5:32b) @ 2026-04-29T20:35:42Z id: 8e2a4f1c rail: x402

framework recipes

The SDK is framework-agnostic. Drop-in wrappers ship for the five most common agent stacks:

LangChain

DynamicStructuredTool wrapping discover + pay. The agent uses pay() as a tool when its plan requires purchasing data or calling a paid API.

CrewAI (Python)

@tool-decorated wallet methods. Each crew member can have its own session key with independent spend caps.

Hermes

Wallet provisioned at agent boot. Direct pay() on tool invocation. Receipts cached to the agent's memory.

OpenClaw

Wallet plugin in the OpenClaw skill-pack format. Skills can declare a priceMicroUsdc and the SDK auto-handles 402.

Eliza

Crypto-native framework integration. Wallet derives from the agent's existing key material — no new keys to manage.

Anthropic / OpenAI

Use the Wallet for outbound payments from a managed agent. The SDK doesn't replace the agent host — it complements it.

Recipes: examples/ in the SDK source tree.

pricing & take rate

The SDK is MIT-licensed and free. No API key, no install gate, no rate limit. We earn on transactions routed through it.

transaction classtakerationale
native HSPACE channels3%our rail; sub-cent fees; zero counterparty cost
x402 USDC (Coinbase)5%commodity micropayments; high volume
ACP (Stripe checkout)2% over Stripeidentity + policy + reputation premium
AP2 mandates (Google / Mastercard)3% over railtrust framework adapter
MPP (Stripe / Tempo sessions)3% over railstreaming micropayment adapter
Skill marketplace listings15%App Store comp; bundles discovery + reputation + dispute
cross-rail smart routing+1%premium feature on Expert tier

Headline blended rate: ~10%. Volume discounts kick in at $10M annual GMV (-20%); custom revshare at $100M+.

Free thresholds

live demo — generate an agent identity

Click the button. Your browser will generate a fresh Ed25519 + secp256k1 keypair, derive the did:hyperspace:, and show the recovery mnemonic. This is purely client-side — keys never leave your browser, never hit our servers.

Click "generate" to create a fresh identity in your browser. No data is transmitted anywhere.

demo only

This demo creates the keypair using browser crypto.subtle. Real agents use storage: 'tee' or 'keychain' for hardware-backed storage. Don't put real money behind keys generated in a browser tab.

vs. the alternatives

Stripe LinkApple Paycustodial walletsHyperspace Wallet
customerhumanshumanshumans / agentsagents
identityemail + carddevicevendor accountcryptographic DID
payment railsStripe onlycard networksvendor-bound5 rails, smart routing
cross-merchant reputationon-chain, portable
spend policy enginelimiteddevice PINvendor UIdeclarative, in code
self-custodydevice-boundyes (TEE / passkey)
open-source SDKpartiallyMIT-licensed

We don't compete with Stripe Link — we use it. The ACP adapter is one of five rails. We sit above the payment processors, not against them.

sdks & types

TypeScript / Node

Package: @hyperspace/wallet-sdk · 44 source files · 18 test files · 161 tests passing · 144 KB tarball · MIT.

moduleexports
@hyperspace/wallet-sdkWallet, errors, types, version
/identityIdentityManager, KeyStore variants, DID functions, Sessions
/paymentsSpendHistory, IdempotencyStore, evaluatePolicy, selectRail, build/verifyReceipt
/reputationReputationModule (read scores, submit ratings, discover, dispute)
/chainChainClient, MultiRpcProvider, contract clients, A1_* constants
/adapters/native | x402 | acp | ap2 | mppper-rail adapter classes + config types

Python

Package: hyperspace-wallet · 34 source files · 4 test files · 36 tests passing · MIT · Python ≥ 3.10.

from hyperspace_wallet import Wallet, SpendPolicy, Receipt, PolicyDeniedError

Same API surface as TS, idiomatic Python (snake_case, dataclasses, async). Receipt JSON wire format is identical: same DID, same fields, same proofs.

faq

Is the SDK free?

Yes. MIT-licensed, no install gate, no API key required. We earn on transactions (5–15% take rate by class — see pricing).

Do I need to run a Hyperspace node?

No. The SDK reads/writes the chain via rpc.a1.hyper.space. Operators who want their own RPC pass rpcUrl in WalletConfig.

Can I use Stripe Connect with this?

Yes. The ACP adapter is a real Stripe REST client. Either pass apiKey (your platform's sk_...) or a Shared Payment Token issued via the user's consent flow.

Is this custodial?

No. Master seed never leaves the keystore. All signatures are local. The SDK doesn't have a server-side; everything runs in your process.

What happens if the chain is down?

The SDK's MultiRpcProvider retries across all configured endpoints with per-endpoint health tracking. Off-chain receipts (x402, ACP) work even with the chain unreachable — they only depend on the rail provider's API.

Does it work in browsers?

Core types and the demo above run in browsers. Full Wallet ships node:fs in the keystore — a browser-friendly entry with IndexedDB-backed storage ships in 0.2.0. The current alpha is Node-only.

How is reputation prevented from being gamed?

On-chain ReputationRegistry requires staking to register; slashing for misbehavior is built in. Ratings are tied to receipts (you can't rate without a payment record). Anti-Sybil via stake.

When mainnet?

The current chain is testnet (chain id 808080). Mainnet plan ships when contracts pass external audit and the dispute infrastructure is in place. Roadmap below.

roadmap

0.1.0α — now
  • 5 rail adapters, on-chain reads, MIT-licensed
  • Live a1 testnet, 198 tests passing across TS + Python
  • npm + PyPI publish workflows in CI
0.2.0browser
  • Browser-native entry — IndexedDB key store, WebCrypto AES-GCM
  • Passkey + WebAuthn-backed signing
  • Vite + ES modules CDN bundle
0.3.0hardware
  • Ledger / Trezor hardware-wallet signing
  • True TEE/Secure Enclave on macOS + Linux + Windows
0.4.0multi-chain
  • L2 support: Base, Arbitrum, Optimism, Polygon
  • Cross-chain DID resolution
0.5.0disputes
  • Full dispute resolution flow with on-chain attestations
  • 5-of-9 multisig oracle
1.0.0GA
  • External audit complete
  • Mainnet launch
  • Production SLA

changelog

0.1.0-alpha.22026-04-29
  • Live a1 testnet contracts deployed (AgentRegistry, PaymentChannel, ReputationRegistry, PaymentFacilitator, MarketplaceEscrow, WrappedUSDC). Full agent → wallet → chain → settlement loop verified live.
  • Hostname-first defaults — rpc.a1.hyper.space, no validator IPs in the public tarball. Operator opt-in via HYPERSPACE_RPC_USE_FALLBACK_IPS=1.
  • Multi-RPC failover with per-endpoint health tracking, batchMaxCount: 1 for chain compatibility.
  • Default 1-gwei gas-price plumbed through every write (chain validators reject below 1 gwei).
0.1.0-alpha.12026-04-29
  • First public alpha. Full Wallet class, did:hyperspace: identity, 5 rail adapters, spend policy engine, idempotency cache, unified receipt envelope, on-chain reputation reads, CLI, examples for LangChain/OpenClaw/CrewAI/Eliza/Hermes.
  • 198 tests passing across TypeScript + Python.