Admin & HPX
Runtime administration gRPC service and HyperPax native node distribution.
paxeer-network/admin/HPX:
paxeer-network/hpx/Admin gRPC Service
The Admin service provides runtime log level control for paxd without restarting the node. It runs on a dedicated loopback-only gRPC server for security.
Configuration
Enable in app.toml:
[admin_server]
admin_enabled = true
admin_address = "127.0.0.1:9095"The address must be a loopback address (127.0.0.1 or ::1). Binding to external interfaces is rejected at startup.
gRPC Methods
| Method | Request | Response | Purpose |
|---|---|---|---|
SetLogLevel | pattern, level | affected count | Change log level for loggers matching pattern |
GetLogLevel | logger | level | Get current log level for a logger |
ListLoggers | prefix (optional) | List of loggers | List all loggers and their levels |
SetLogLevel Pattern Matching
The pattern parameter supports:
- Exact match:
"evm"(sets log level for the EVM logger only) - Glob:
"evm*"(sets log level for all loggers starting with "evm") - All loggers:
"*"(sets log level for every logger)
Log Levels
| Level | Purpose |
|---|---|
debug | Verbose debugging information |
info | General operational information |
warn | Warning messages (potential issues) |
error | Error messages (failures) |
Example: Using grpcurl
# List all loggers
grpcurl -plaintext localhost:9095 \
paxprotocol.paxchain.admin.v0.AdminService/ListLoggers
# Set EVM logger to debug
grpcurl -plaintext -d '{"pattern":"evm","level":"debug"}' \
localhost:9095 \
paxprotocol.paxchain.admin.v0.AdminService/SetLogLevel
# Get log level for a specific logger
grpcurl -plaintext -d '{"logger":"evm"}' \
localhost:9095 \
paxprotocol.paxchain.admin.v0.AdminService/GetLogLevelSecurity
The Admin service is loopback-only by design:
- No authentication required (loopback is trusted)
- Cannot be bound to external interfaces
- Must access from the same machine as
paxd
For remote access, use SSH port forwarding:
ssh -L 9095:127.0.0.1:9095 user@node-ippaxeer-network/api/pax/admin/v0/admin.protoImplementation:
paxeer-network/admin/server.go, service.go, config.goHPX: HyperPax Node Distribution
HPX is the public installer, node manager, and peer registry for HyperPax (hyperpax_125-1). Nodes run a native paxd binary under systemd. All artifacts are published outside Git.
Chain Identifier
hyperpax_125-1 (Cosmos-style, EVM chain ID 125)
Install a Node
curl -sSL https://node.hyperpaxeer.com/get-hpx.sh | sudo bashThe installer:
- Downloads and verifies the HPX CLI against
checksums.txt - Places
hpxin/usr/local/bin/
Setup a Node
# Set node type (fullnode or validator)
export HPX_TYPE=fullnode
# Run setup
hpx setupThe setup flow:
- Downloads
paxd,libwasmvmruntimes, genesis, and configuration - Verifies all artifacts against
checksums.txt - Installs artifacts to
/root/.paxeer/ - Configures systemd service
- Starts
paxd
HPX CLI Commands
| Command | Purpose |
|---|---|
hpx status | Show node sync status |
hpx info | Show node configuration |
hpx logs | Tail paxd logs |
hpx update | Update paxd and libraries |
hpx peers show | Show known peers |
hpx peers refresh | Fetch latest peer list from registry |
hpx register | Announce node to public registry |
hpx statesync | Enable state-sync for fast bootstrap |
hpx remove | Uninstall node and clean up |
Node Types
| Type | Purpose | Config |
|---|---|---|
fullnode | Non-validating full node (RPC, indexing) | /config/fullnode/ |
validator | Validating node (must register validator key) | /config/validator/ |
Public Registry
The HPX registry at https://node.hyperpaxeer.com provides:
| Endpoint | Purpose |
|---|---|
GET /healthz | Registry liveness, chain and source revision |
GET /checksums.txt | SHA-256 checksums for all artifacts |
GET /chain-info.json | Chain metadata (chain ID, genesis hash) |
GET /paxd | Native paxd binary |
GET /lib/*.so | Architecture-specific libwasmvm runtimes |
GET /genesis.json | Chain genesis file |
GET /config/<type>/<file> | Node configuration files (config.toml, app.toml) |
GET /api/myip | Caller's public IP address |
POST /api/register | Announce node's public peer address |
GET /api/peers | JSON list of registered peers |
GET /api/peers.txt | Text list of peer addresses (Tendermint format) |
GET /api/nodes | Detailed node metadata |
GET /api/statesync | Current state-sync trust parameters |
Artifact Publishing
To publish a new paxd release or chain configuration:
# From the monorepo root
sudo paxeer-network/hpx/publish.shThis script:
- Collects
paxdbinary frombuild/paxd - Collects native libraries from
wasm-runtime/andwasm/x/wasm/artifacts/ - Collects live chain configuration from
/root/.paxeer/config/(or$SRC_CFG) - Stages artifacts in
/srv/hpx/artifacts/releases/<release-id>/ - Generates
checksums.txt - Atomically moves
currentsymlink to new release
Failed staging runs never change the served release.
Registry Runtime Deployment
Changes to the registry service under paxeer-network/hpx/registry/ trigger the GitHub workflow Paxeer / HPX Registry, which:
- Builds Linux executables (x86-64, AArch64)
- Publishes them as GitHub release assets
- Publishes a multi-architecture GHCR image
Deploy the registry on the public origin host:
sudo paxeer-network/hpx/hosting/deploy.shThis script:
- Downloads and verifies the latest registry executable
- Installs it as a systemd service (loopback-only)
- Obtains a Let's Encrypt certificate for
node.hyperpaxeer.com - Configures Nginx reverse proxy with rate-limiting
Registry state is persisted at /srv/hpx/data/registry.json.
Registry Authentication
Registration is public by default. To require a token:
export HPX_REGISTER_TOKEN=your-secret-token
sudo paxeer-network/hpx/hosting/deploy.shThe registry will then require X-HPX-Token: your-secret-token header on POST /api/register.
Using an Alternate Mirror
Set HPX_MIRROR only when operating an explicitly trusted alternate mirror:
export HPX_MIRROR=https://your-mirror.example.com
hpx setupNative Libraries
HPX distributes architecture-specific libwasmvm runtimes:
libwasmvm.x86_64.so— x86-64 Linuxlibwasmvm.aarch64.so— AArch64 Linuxlibwasmvm_muslc.x86_64.so— x86-64 musl (Alpine)libwasmvm_muslc.aarch64.so— AArch64 musl
The installer detects the host architecture and installs the correct library.
State Sync
New nodes can bootstrap from a recent state snapshot instead of replaying full history:
hpx statesyncThis fetches trust parameters from /api/statesync and updates config.toml to enable state-sync.
Uninstall
hpx removeThis stops paxd, removes the systemd service, and deletes /root/.paxeer/.
paxeer-network/hpx/README.md, paxeer-network/hpx/hosting/