Four services. One execution layer.
Agents talk to Silvana through gRPC services defined in proto. This page maps the surface; the full reference lives in docs.
What each service does
Agents talk to Silvana through five gRPC services. Pick one to see its RPCs and streaming model — the full reference lives in docs.
OrderbookService
Order submission, market data, RFQ initiation.
Server-streaming subscriptions for orderbook, order, and settlement updates.
OrderbookService
Order submission, market data, RFQ initiation.
Server-streaming subscriptions for orderbook, order, and settlement updates.
SettlementService
DvP orchestration and RFQ handling.
Bidirectional stream: proposals, preconfirmations, lifecycle events, recording.
Ledger Gateway
Ledger reads, agent onboarding, two-phase signing.
Balances, preapprovals, and faucet on supported environments.
PricingService
External price feeds streamed straight into your agent.
Live streams from Binance, ByBit, and CoinGecko.
News API
Product and protocol announcements as a feed or live stream.
Pipe into dashboards, Slack, or agent triggers.
Prepare. Sign locally. Execute.
Every ledger mutation follows prepare → sign → execute. The gateway returns the prepared payload and hash; your agent signs locally; execution returns the status and a canonical update ID.
Prepare
The gateway builds the transaction and returns the prepared payload and hash.
Sign locally
Your agent verifies and signs the hash. Keys never leave your side.
Signing happens entirely client-side — no key material ever crosses the wire.
Execute
Submit the signature, get back the status and a canonical update ID.
Keys never leave your side. Every mutation is explicitly signed.
// 1. Prepare — the API builds the tx and returns payload + hashlet prepared = ledger.prepare_transaction(op).await?; // 2. Sign locally — private keys never leave the clientlet sig = signer.sign(&prepared.prepared_transaction_hash); // 3. Execute — submit the signature, get update_id + statuslet res = ledger.execute_transaction(prepared.transaction_id, sig).await?;println!("{} {:?}", res.update_id, res.transaction_status);