safe-wei
safe.wei by link
safe.wei is a Safe wallet interface that runs entirely in the browser and reads the chain through the user's wallet. Everything it does starts from a link: you build the link, a person opens it, checks it, and signs with their own wallet. You never sign, send or hold keys. A link only proposes; safe.wei recomputes everything it shows (the SafeTx hash against the Safe's own getTransactionHash, simulations, decoded calls) and never trusts the link.
Gateways (any works; prefer the one the user uses): https://safe.wei.limo/, https://safe.wei.is/, https://safe.caza.la/. The full reference is docs/links.md in the safe.wei repository.
Pick the right link
| The user wants to… | Link |
|---|---|
| Open a Safe | #/<safe> (<safe>: 0x address or .eth / .wei name); add ?chain=<id> when it is not on Ethereum |
| Send one token or ETH | `#//send?to=<address |
| Pay many recipients | #/<safe>/batch?csv=<url-encoded CSV>, one recipient,amount[,token] per line, up to 200 |
| Call any contract | #/<safe>/custom?to=<address>&value=<wei>&data=<0x calldata> |
| Change owners, threshold, modules | #/<safe>/settings (the owner edits there), or a custom / #tx= link calling the Safe itself (addOwnerWithThreshold, removeOwner, changeThreshold, …) |
| Create a Safe | #/new?owners=<a>,<b>,<c>&threshold=<n> |
| Collect signatures on one exact transaction (fixed nonce, shareable, several owners) | #tx=<payload> built with the script below |
Prefer the prefill links (send, batch, custom, new): they need no encoding, safe.wei uses the current nonce, and the page warns "Prefilled from a link" so the person checks it. Use #tx= when owners must sign the same transaction one after another, or when you must pin the nonce.