Skip to main content
Solana mainnet only, today. Other chains are not on the roadmap until we close the Solana coverage to >90% of the addressable peg-bearing supply. See project competitive landscape for context.
Pyth and Switchboard are price oracles: “what is the dollar price of X right now?” Pegana is a state oracle: “is X still doing what it promises?”A price oracle answers a continuous numeric question. A state oracle answers a categorical one — PEGGED / DRIFT / DEPEG / CRITICAL / UNKNOWN. The consumer of a state oracle wants a sticky event (“USDC just entered DRIFT”), not a continuous number to liquidate against.Pegana reads from Pyth (we use SOL/USD and Redemption Rate feeds) — they’re upstream, not competitors.
Chaos Labs is a multi-chain risk platform with a broad product suite (AI, analytics, oracles). Their oracle product overlaps conceptually with Pegana, but their public surface is the enterprise integration tier and their oracle isn’t Solana-specific.Pegana is a focused, Solana-native peg-risk oracle with full open-source code, MIT license, public API without keys, and per-asset calibration for Solana’s LST and yield-bearing landscape. The two products coexist at different scopes — Chaos enterprises don’t ship their own MCP server; Pegana doesn’t compete on EVM risk.
stableguard.org covers fiat stables across multiple chains. Their coverage of Solana is a sub-set of ours; we cover 5 fiat stables on Solana, they cover those 5 plus EVM equivalents. Pegana also covers LSTs, yield-bearing, and CDPs (hyUSD), which stableguard does not.Both products are valid; choose by audience. If you operate cross-chain, use stableguard for stable coverage plus Pegana for Solana-specific LST and yield-bearing. If you’re Solana-native, Pegana covers more of your asset surface.
Pegana is in calibration as of 2026-06-01. The read paths — REST API, WebSocket and MCP — are live in production. The alert channels (Telegram bot and webhooks) are in a private calibration window: alerts are generated and persisted on live data, but delivery to public subscribers stays gated until the verdict rule confirms calibration v1 on 2026-06-11. Production deploy: Hetzner CPX32, all 11 services healthy.Reach raffxweb3@gmail.com for early integration conversations.
Soft sliding window: 300 req/min per IP on the REST API. WebSocket allows 5 concurrent connections per IP. No limit on MCP free tools or Telegram bot.Hit the limit? Contact raffxweb3@gmail.com — production callers get bumped.
No for any read path (REST, WebSocket, Embed, MCP free tools, Telegram). No for MCP paid tools — they settle in USDC via x402 instead of a key. Yes (a JWT, obtained via Telegram Login) for user-scoped endpoints — your subscriptions, your webhook configuration, your delivery history.
Public read paths (REST, WebSocket, Embed, Telegram bot) are free. Webhooks are free during the dogfood window. MCP paid tools settle in USDC on Solana via x402, 0.0010.001 – 0.0005 per call.See pricing for the full table.
Source freshness depends on Solana. If RPC stops responding, our on-chain decoders (Hylo CR, LST stake pool reads) stall. The engine flips affected assets to UNKNOWN after 30 seconds of stale data. Subscribers see UNKNOWN and should not act.Pyth’s SSE stream is independent of Solana RPC and may continue updating — yield-bearing NAV signals can therefore stay live while LST intrinsic stales out. We do not invent values for the stale fields.
Criteria:
  • Mainnet only — no devnet feeds
  • Verified mechanism — there must be a canonical intrinsic source (Sanctum, Pyth, on-chain decode). No “we’ll figure it out” assets
  • Liquidity threshold — at least one DEX route at $10k notional with <50 bps slippage
  • Operator trust — assets whose issuer has visibly defaulted or had a recent exploit are frozen (e.g., dSOL after Drift 2026-04-01). Frozen assets stay in assets.toml with active = false for historical continuity — the engine no longer polls them and they don’t count toward the active 22.
Add requests via GitHub Issues.
A 0.0 – 1.0 quality indicator combining market depth, source freshness, and decoder health. Defaults to act-when-> 0.9. See confidence score.
Everything: the API, the indexer, the engine, the dispatcher, the bot, the MCP server, the web app, this docs site. All MIT. github.com/lrafasouza/pegana.
Yes. The full stack runs in a docker-compose.yml. You’ll need:
  • Postgres (TimescaleDB recommended)
  • Redis
  • Solana RPC endpoint (Helius, Triton, or your own)
  • Pyth Hermes endpoint (hermes.pyth.network)
  • Optional: Telegram bot token (for alerts), x402 facilitator URL (for MCP paid)
See README.md for ops setup, crates/ for the Rust services, and docker-compose.local.yml for a working example.
Reproducible to the last bit. Every input (Sanctum sol_value, Pyth feeds, Jupiter quotes, Hylo IDL decode) is logged with millisecond timestamps. The EWMA α, threshold tables, and dwell timers are in assets.toml — open the repo, read the parameters, re-run from any historical snapshot.We don’t claim to predict. We claim to reproduce.
Trust. A peg-risk oracle has to be auditable end-to-end. Closing the code would ask consumers to take “we computed discount = 1 − market / intrinsic” on faith. We’d rather every consumer can re-run the engine on a recorded input file and verify the output.Also, more practically: the team is one person. Open source is the cheapest path to ecosystem leverage.

Still have a question?

Open an issue at github.com/lrafasouza/pegana/issues, or email raffxweb3@gmail.com.