# Alagael user deployment kit Ethereum mainnet only. Requires Node.js 20 or newer. Ethers 6.17.0 is bundled under its MIT license: no npm installation is required. Inspect the included source before using a wallet. Never send a private key, password or seed to Alagael, a support chat or a website. ## Public factory Official factory: `0xe1906bBFf0c6AE8139b84c713CA60306596FD80f`. Implementation: `0xe821e8E3DE2bA2691437bE5EB69AF0Cd14f3afB9`. Anyone can call the factory. Each Safe/heir/delay combination has a deterministic switch address. An existing matching switch is reused, not deployed again. The factory has no owner permission to edit your switch. Configuration changes require transactions from your Safe. Creating a switch DOES NOT activate it, move funds or give the factory control of your Safe. The contracts have not been audited. Source/runtime matching is not an audit. Safe, heir, timing and transaction details are public on Ethereum. RPC requests also disclose those public parameters to the provider. Use `--rpc https://...` to choose your own mainnet provider. Seeds and private letters are not used. ## Recommended: browser wallet Open Alagael → Vault → My Safe. Connect your own wallet, load your existing Safe, select the official factory, enter your heir and inactivity period, and create the switch. Review and approve every transaction in your wallet. Enable the switch as module and guard through your Safe's owner approvals. You can also choose **Deploy my own factory (2 transactions)** instead. Do not enable an unfamiliar module or overwrite an existing guard blindly. ## Assets, deposits and inheritance - ETH is the Safe's native Ethereum balance. - Ethereum ERC-20 stablecoins, including USDC, USDT and DAI, can be held by a Safe. Issuer freezes, compliance rules and transfer restrictions still apply. - WETH is wrapped ETH, not a staking token. Staking tokens such as stETH can be held as Ethereum tokens; redemption and staking-provider rules are separate. - Tokenized stocks are CONDITIONAL: the token must be on Ethereum mainnet and its issuer must allow Safe custody and heir access. KYC, allowlists, eligibility, redemption and legal ownership requirements can prevent use. Alagael does not certify stock issuers or legally transfer shares. - Native BTC, SOL and assets on other chains are not covered. A bridged or wrapped token has separate bridge/custodian risks; it is not the native coin. Send eligible assets to YOUR SAFE ADDRESS on Ethereum mainnet, never to the factory or switch. Keep ETH available in the transaction-paying wallet for gas. Takeover changes the Safe's owners/control; it does not sweep token balances to the heir or bypass issuer restrictions. Assets remain in the Safe. Send a Tick/check-in through the Safe before the inactivity period expires. The heir must request takeover after the period; no proof of death or automatic asset distribution is provided. Stats counts ETH only, not ERC-20 balances. ## CLI: create your own switch with the public factory Replace the placeholder addresses. Start with a read-only plan: ```sh node deploy.cjs vault \ --wallet 0xYOUR_PUBLIC_WALLET_ADDRESS \ --safe 0xYOUR_EXISTING_SAFE_ADDRESS \ --heir 0xYOUR_HEIR_ADDRESS \ --delay-days 365 \ --gas-budget-eth 0.001 ``` Use a Safe version 1.3.0 or newer. The delay must be 1–365 whole days. Choose your own maximum gas budget; 0.001 ETH is an example, not a fee quote. By default the script only reads and estimates; it never signs a transaction. To execute, repeat the command with these additional options: ```sh --execute \ --keystore /absolute/path/to/your-encrypted-keystore.json \ --record ./my-vault-receipts.json ``` An Ethereum JSON keystore is an ENCRYPTED wallet file, not a raw private-key file. Unlock it locally through the hidden terminal prompt. The script checks that its address matches `--wallet`. It does not read `PRIVATE_KEY`, use Alagael's signer, store your password or save a signed transaction. No keystore is included in this download. If your wallet does not provide an encrypted keystore, use the browser wallet flow instead; do not paste a private key into these files. ## Activate through your Safe After a switch is verified, the script writes `my-vault-receipts.json.activation.json`. Inspect it, then import it into your Safe's Transaction Builder. All required owners must review and approve: 1. `enableModule(switch)` on your Safe. 2. `setGuard(switch)` on your Safe. 3. `ping()` on the switch, through your Safe, to reset the inactivity clock. These are separate Safe actions, not part of the CLI's deployment gas budget. The CLI DOES NOT execute them. If another guard is installed, stop and review its purpose before replacing it. The script stops if another guard is present, and omits module/guard setup actions already enabled. Keep existing Safe protections intact. Return to Alagael Vault and reload the Safe to confirm **module**, **guard** and the intended heir/delay. Do not treat an unactivated switch as protection. ## Optional: deploy your own implementation and factory ```sh node deploy.cjs factory \ --wallet 0xYOUR_PUBLIC_WALLET_ADDRESS \ --gas-budget-eth 0.001 ``` After reviewing the plan, add `--execute --keystore /path/to/your-encrypted-keystore.json --record ./my-factory-receipts.json`. This sends two contract-creation transactions from YOUR wallet. It verifies implementation runtime and the factory link. Use a distinct receipt file for each deployment. Use your resulting factory in Alagael's Factory address field or add `--factory 0xYOUR_FACTORY_ADDRESS` to the `vault` command. Switches created by a custom factory do not appear in the official factory's Stats. ## Interrupted runs and fees The total maximum transaction fees are capped by your `--gas-budget-eth`. If current fees do not fit, execution stops. Pending hashes are saved BEFORE submission. Reuse the SAME parameters, wallet and receipt file to resume. Do not delete a pending record or change its nonce to work around a failure. Check saved hashes on Etherscan if submission or confirmation is uncertain. Reverted transactions still cost gas and are not automatically retried. No blockchain transactions were sent merely by building or downloading this kit.