← journal
2026-06-10 · 2 min

OurGlass: recurring payments for Safe treasuries

OurGlass is the thing i just shipped, and the one i'm most quietly proud of on the contract side. it's a Safe App for recurring on-chain payments: the kind of plumbing DAOs actually need but nobody wants to babysit.

the problem

DAOs run on recurring obligations: retainers to other DAOs, contributor payroll, infra subscriptions. today every cycle is another proposal, another signature round, another chance for a payment to land late. the multisig is the bottleneck, every single month.

what i shipped

the paying Safe signs one agreement. after that, the payee charges itself each period, within a hard cap enforced on-chain, never above the agreed amount, never twice in the same period. revocable unilaterally whenever.

the part i like: there's no escrow, no streaming contract, no relayer. funds stay in the treasury until the moment they're charged. it's built on the MetaMask Delegation Framework (ERC-7710): you enable a minimal DeleGator module once, sign an EIP-712 delegation, and an ERC20PeriodTransferEnforcer caveat does the capping on-chain.

what i learned

two things stuck.

first, binding the signature to the exact terms. the delegation's salt is keccak256(terms), and the agreement itself is pinned to IPFS. change a comma in the terms and the signature is void. the legal-ish document and the cryptographic authorization are the same object. that's a cleaner guarantee than i expected to get.

second, the relayer was a crutch. i started with a hosted "1Shot" relayer to redeem the delegation, then ripped it out for a direct on-chain redeem where the payee (the one collecting the money) just pays the gas. removing the middle service made the whole trust story simpler to explain, which is usually the sign it was the right call.

what fought back

the boring-but-real stuff: routing disableDelegation through the module's execute correctly so revoke actually sticks, and Safe-iframe quirks (clipboard copy behaves differently inside the Safe App frame). most of the last mile was making it behave as an embedded Safe App, not the delegation logic itself.

what's next

  • harden the revoke + end-date paths and write more tests around the period enforcer.
  • real DAO-to-DAO retainer as the first live agreement.
  • see how it composes with the rest of the intuition payments stack (the fee proxy).