A command-line interface for Psy Node operations.
- Ubuntu 22.04 (x86_64, aarch64)
- Ubuntu 24.04 (x86_64, aarch64)
- Ubuntu 22.04 or Ubuntu 24.04
- curl (will be installed automatically if not present)
- sudo privileges
Run the following command to install Psy Node CLI:
curl -fsSL https://raw.githubusercontent.com/QEDProtocol/psyup/main/install.sh | bash- Clone this repository:
git clone https://github.com/QEDProtocol/psyup.git
cd psyup- Make the install script executable:
chmod +x install.sh- Run the installation script:
./install.shThe installation script will:
- Detect your Ubuntu version - Only Ubuntu 22.04 and 24.04 are supported
- Detect your architecture - Supports x86_64 and aarch64/arm64
- Download the appropriate prebuilt binary from the latest release
- Install the binary to
/usr/local/bin/ - Verify the installation and make it available in your PATH
If you're running an unsupported Ubuntu version, you'll see an error like:
[ERROR] Unsupported Ubuntu version: 20.04
[ERROR] This script only supports Ubuntu 22.04 and Ubuntu 24.04
Solution: Upgrade to Ubuntu 22.04 or 24.04, or use a supported distribution.
If you're running on an unsupported architecture, you'll see an error like:
[ERROR] Unsupported architecture: i386
[ERROR] This script only supports x86_64 and aarch64/arm64 architectures
Solution: Use a supported architecture (x86_64 or aarch64/arm64).
If you encounter permission issues during installation:
sudo ./install.shIf the binary is not found in your PATH after installation:
# Check if it's installed
ls -la /usr/local/bin/qed_rollup_cli
# Run directly
/usr/local/bin/qed_rollup_cli --help
# Add to PATH (add to ~/.bashrc or ~/.zshrc)
export PATH="/usr/local/bin:$PATH"Create a configuration file with the following content which reflects PsyProtocol's testnet network topology
{
"network": {
"users_per_realm": 1048576,
"global_user_tree_height": 24,
"realm_user_tree_height": 20,
"group_realm_height": 1,
"realm_configs": [
{
"id": 0,
"rpc_url": ["https://regnet-realm0.psy-protocol.xyz"]
},
{
"id": 1,
"rpc_url": ["https://regnet-realm1.psy-protocol.xyz"]
}
],
"coordinator_configs": [
{
"id": 0,
"rpc_url": ["https://regnet-coordinator.psy-protocol.xyz"]
}
],
"prove_proxy_url": ["https://regnet-prover.psy-protocol.xyz"],
"native_currency": "0",
"native_currency_decimal": 9,
"native_currency_name": "PSY",
"fees": {
"register_user_fee": 0,
"deploy_contract_fee": 0,
"guta_fee": 5000000000
}
}
}
After installation, you can use the Psy Node CLI:
Create a new wallet
qed_user_cli wallet create --output my_wallet
2025-10-24T10:41:04.896603Z INFO qed_user_cli/src/main.rs:34: qed user cli
Enter password for wallet:
2025-10-24T10:41:09.381917Z INFO qed_prover/src/wallet/secp_wallet.rs:224: Wallet saved to: my_wallet
✅ Wallet created and saved to: my_wallet
ETH Address: 0xfCB40714B52DA9956dC76E363467991D7C693d19
Public Key Hash: cd8a8ef54d6df79a31bf849a69ed3d583e033008cd3dc135af51748993fa04ea
Private Key: 0x21bd16a94299904f0a644e22120d94fc6caf8ccb33eb82669120f48382447bbc
Register the new wallet address's public_key_hash as a secp256k1 user, wait two blocks until realm acknowledge the registration
curl -X POST https://regnet-coordinator.psy-protocol.xyz \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "qed_register_user",
"params": {
"public_key": {
"fingerprint": "993bbdad2ba78319a70ab7d9ecd84b36eca0affc9f8ec4f9006b39a8fe29672c",
"public_key_param": "cd8a8ef54d6df79a31bf849a69ed3d583e033008cd3dc135af51748993fa04ea"
}
},
"id": 1
}'
Query the final assigned onchain user id:
qed_user_cli get-public-key \
--private-key=0x21bd16a94299904f0a644e22120d94fc6caf8ccb33eb82669120f48382447bbc \
--sign-type=secp256k1
Secp256k1 Signature Public Key:
ETH Address: 0xfCB40714B52DA9956dC76E363467991D7C693d19
Secp256k1 Public Key: c431e591bee452dbe04241eccf2b9039e5c122212272303e3fa549c5f22d6425884ae0792e36a4e1a80d8984ec787f70c30ae83e84bdf8f4abf77e95c47ec4c6
public_key_hash: cd8a8ef54d6df79a31bf849a69ed3d583e033008cd3dc135af51748993fa04ea
fingerprint: 993bbdad2ba78319a70ab7d9ecd84b36eca0affc9f8ec4f9006b39a8fe29672c
public_key: 027f7c7225252fe0d84cdfad19a25448368545771b27380ae0b439bef47c5ceb
qed_user_cli get-user-leaf --checkpoint-id 100000 --pub-key 027f7c7225252fe0d84cdfad19a25448368545771b27380ae0b439bef47c5ceb
Ask the PsyProtocol offcials to add the new ETH format wallet address(0xfCB40714B52DA9956dC76E363467991D7C693d19) into whitelist
Launch with configuration and wallet keystore path
# Check if installation was successful
qed_rollup_cli --help
# Run your commands
qed_rollup_cli worker --config=./config.json --keystore-path my_walletIf you need to build from source for unsupported platforms:
- Clone the repository
- Follow the build instructions in the source code
- Install the built binary manually
- Fork the repository
- Create a feature branch
- Make your changes
- Test on supported platforms
- Submit a pull request
[Add your license information here]
For issues and questions:
- Create an issue on GitHub
- Check the troubleshooting section above
- Ensure you're using a supported platform