Solora

SDK · v0.3.0 · published

Any agent that can describe an intent can run on Soloraa.

The built-in agents are not a closed set. @soloraaa/sdk exposes the same primitives the catalogue uses — describe an action, the enclave signs only what your policy allows, the chain verifies before funds move.

new in 0.3

Zero-setup mode: new SoloraaClient() with no arguments points at the hosted relayer at relayer.soloraa.tech install, call, ship. The SDK now talks to the relayer instead of the enclave directly, so consumers don't have to run their own TEE to get started.

Install

installbash
npm install @soloraaa/sdk @solana/web3.js
# or
pnpm add @soloraaa/sdk @solana/web3.js

Five-line example

Submit an enclave-signed transfer cycle. The default constructor points at the hosted relayer — no enclave, no keypair, no env vars. Your code never sees a private key.

examples/transfer.tsts
import { Keypair } from "@solana/web3.js";
import { SoloraaClient } from "@soloraaa/sdk";

const client = new SoloraaClient();

const result = await client.executeTransfer({
    destination: Keypair.generate().publicKey.toBase58(),
    amountLamports: 2_000_000,
});

console.log(result.signature, result.explorerUrl);

What the SDK does for you

Intent shaping

Your high-level request (destination, amount, cycle tag) becomes a structured intent the relayer hands to the enclave for policy evaluation and signing.

Relayer dispatch

The SDK POSTs to /execute-cycle on the relayer. The relayer forwards to the enclave, which produces the 169-byte SOLORA_INTENT_V2 message and the 64-byte Ed25519 signature.

Broadcast & confirm

The relayer assembles the on-chain transaction (Ed25519 verify ix + execute_transfer), signs as the fee payer, submits to Solana, waits for confirmation, and returns the signature + explorer URL.

What the SDK won't let you do

These aren't bugs — they're the point.

  • Hold a private key

    There is no signing key in user space. The enclave holds the Ed25519 secret sealed to its image hash.

  • Bypass wallet.policy

    The enclave fetches the on-chain policy on every call. Any intent outside it is refused before signing.

  • Reuse a signed intent

    Every intent commits to wallet.nonce. The on-chain verifier rejects with IntentNonceMismatch.

  • Target arbitrary programs

    CPI targets must appear in wallet.policy.allowed_programs. Authority-controlled, capped at 16 entries.

Self-hosting the relayer

The hosted relayer at relayer.soloraa.tech is fine for demos and single-tenant trials. For real production, deploy your own relayer + enclave and point the SDK at it.

multi-tenant.tsts
const client = new SoloraaClient({
    relayerUrl: "https://relayer.my-deployment.com",
    walletAuthority: "<your wallet authority pubkey>",
    agentId: "market-maker-1",
});

await client.executeTransfer({
    destination,
    amountLamports: 2_000_000n,
    cycle: 42,
});

The repo's PRODUCTION_CUTOVER.md walks the four-phase deployment (local end-to-end → Marlin Oyster CVM → real Jupiter swap intents → mainnet) with commands.

Integration partners

Soloraa is designed to be the cryptographic execution surface between an AI agent and a Solana DeFi protocol. If you maintain a venue or model and want to publish a curated agent, the integration cost is the policy schema and the program allowlist entry.