Skip to main content
A stream is a continuous flow of money between two wallets, denominated in a rate per unit time. Unlike transfers, which are discrete events, streams accrue value every second. Streams are ideal for:
  • Payroll / contractor pay — the recipient withdraws earned balance on their own schedule
  • Subscriptions — cancel any moment, get refunded for unused time
  • Service-tier SLAs — pay-per-millisecond for AI inference, compute, bandwidth
  • Agent-to-agent retainers — one agent pays another to keep availability

Anatomy

Key numbers on every stream:
  • flow_rate — amount per second (e.g. "0.00005" USDC = 0.00005/s0.00005/s ≈ 4.32/day)
  • wrapped_balance — sender’s locked-up funds powering the stream
  • buffer — reserved slack to prevent accidental underrun
  • runway_seconds — time until the wrapped balance runs out at current flow rate
  • recipient_balance — accrued, withdrawable by the recipient

Create a stream

This locks 1000intothestream,startsflowingat1000 into the stream, starts flowing at 0.00005/s, and keeps a 50buffer.Therecipientaccrues 50 buffer. The recipient accrues ~4.32/day and can withdraw at any point.

Recipient withdraws

Withdrawal creates a stream_withdraw transfer into the recipient’s wallet.

Top up or adjust

Pause and resume

Paused streams don’t accrue. Wrapped funds remain locked until cancellation.

Cancel

  • Accrued balance transfers to the recipient
  • Unused wrapped funds return to the sender
  • The stream record remains for audit

Runway and alerts

When runway_seconds drops below a threshold, Sly fires a stream_alert webhook and pushes a stream_alert SSE event to any connected agents that manage the stream:
Severity levels: warning (<24h), critical (<1h), exhausted (runway=0).

Agent permissions

When an agent creates or manages a stream, their wallet policy grants them granular permissions:
  • streams:create — open new streams
  • streams:modify — change flow rate, topup
  • streams:pause — pause/resume
  • streams:terminate — cancel
See wallet policies for how to scope these.

Why streams over periodic transfers

For anything ongoing, prefer a stream.