Skip to main content

Claim with AI

Recipients can claim unlocked Sablier vesting streams from the terminal by asking an AI coding agent in plain English. The agent discovers claimable streams, previews the transaction plan, and asks you to sign with your wallet.

This guide focuses on sablier-withdraw-vesting, the skill for withdrawing unlocked tokens from Lockup vesting streams on EVM chains and Solana.

App availability

app.sablier.com is not being deprecated. The EVM app will remain available for claiming until June 2028. The limitation is creation: new EVM streams cannot be created from app.sablier.com.

solana.sablier.com is the app being deprecated. For Solana claims, use the AI skill or interact with the program directly.

Prerequisites

Agent

Claude Code CLI, not the desktop app

The skill runs in Claude Code, the terminal CLI. The Claude desktop app (claude.ai chat client) cannot install skills or sign on-chain transactions on your behalf.

Shared tools

  • curl and jq, for talking to the Sablier indexer and parsing transaction receipts.
  • A wallet that controls the stream recipient address.
  • A small native-token balance for transaction fees.

EVM tools

Solana tools

  • A Solana wallet that controls the recipient public key.
  • Enough SOL to cover transaction fees, plus the program withdrawal fee when it is nonzero.

Install

Add the withdraw skill to your agent:

npx skills add sablier-labs/sablier-skills --skill sablier-withdraw-vesting

This pulls the skill from sablier-labs/sablier-skills and registers it under ~/.claude/skills/sablier-withdraw-vesting (global install) or ./.claude/skills/sablier-withdraw-vesting (project-local). Claude Code auto-discovers it in new sessions.

EVM Lockup streams

Prompt

Open Claude Code (or Codex) in any working directory and ask in plain English. The skill accepts up to three optional arguments: chain, wallet, and token. It asks for anything missing.

withdraw everything I can claim from Sablier
claim my Sablier streams on Ethereum
withdraw my Sablier USDC vesting on Base for 0xMyWalletAddress

There is no stream URL to copy. The skill queries the Sablier indexer for active, non-depleted streams where your wallet is the recipient, then keeps only streams with a positive withdrawableAmountOf at the current block.

Terminal session running the skill
Terminal session

Discovery and batching

For EVM chains, the skill walks through this flow:

  1. Chain discovery: if you did not name a chain, it asks the indexer where your wallet has active streams. It auto-picks a single match or asks you to choose.
  2. Stream discovery: it pulls every non-depleted stream where you are the recipient on the chosen chain, then drops streams with withdrawableAmountOf == 0 via one Multicall3 round trip.
  3. Selection: it defaults to draining every eligible stream. You can narrow the selection before signing.
  4. Grouping: it splits the selection by Lockup contract address. Each group becomes one withdrawMultiple call and one signature.
  5. Preflight: it estimates gas per group, computes the required MSG_VALUE (the max calculateMinFeeWei on Lockup v3.0+, 0 on v1.x and v2.x), and verifies that your native-token balance can cover the whole batch.
  6. Preview: it prints the batch and waits for you to reply literally YES.
  7. Broadcast: it opens one browser tab per group on localhost:9545; you approve each transaction in your browser wallet. cast send --browser routes signing to the extension, so your private key never enters the terminal or chat.
  8. Receipt verification: it polls each receipt for up to 5 minutes, then scans logs for InvalidWithdrawalInWithdrawMultiple events (Lockup v2.0+) so silently failed streams are surfaced.

This works across every EVM chain where Sablier Lockup is deployed. See Lockup deployments for the full list. One invocation handles one chain; re-run the skill for another chain.

Preview

Before any signature request, the skill prints a human-readable preview covering every group it is about to broadcast. Trimmed example for a wallet holding v1.2 USDC streams and v4.0 SABL streams on the same chain:

Chain: Ethereum (1)
Signer: 0xOwner... (matches recipient)
Total fee: 0.0005 ETH
Estimated gas: 0.0021 ETH

Group 1/2 -- Lockup Linear v1.2
Contract: 0xAAA...
Streams (2):
LL2-1-887 -> 120 USDC (sender 0xc517...063c)
LL2-1-902 -> 45.5 USDC (sender 0xc517...063c)
Group fee: 0 ETH (non-payable)

Group 2/2 -- Lockup v4.0
Contract: 0x93b37Bd5B6b278373217333Ac30D7E74c85fBDCB
Streams (3):
LK3-1-42 -> 1,234.56789 SABL (sender 0xab12...cd34)
LK3-1-58 -> 250 SABL (sender 0xab12...cd34)
LK3-1-77 -> 100 SABL (sender 0x99aa...bbcc)
Group fee: 0.0005 ETH

Per-token totals:
USDC: 165.5
SABL: 1,584.56789

Confirm broadcast for 2 transactions?
Reply exactly: YES

Anything other than a literal YES aborts before any transaction is broadcast.

Batch preview before broadcast
Preview

Signing and verification

The skill charges no markup. Costs are limited to on-chain gas and, on Lockup v3.0+, the protocol fee returned by calculateMinFeeWei, which is frequently 0.

Browser wallet signing prompt
Wallet signing

After each group lands, the skill prints per-stream https://app.sablier.com/vesting/stream/{alias} links so you can spot-check the result.

Post-broadcast confirmation
Tx confirmation

Solana Lockup streams

Prompt

The same skill covers Solana mainnet-beta. Pass solana as the chain and provide the recipient public key:

withdraw my Sablier streams on Solana for <my-base58-pubkey>

Discovery and batching

Solana uses a single-stream claim flow. There is no withdrawMultiple equivalent that fits Solana's 1232-byte transaction limit, so re-run the skill once per stream.

The Solana flow is:

  1. Stream discovery: the skill looks up claimable Solana streams for the recipient public key.
  2. Selection: you choose one claimable stream.
  3. Preflight: the skill checks the currently withdrawable amount and the required fee.
  4. Preview: it shows the stream, token, recipient, and fee before signing.
  5. Broadcast: you sign one transaction for the selected stream.
  6. Verification: the skill checks the resulting transaction and prints the outcome.

Costs and app status

The Solana protocol fee is the program's WITHDRAWAL_FEE_USD constant. It is currently 0 on mainnet; otherwise it is about $1 in SOL via Chainlink.

Sablier on Solana is in maintenance mode. Creating new Solana streams and airdrop campaigns is no longer supported, and solana.sablier.com is the app being deprecated. See Sablier on Solana for protocol details.

Troubleshooting

Shared

"No active Sablier streams were found". Either the wallet address is wrong, the connected account is wrong, or the streams live on a different chain than the one you named. Re-run without a chain to let the skill scan indexer-wide.

"Nothing currently unlocked". Streams exist, but every one has withdrawableAmountOf == 0 at this block. Wait for more tokens to vest and retry.

Insufficient native balance. Fund the wallet with the chain's native token to cover transaction fees, plus any protocol fee. The preview prints the exact shortfall.

Transaction still pending after 5 minutes. The skill stops polling and prints the hash. Check the explorer for the chain. If it confirms later, you are done; if it gets dropped, re-run the skill.

Declined a signature mid-batch. Earlier groups that already broadcast stay confirmed. The skill stops and tells you which groups were not attempted. Re-run the skill to pick up the rest.

EVM

cast: command not found. Foundry is not installed or is not on PATH. Install it from getfoundry.sh and start a new shell.

cast send does not recognize --browser. Your Foundry is too old. Run foundryup; the skill's prerequisite check enforces this and stops early.

Some streams silently failed. Lockup v2.0+ emits InvalidWithdrawalInWithdrawMultiple instead of reverting when an individual stream in the batch cannot be withdrawn. The skill scans receipt logs and prints the affected stream IDs. Re-run the skill to retry the surviving streams, or check the failed stream on app.sablier.com for a hint (cancelled, hook revert, etc.).

Solana

Multiple streams are claimable. Re-run the skill once per stream. The Solana transaction size limit prevents one withdrawMultiple-style claim from covering the whole wallet.

The fee is nonzero. The Solana program fee follows WITHDRAWAL_FEE_USD. Fund the wallet with enough SOL for the network fee and withdrawal fee, then retry.

Payments streams

For Sablier Payments (Flow) streams, install the sibling skill:

npx skills add sablier-labs/sablier-skills --skill sablier-withdraw-open-ended-stream

Same shape: natural-language prompt, indexer-driven discovery, browser-wallet signing, applied to open-ended Flow streams instead of vesting Lockup streams. See AI Agents for the full skill catalogue.