Skip to main content
Kora is a Rust-based gasless relay that sponsors network fees on behalf of agent wallets. With Kora running, agent wallets never need SOL for gas — they only need USDC for x402 payments.

Why Kora?

Without Kora, every agent wallet needs SOL for transaction fees. This creates friction:
  • New wallets must be funded with SOL before they can do anything
  • Agents need to manage two balances (SOL for gas + USDC for payments)
  • Small SOL balances can get depleted, causing unexpected failures
With Kora, the Kora signer pays all gas fees. Agent wallets are truly gasless.

Funding Breakdown

AccountWhat it paysHow to fund
Kora signerSOL network fees for every agent transactionsolana airdrop (devnet) or transfer SOL (mainnet)
Agent walletsNothing — completely gaslessNo SOL needed
Master walletSOL for account rent (e.g., new ATA creation at ~0.002 SOL)Configured in .env

Setup

1

Install Kora CLI

cargo install kora-cli
2

Export Your Keypair

Use a wallet you already control (e.g., Phantom) so you own the Kora signer address.From Phantom: Settings → Security & Privacy → Export Private KeyConvert the base58 key to JSON format:
node scripts/phantom-to-kora.mjs YOUR_PHANTOM_BASE58_KEY
This writes kora/kora-signer.json.
Delete the base58 key from your terminal history after running this command. The kora/kora-signer.json file is .gitignored and will never be committed.
3

Fund the Signer

solana airdrop 2 <YOUR_PUBLIC_KEY> --url devnet
A 2 SOL airdrop gives you ~400,000 transactions worth of gas.
4

Configure Environment

.env
KORA_RPC_URL=http://localhost:8080
KORA_SIGNER_PRIVATE_KEY=kora/kora-signer.json
5

Start the Kora Node

kora --config kora/kora.toml --rpc-url https://api.devnet.solana.com rpc start --signers-config kora/signers.toml
Expected output: INFO kora_lib::rpc_server::server: RPC server started on 0.0.0.0:8080
6

Verify Connectivity

curl -s -X POST http://localhost:8080 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getConfig","params":[]}'

Configuration Files

FilePurpose
kora/kora.tomlNode endpoints and general configuration
kora/signers.tomlSigning permissions, limits, and allowed addresses
kora/kora-signer.jsonThe fee-payer keypair (.gitignored)

Audit Trail

When Kora sponsors a transaction, the audit log records:
  • gasless: true
  • feePayer: "kora"
  • The Kora signer’s public key
This distinction is visible in the audit://wallet-logs resource and the CLI dashboard.