Autonomous liquidity management for Solana LPs.
Deploy agents that monitor liquidity ranges, evaluate position health, and manage Meteora and Orca LP strategies with strict risk controls.
- Risk checks
- Default deny
- Execution
- Idempotent
- Pre-flight
- Mainnet sim
Agent telemetry
illustrative
Meteora DLMM
Bin range
Active bin 1
Orca Whirlpool
Tick range
Active tick 1
Risk gate
What it does
A supervised runtime for concentrated-liquidity strategies on Solana.
ponk runs one process per agent. Each agent observes pool state through first-class adapters, classifies position health, and proposes actions that must clear a default-deny risk gate before any signature is requested.
Range-aware supervision
Continuous evaluation of bin drift on Meteora DLMM and tick drift on Orca Whirlpools. Out-of-range, drifting, and stale positions are surfaced before they erode fee capture.
Strict risk engine
Allowlist, slippage cap, compute-budget cap, simulation outcome, and per-agent rate limits run on every action. No action is sent if any check fails.
Idempotent execution
Pre-flight idempotency lookup prevents double-spend on retry. Send phase has bounded retries with fresh blockhashes. Confirmation polling never re-sends.
First-class protocol adapters
Built for the two protocols Solana LPs actually use.
Each adapter speaks its protocol's native vocabulary. We never collapse bins into ticks or hide the difference behind a leaky abstraction.
Meteora DLMM
Discrete liquidity bins, dynamic step sizes
Bin range
Active bin 1
- Open / rebalance / collect on per-bin granularity
- Active bin drift detection
- Multi-strategy distribution shapes
- Token-2022 transfer-fee adjusted accounting
Orca Whirlpools
Concentrated liquidity, tick spacings
Tick range
Active tick -1
- NFT-init position open + close
- Tick-array PDA resolution
- Increase / decrease via tight ranges
- Fee collection alongside removal
Execution pipeline
Seven stages between intent and signature.
The execution layer is the only path that talks to Solana writes. Every action passes through the same deterministic sequence: build, simulate, risk-check, sign, send with bounded retry, confirm, persist.
Execution pipeline
Every action passes seven checks before a signature is ever requested.
- 01
Build
- 02
Simulate
- 03
Risk
- 04
Sign
- 05
Send
- 06
Confirm
- 07
Persist
Security-first controls
The browser is never the trust boundary.
Authentication is a signed challenge from the wallet. Dangerous actions require explicit confirmation. Secrets live behind the API surface, never in the frontend bundle.
- Wallet-signed nonce authentication
- Per-IP rate limiting at the auth surface
- Confirmation modals for every mutating action
- Server wallet held off-client
- Pre-flight idempotency on every execute
- Token-2022 transfer-fee aware accounting
Risk policy
default denypolicy: max_slippage_bps: 50 max_priority_fee_uLam: 1_000_000 max_daily_transactions: 64 max_hourly_failures: 6 min_sol_balance_lamports: 5_000_000 max_pool_staleness_secs: 60 max_position_staleness_secs: 60 program_allowlist: [meteora_dlmm, orca_whirlpool] token_mint_allowlist: operator_managed pool_allowlist: operator_managed simulation_required: true
An action is approved only when every check passes and a successful simulation result is attached.
Architecture
Five layers, each with a single responsibility.
API surface
- Axum, async
- Wallet auth
- Per-IP rate limit
- X-Request-Id correlation
Execution layer
- Build, simulate, sign, send
- Bounded send retry
- Single-shot confirm
- Idempotent persist
DEX adapters
- Meteora DLMM client
- Orca Whirlpools client
- Anchor instruction builders
- Mainnet-ground-truth tests
Risk + oracle
- Default-deny policy gate
- Pyth USD prices, TTL-cached
- Realized-vol ring buffer
- Allowlists, simulation gate
Storage
- Postgres, monthly partitioning
- Idempotent agent_actions
- Position snapshots
- Redis for hot position cache
Run agents under a strict supervisor.
Connect a Solana wallet, choose a pool, and configure a strategy. Every iteration is recorded; every action is gated; nothing fires without a fresh simulation.
