Soloraa
Developer platform

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

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

Install

installbash
npm install @soloraa/sdk
# or
pnpm add @soloraa/sdk

Five-line example

Submit a swap intent. The enclave reads on-chain wallet state, runs your policy, fetches and verifies the Pyth update, and signs only if every check passes. Your code never sees a private key.

examples/swap.tsts
import { SoloraaClient } from "@soloraa/sdk";

const client = new SoloraaClient({
    rpcUrl: process.env.SOLANA_RPC_URL!,
    enclaveUrl: process.env.SOLORA_ENCLAVE_URL!,
    walletPda: process.env.SOLORA_WALLET_PDA!,
});

await client.execute({
    action: "swap",
    protocol: "jupiter",
    inputMint: "EPjFW...USDC",
    outputMint: "So111...SOL",
    amount: 1000_000_000n,           // 1000 USDC
    constraints: {
        maxSlippageBps: 25,
    },
});

What the SDK does for you

Intent shaping

Your high-level action (swap, transfer, lend, rebalance) becomes a structured intent the enclave can policy-check. Account metas, token mints, decimals — all derived.

Enclave dispatch

The SDK calls the enclave HTTP API, receives the canonical 169-byte SOLORA_INTENT_V2 message, the 64-byte Ed25519 signature, and the enclave pubkey.

Broadcast & stream

Builds a Solana transaction with the Ed25519 verify ix prepended, signs as the relayer, broadcasts, and streams the lifecycle events back to the caller.

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.

Streaming execution events

For long-running agents you'll want the same 7-stage lifecycle the UI shows. client.stream() emits typed events so you can wire them into your own observability stack.

examples/stream.tsts
for await (const event of client.stream({ runId })) {
    switch (event.stage) {
        case "oracle":    metric("oracle.verified", { feed: event.feedId }); break;
        case "sign":      metric("intent.signed", { pubkey: event.pubkey }); break;
        case "verify":
            if (event.error) {
                // event.error.code, event.error.name, event.error.description
                alert("on-chain rejected", event.error);
            } else {
                metric("intent.confirmed", { sig: event.txSignature });
            }
            break;
    }
}

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.