Skip to content
Husk

Husk

Hi I am Husk đź‘‹ Click to see more đź‘€

Created on 5th September 2026

•

Husk

Husk

Hi I am Husk đź‘‹ Click to see more đź‘€

The problem Husk solves

Most onchain holders carry naked bag risk around macro events — CPI, FOMC, NFP, token unlocks — but options desks are built for professionals: wrong expiry windows, unfamiliar strikes, and no simple “insurance for my bag” flow.

Husk turns calendar.thetanuts.finance into a consumer coverage shelf on Base mainnet. You connect a wallet, pick the event that can hurt you, and get a defined-risk long put spread sized by a deterministic underwriter (Gemini only parses language — it never picks strikes). Max loss is the premium. If the bag dumps through the floor, payout settles in USDC via Chainlink TWAP after the print.

Three ways in, one engine:

  • Home calendar — browse, filter, open a policy card with stress simulation
  • Ask Husk — natural language → same PolicyQuote → sign in wallet
  • Positions — track active / in-flight RFQs and renew into the next event

We route to OptionBook when liquidity matches, else OptionFactory RFQ when expiry must cross the event — the load-bearing Thetanuts integration for event-aligned coverage.

Live Base mainnet proof (demo wallet 0x078c…ceD1a, $1 FOMC RFQ via UI):

StepTransaction
USDC approve ($1 → OptionFactory)0xe341ebfc…3f49
RFQ requestForQuotation0x8fe7b1f8…ab16e

Status: rfq_open — pipeline encoded and broadcast correctly; at $1 notional professional makers typically do not bid (honest liquidity, not a product bug). Larger tickets or the OptionBook path are the path to an instant fill.

Challenges we ran into

1. RFQ gas limit vs public RPC

requestForQuotation estimates ~140M gas, but MetaMask’s default Infura RPC rejects anything above 25M per tx (exceeds maximum per-tx gas limit: 140000000 > 25000000). Approve succeeded; RFQ failed until we switched Base RPC to Alchemy / mainnet.base.org and documented this in the README.

→ Approve tx · RFQ tx (after fix)

2. Event-aligned expiry — Book vs RFQ

OptionBook orders use standard expiries; macro coverage needs expiry at the next Chainlink TWAP after the print. We built a router: try Book match first, fall back to Factory RFQ with buildSpreadRFQ + encrypted ECDH keys in Supabase.

3. LLM safety — numbers must not be invented

LangGraph agent parses intent only; all strikes, premiums, and payouts come from @thetanuts-finance/thetanuts-client (previewFillOrder, calculatePayout). Guardrails refuse calls, leverage, and “max profit” requests. Ask Husk shows a human summary + sign CTA, not raw calldata in chat.

4. SDK r12 settlement surface

Thetanuts SDK 0.3 removed user-callable payout(); settlement is factory-driven. Our keeper observes isExpired / isSettled / calculatePayout instead of encoding a trigger that no longer exists.

5. AgentKit vs disk / scope

Coinbase AgentKit’s dependency tree blew local disk limits, so autonomous writes use ethers + a fail-closed assertSafetyPolicy (cap-gated, PUT/PUT_SPREAD only, exact USDC approve) — same safety semantics, less bundle weight.

6. Honest liquidity at hackathon size

We intentionally ran a $1 USDC RFQ on mainnet to prove end-to-end encoding. MMs did not offer — expected at sub-economic size. We treat that as a feature: the system works; liquidity is the real-world constraint.

Tracks Applied (2)

BEST PRODUCT BUILT ON THE THETANUTS SDK

Thetanuts Finance

AI Ă— OPTIONS

Thetanuts Finance

Technologies used

Discussion

Builders also viewed

See more projects on Devfolio