Agents are not magic.
Every LP agent, ours or anyone else's, is a finite piece of code making decisions on noisy market data. It can be right on average and wrong on any given day. It can be wrong for a week if the market behaves in a way the strategy didn't anticipate. The honest version of automation is that it removes some kinds of human error and adds some kinds of model error.
We talk about failure modes openly because pretending they don't exist is the fastest way to lose your trust. You'll see them either way: in the activity feed, in the in-range percent, in your PnL. Better to name them up front.
Bad regime.
An agent's strategy is tuned for a particular kind of market. Solaris, for example, is tuned for the volatility regime SOL/USDC has had over the past several quarters. If the regime changes, mean volatility doubles, or trend flips into chop, the parameters that were optimal can become suboptimal overnight.
We monitor a rolling window of agent performance. When a strategy underperforms its expected envelope for long enough, we either retune it or pause it. Retuning is the better outcome. Pausing is the failsafe.
Fee stall.
Fee stall is when an agent collects fees that look reasonable on paper, but the underlying inventory keeps drifting in a way that costs more than the fees. The agent thinks it's earning. The vault thinks otherwise.
This is a sneaky failure mode because the fee feed is green even as the PnL is red. Lyra's vault PnL is always the total, fees minus inventory drag, not just fees. If you ever see strong fee numbers but a flat or negative PnL, fee stall is the most likely cause.
RebalanceLiquidity errors.
On Solana, the program ix that closes and reopens an LP range can fail. It can fail because slippage was tighter than the realized swap. It can fail because a bin became inactive between the agent's decision and the chain's execution. It can fail because of a generic transient RPC issue.
We saw this with Mako recently. Mako hit a repeatable RebalanceLiquidity failure on its target pool. Rather than retry blindly and burn gas, we paused Mako at the env level and put it into paper mode while we shipped a retry-with-backoff fix. The retry path is now deployed and Mako will return to live only after we see clean reshape behavior across a holding period.
We always tell you when an agent is paused. The dashboard reflects it. The reshape feed shows the failed transaction with a clear status. We don't quietly bury bad runs.
RPC and infra outages.
Lyra agents talk to Solana through RPC providers. Those providers occasionally go down, slow down, or return stale data. When that happens, agents lose their freshest view of the world. The custody program is designed so that this never costs you money. It costs you a delay in reshapes, not a leak.
If an RPC outage extends, agents stop reshaping until the connection is healthy. Your underlying LP positions stay where they are, fee accrual continues at whatever range the agent left, and withdrawals keep working through a separate path. We have multiple RPC providers and a degraded mode that prefers safety over reshape activity.
How Lyra ranks agents.
An agent gets to run live capital only after it shows a positive 30-day PnL on a paper book. The paper book uses real prices, real volume, real reshape costs, just simulated capital. If the agent can't survive thirty real days on paper, it doesn't get your USDC.
Once live, the same 30-day window is the demotion test. If a live agent's trailing PnL goes negative, we move it back to paper or pause it. We re-promote only after another clean paper period. This rule is mechanical, not vibes.
The kill-switch.
The Lyra custody program has a pause function. When toggled, it stops new deposits and stops new agent allocations. It does not stop withdrawals. We can pause one agent or the whole strategy. The pause flag is on-chain, not in our dashboard, so you can verify the state directly via the program.
We use the pause for two reasons. First, when we ship a new agent, we pause briefly to migrate state. Second, when we see something we don't understand, we pause to investigate before any more capital flows in.
Withdrawals always work.
Even if every agent is paused, even if reshape is broken, even if our backend is down, withdrawals work. Your USDC is held by program-derived accounts on Solana, not by Lyra. The withdraw instruction in the custody program does not depend on the agent runtime. As long as Solana is producing blocks, you can pull your funds out.
If reshape is mid-flight, settlement may take a moment while positions roll back to USDC. But the path is open and it does not require us to be alive. That's the point of non-custodial.
