視monitoring
three on-chain events + one rest endpoint cover everything you need to operate kagura. wire them into your existing alerting.
events
| event | source | meaning |
|---|---|---|
TickEmitted | kagura-core | raw tick attestation. one per record_tick call. |
FundingTicked | kagura-vault | per-tick accrual. includes treasury_remaining for runway alerts. |
Deposited | kagura-vault | user deposited usdc. |
Withdrawn | kagura-vault | user redeemed shares. |
alert conditions
treasury runway < 7 days
FundingTicked.treasury_remaining divided by daily drain. If under 7 days, page the operator.
1const ev = vault.coder.events.decode(log) as FundingTicked;2const remaining = Number(ev.treasuryRemaining) / 1e6;3const principal = Number(ev.principalBefore) / 1e6;4const dailyDrain = principal * 0.22 / 365.25;5const daysLeft = remaining / dailyDrain;6 7if (daysLeft < 7) page("treasury runway", { daysLeft, remaining });tick gap > 3 × interval
If elapsed_ms on a fresh tick exceeds 3× the registered tick interval, the ticker bot was down. Check supervisor.
ticks per minute drops
Healthy ticker emits 1 tick per tick_interval. A drop in tps means RPC failures, rate limits, or a wallet without sol.
treasury hits zero
treasury_remaining = 0 on a tick = vault is paused-by-economics. Top up immediately or expect user complaints.
rest health
/api/health on the public site returns a small json with stage, program ids, and version. Subscribe to it for uptime monitoring.
1curl https://kagura.network/api/health2{3 "status": "ok",4 "name": "KAGURA",5 "stage": "pre-deployment",6 "network": "solana-devnet",7 "version": "0.1.0",8 "programs": {9 "core": "DbHae1rzcf5U8Jbrp5X9NFTcZfk4z12R2qMNgesmXNnC",10 "vault": "HQYVFcbezorwCqPK69keUAoe4p1zgPzCVDfJq4XWymk8"11 }12}