Someone has to keep the light on.
VIGYL is Solana's keeper network. Bonded operators watch for triggers and relay transactions on-chain, staking $VIGYL against their word. After Clockwork went dark, the ridges have been quiet. We keep the fire.
After Clockwork went dark, the ridges have been quiet.
Solana programs cannot wake themselves. Vests unlock, positions expire, rewards accrue -- and someone must send the signature.
Since Clockwork sunset in 2023, every protocol runs its own crank bot. One process, one wallet, one point of failure -- and no economic guarantee that the transaction ever lands. When the bot dies at 4am, the vest stays locked.
$ ./crank --job vesting-unlock --wallet hot.json
[03:14:07] tick ok -- next in 30s
[03:14:37] tick ok -- next in 30s
[03:15:07] tick ok -- next in 30s
[04:02:11] process exited: out of memory
[04:02:11] no keeper assigned. vest still locked.
$ _
Four triggers. One standard.
A beacon raised a set number of fires to encode its message. VIGYL keeps the convention: the signal count tells the network which condition fired.
Cron
Time is the oldest signal.
Vixie cron expressions, parsed on the node. Roll expiries at the hour, distribute rewards nightly, sweep dust weekly.
0 * * * *Account State
Watch the ledger, not the clock.
Account data-hash diffs. When a vault, position, or config account changes shape, the beacon lights.
onChange(account) -> diff(data_hash)Price Threshold
Pyth pull, on your terms.
Pyth pull-oracle thresholds on SOL, BTC, and ETH. Cross the line and the signature is sent within the slot.
SOL/USD < 120.00Slot & Epoch
Ride the chain's own cadence.
Slot and epoch boundary events. Anchor work to Solana's heartbeat -- epoch rollovers, stake warmup, slot windows.
onEpochBoundary()Bonded keepers rotate by weight. Execution proofs land on-chain. Miss your assignment and lose your bond -- half burned, half paid to the job owner.
A keeper economy, not a lone cron job.
Bonded rotation, on-chain proofs, and a one-line integration. The network carries the reliability so your protocol does not have to.
Skin in the game.
Keepers post a $VIGYL bond to enter rotation. Assignments are weighted by bond size. Take an assignment and miss it, and the bond is slashed -- half burned, half paid to the job owner as compensation. Reliability becomes an economic guarantee.
Simulator
Dry-run any job before it lands. Compute-unit estimates, priority-fee percentiles, and a daily cost projection from real network conditions.
Execution proofs
Every landed transaction commits a proof on-chain: which keeper, which slot, what latency. Failures reassign to the next bonded operator.
Schedule from your program in one line
import { vigyl } from "@vigyl/sdk";
// One line. The keeper network sends the signature when the trigger fires.
await vigyl.schedule({
trigger: { kind: "cron", expr: "0 0 * * *" },
target: {
program: "Vpr...",
instruction: "distributeRewards",
accounts: [vault, treasury, mint],
},
fund: 0.25, // SOL, tops up execution fees
});Or from the command line
vigyl job create \
--trigger price --pair SOL/USD --below 120 \
--program Vpr... --ix liquidate \
--fund 0.5Supply follows the work.
The token is wired to network activity, not emissions. Registration fees burn in full, executions pay the treasury, slashes burn half the bond. As the keeper network grows, more $VIGYL is locked in bonds and more is taken out of circulation.
10 $VIGYL
Registration burn
Every job registration burns the fee in full from the owner's wallet -- no treasury skim, no recycling.
30 bps
Execution fee
Each landed execution routes a fee to the treasury, funding buyback and burn.
50 / 50
Slash split (% burn / % owner)
A slashed bond is part burned, part paid to the job owner who was let down.
100 $VIGYL
Minimum keeper bond
Every active keeper locks at least this much $VIGYL to stay in rotation.
Every burn is a real SPL burn -- registration fees from the owner's account, slash burns from the bonded vault. The mint authority is never needed, so the supply mechanics hold unchanged under a renounced-authority launch.
Signals travel further than voices.
Bond $VIGYL, watch for triggers, relay transactions on-chain. The next ridge is waiting for your fire. Install the CLI and join the network.
npm i -g vigyl-cli# Bond $VIGYL and start relaying
vigyl keeper bond 5000
vigyl keeper run --max-concurrent 3