Skip to content
VIGYL
Solana Keeper Network

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.

networkreading the ridges...
The gap

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-bot.log

$ ./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.

$ _

The standard

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.

Trigger 00

Cron

Time is the oldest signal.

Vixie cron expressions, parsed on the node. Roll expiries at the hour, distribute rewards nightly, sweep dust weekly.

schedule0 * * * *
Trigger 01

Account State

Watch the ledger, not the clock.

Account data-hash diffs. When a vault, position, or config account changes shape, the beacon lights.

conditiononChange(account) -> diff(data_hash)
Trigger 02

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.

thresholdSOL/USD < 120.00
Trigger 03

Slot & Epoch

Ride the chain's own cadence.

Slot and epoch boundary events. Anchor work to Solana's heartbeat -- epoch rollovers, stake warmup, slot windows.

boundaryonEpochBoundary()

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.

What you get

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.

Bond & Slash

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

typescript
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

shell
vigyl job create \
  --trigger price --pair SOL/USD --below 120 \
  --program Vpr... --ix liquidate \
  --fund 0.5
$VIGYL

Supply 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.

Keep the fire

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.

install
npm i -g vigyl-cli
run a keeper
# Bond $VIGYL and start relaying
vigyl keeper bond 5000
vigyl keeper run --max-concurrent 3
$VIGYLJbkTcvPA5nP7iQHrxaoGQAcA1JwBFZANZ5vAJvtpump