
Fee routing
Splits every fee it collects between recipients nobody outside can see.

privatehooks is a privacy layer for programmable onchain hooks. Route fees, run a treasury and ship distributions without publishing every parameter, recipient and position — execution stays on public rails and stays verifiable.
Hooks it wraps

Public Chain. Private Hooks.
privatehooks is a privacy layer for programmable onchain hooks. Route fees, run a treasury and ship distributions without publishing every parameter, recipient and position — execution stays on public rails and stays verifiable.
Hooks it wraps

Fee routing
Splits every fee it collects between recipients nobody outside can see.
Rule hash
The routing logic is committed onchain and checkable by anyone.
Sealed split
Recipients and their shares never leave your side of the wall.
Exact totals
Prove 100% of collected fees followed the rule, down to the wei.

Treasury
Runs a balance sheet without publishing the portfolio behind it.
Hidden venues
Where the assets actually sit stays off the public record.
Threshold proof
Prove reserves exceed a number without naming a single position.
Auditor view
Grant one auditor the full detail, scoped to fields and to a window.

Distributions
Pays out to a list of holders without ever publishing the list.
Sealed set
The eligibility snapshot stays private after the payout clears.
Correct by proof
Prove every eligible holder got the right amount — and no one else did.
No profiling
Indexers see the execution, never the people behind it.
Commitments published per hookPublic rails, private internals
0
Verify proofDisclosure keys the protocol can readPublic rails, private internals
0
Verify proofAssets held in custody
0
Executions anyone can verify
0%
Bring the hook. Mark the fields that stay private, name who may see them, and ship on the same public rails as everything else.
Private recipients and splits

Public rule hash, private inputs

Per-field disclosure grants

Non-custodial, keyless, composable and portable — a layer over your hook, never a landlord on top of it.
A private hook composes like any other: contracts call it, indexers verify it, and the schema is open enough to take with you whenever you want.
Enter App01
Connect
Write a new hook or point privatehooks at one you already run. The existing logic keeps working — the privacy layer wraps it.
02
Mark & scope
Mark the fields that stay private, then grant disclosure per address, per field, per window — with an expiry and a revoke.
03
Deploy & prove
One commitment goes onchain. From there, prove a rule held or open a single field to a single viewer. Nothing else moves with it.
Wrap a hook you already run, write a new one, or define your own disclosure schema. Same protocol underneath, whichever surface you are on.
Wrap a hook you already run
Schema SDKWrite a new private hook
privatehooks LayerDefine your own disclosure schema
Hook StudioExecution stays provable to anyone. What becomes optional is the part that was never meant to be a broadcast: the internals.