Lux Docs
Lux Skills Reference

Lux Plugins Core

VM & Subnet Plugin Registry

Overview

Lux Plugins Core is the official plugin repository for the Lux Plugin Manager (LPM). It ships with LPM as the default repository and contains YAML definitions for virtual machines and subnets. LPM uses these definitions to download, install, verify, and manage VM binaries on Lux nodes. Community-driven -- anyone can submit a new VM or subnet via pull request.

Quick Reference

ItemValue
Repogithub.com/luxfi/plugins-core
Local~/work/lux/plugins-core/
Branchmaster
FormatYAML definition files
ToolLux Plugin Manager (LPM)
Maintainerz@lux.network
LicenseOpen

Repository Structure

plugins-core/
  vms/                   -- VM definitions (one YAML per VM)
    blobvm.yaml              Content-addressable KV store VM
    spacesvm.yaml            Hierarchical storage VM
    subnet-evm.yaml          Subnet EVM (Solidity smart contracts)
  subnets/               -- Subnet definitions (one YAML per subnet)
    spaces.yaml              Spaces Subnet Demo (SpacesVM)
    wagmi.yaml               Zoo EVM Demo (high-throughput testbed)
  examples/              -- Template files for contributors
    vm.yaml                  VM definition template
    subnet.yaml              Subnet definition template
  README.md              -- Contributing guide
  LICENSE

Registered VMs

BlobVM

FieldValue
Aliasblobvm
VM IDkM6h4LYe3AcEU1MB2UNg6ubzAiDAALZzpVrbX8zn3hXF6Avd8
Version0.0.6
Homepagehttps://github.com/luxdefi/blobvm
DescriptionContent-Addressable Key-Value Store with EIP-712 compatibility and fee-based metering
Install Scriptscripts/build.sh
Binary Pathbuild/kM6h4LYe3AcEU1MB2UNg6ubzAiDAALZzpVrbX8zn3hXF6Avd8
Release URLhttps://github.com/luxdefi/blobvm/archive/refs/tags/v0.0.6.tar.gz
SHA25672d1b8fa3ee89412b406e7b0e9a968ca06746ea1bb5dd02c2b87f1ad1eaa4ca6

BlobVM provides a content-addressable key-value store chain. Keys are derived from content hashes, data is stored on-chain with EIP-712 signature verification, and fees are calculated based on data size (metered storage).

SpacesVM

FieldValue
Aliasspacesvm
VM IDsqja3uK17MJxfC7AN8nGadBw9JK5BcrsNwNynsqP5Gih8M5Bm
Version0.0.3
Homepagehttps://tryspaces.xyz
DescriptionVirtual machine that processes the Spaces subnet
Install Scriptscripts/build.sh
Binary Pathbuild/sqja3uK17MJxfC7AN8nGadBw9JK5BcrsNwNynsqP5Gih8M5Bm
Release URLhttps://github.com/luxdefi/spacesvm/archive/refs/tags/v0.0.3.tar.gz
SHA2561ac250f6c40472f22eaf0616fc8c886078a4eaa9b2b85fbb4fb7783a1db6af3f

SpacesVM provides authenticated, hierarchical key-value storage using any EIP-712 compatible wallet. It powers the Spaces subnet where users can claim hierarchical namespaces (like DNS) and store arbitrary key/value data under them.

Subnet EVM

FieldValue
Aliassubnet-evm
VM IDsrEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy
Version0.2.7
Homepagehttps://github.com/luxdefi/subnet-evm
DescriptionSubnet EVM -- simplified Coreth VM for Subnet Contract Chains with full Ethereum Virtual Machine and Solidity smart contract support
Install Scriptscripts/build.sh build/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy
Binary Pathbuild/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy
Release URLhttps://github.com/luxdefi/subnet-evm/archive/refs/tags/v0.2.7.tar.gz
SHA256c0d63b56031820007cce5fa8ea635628b8b9a5897111290a78b60538838509f8

Subnet EVM is the primary VM for creating new EVM-compatible blockchains on Lux. It is a simplified version of Coreth (C-Chain VM), parameterizable for different throughput and gas configurations.

Registered Subnets

Spaces Subnet

FieldValue
Aliasspaces
Subnet IDAi42MkKqk8yjXFCpoHXw7rdTWSHiKEMqh5h8gbxwjgkCUfkrk
Homepagehttps://tryspaces.xyz
VMspacesvm
DescriptionAuthenticated, hierarchical storage of arbitrary keys/values using any EIP-712 compatible wallet

Consensus parameters:

k: 20                            -- Sample size
alpha: 15                        -- Quorum size
betaVirtuous: 15                 -- Confidence threshold (virtuous)
betaRogue: 20                    -- Confidence threshold (rogue)
concurrentRepolls: 4             -- Concurrent repolls
optimalProcessing: 50            -- Optimal processing buffer
maxOutstandingItems: 1024        -- Max outstanding items
maxItemProcessingTime: 120s      -- Max processing time per item
parents: 5                       -- Parent count
batchSize: 30                    -- Batch size
validatorOnly: false             -- Open to non-validators

Zoo EVM Demo (WAGMI)

FieldValue
Aliaswagmi
Subnet ID28nrH5T2BMvNrWecFcV3mfccjs6axM1TVyqe79MCv2Mhs8kxiY
Homepagehttps://github.com/luxfi/evm
VMevm (Coreth/Subnet-EVM)
DescriptionHigh-throughput testbed for EVM optimizations, parameterized to run at higher capacity than mainnet C-Chain
Maintainerz@zoolabs.io

Used to experiment with EVM release candidates before they ship as official Coreth releases.

VM Definition Format

Complete YAML schema for a VM definition (vms/<name>.yaml):

vm:
  # Required: Base58-encoded VM ID (deterministic from build)
  id: "kM6h4LYe3AcEU1MB2UNg6ubzAiDAALZzpVrbX8zn3hXF6Avd8"

  # Required: Unique human-readable alias (used in LPM commands)
  alias: "blobvm"

  # Required: Project homepage URL
  homepage: "https://github.com/luxdefi/blobvm"

  # Required: Human-readable description
  description: "Content-Addressable Key-Value Store w/EIP-712 Compatibility"

  # Required: Maintainer contact emails
  maintainers:
    - "z@lux.network"

  # Required: Path to build script (relative to extracted source)
  # LPM clones the repo and runs this script to build the binary
  installScript: "scripts/build.sh"

  # Required: Path to the built binary (relative to extracted source)
  # Must match the VM ID for the node to load it correctly
  binaryPath: "build/kM6h4LYe3AcEU1MB2UNg6ubzAiDAALZzpVrbX8zn3hXF6Avd8"

  # Required: URL to release tarball (for pre-built download)
  url: "https://github.com/luxdefi/blobvm/archive/refs/tags/v0.0.6.tar.gz"

  # Required: SHA256 checksum of the release tarball
  sha256: "72d1b8fa3ee89412b406e7b0e9a968ca06746ea1bb5dd02c2b87f1ad1eaa4ca6"

  # Required: Semantic version
  version:
    major: 0
    minor: 0
    patch: 6

Subnet Definition Format

Complete YAML schema for a subnet definition (subnets/<name>.yaml):

subnet:
  # Required: Base58-encoded Subnet ID (from P-Chain)
  id: "Ai42MkKqk8yjXFCpoHXw7rdTWSHiKEMqh5h8gbxwjgkCUfkrk"

  # Required: Unique human-readable alias
  alias: "spaces"

  # Required: Project homepage
  homepage: "https://tryspaces.xyz"

  # Required: Description
  description: |
    Spaces enables authenticated, hierarchical storage of arbitrary
    keys/values using any EIP-712 compatible wallet.

  # Required: Maintainer emails
  maintainers:
    - "z@lux.network"

  # Optional: Install script (empty if no additional setup needed)
  installScript: ""

  # Required: List of VM aliases this subnet uses
  vms:
    - "spacesvm"

  # Optional: Subnet-specific configuration
  config:
    # Gossip settings
    gossipAcceptedFrontierValidatorSize: 0
    gossipAcceptedFrontierNonValidatorSize: 0
    gossipAcceptedFrontierPeerSize: 35
    gossipOnAcceptValidatorSize: 0
    gossipOnAcceptNonValidatorSize: 0
    gossipOnAcceptPeerSize: 20
    appGossipValidatorSize: 10
    appGossipNonValidatorSize: 0
    appGossipPeerSize: 0

    # Access control
    validatorOnly: false

    # Consensus parameters
    consensusParameters:
      k: 20              # Sample size
      alpha: 15           # Quorum threshold
      betaVirtuous: 15    # Virtuous confidence
      betaRogue: 20       # Rogue confidence
      concurrentRepolls: 4
      optimalProcessing: 50
      maxOutstandingItems: 1024
      maxItemProcessingTime: 120_000_000_000  # 120 seconds in nanoseconds
      parents: 5
      batchSize: 30

How LPM Works

The Lux Plugin Manager (LPM) uses this repository to:

  1. Discover VMs: LPM reads vms/*.yaml to list available virtual machines
  2. Download: Fetches the release tarball from the url field
  3. Verify: Checks the SHA256 checksum against the sha256 field
  4. Build (if needed): Runs the installScript to compile from source
  5. Install: Copies the binary to the node's plugin directory at the path matching the VM ID
  6. Track: Records installed version for upgrade tracking

Binary Naming Convention

VM binaries must be named with their base58-encoded VM ID. The Lux node discovers plugins by scanning its plugin directory for files whose names match registered VM IDs. Example:

~/.lux/plugins/kM6h4LYe3AcEU1MB2UNg6ubzAiDAALZzpVrbX8zn3hXF6Avd8   # BlobVM
~/.lux/plugins/sqja3uK17MJxfC7AN8nGadBw9JK5BcrsNwNynsqP5Gih8M5Bm   # SpacesVM
~/.lux/plugins/srEXiWaHuhNyGwPUi444Tu47ZEDwxTWrbQiuD7FmgSAQ6X7Dy   # Subnet EVM

Usage with LPM

# Add this repository (ships as default with LPM)
lpm add-repository --alias luxfi --url https://github.com/luxfi/plugins-core.git

# List all available VMs
lpm list-vms

# Install a VM by alias
lpm install --vm blobvm
lpm install --vm spacesvm
lpm install --vm subnet-evm

# Update a VM to latest version
lpm update --vm subnet-evm

# Install a subnet (installs all referenced VMs)
lpm install --subnet spaces

# List installed VMs
lpm list-installed

Adding a New VM

  1. Generate a VM ID: Build your VM binary; its name is the base58 VM ID
  2. Create release: Tag a release on GitHub and note the tarball URL
  3. Compute checksum: sha256sum <tarball> to get the SHA256 hash
  4. Write YAML: Create vms/<alias>.yaml following the format above
  5. Test locally: Verify LPM can install from your fork
  6. Submit PR: Open a pull request to github.com/luxfi/plugins-core

Required fields checklist:

  • id: Base58 VM ID (matches binary name)
  • alias: Unique short name (lowercase, hyphens ok)
  • homepage: URL to project
  • description: What the VM does
  • maintainers: At least one email
  • installScript: Build script path
  • binaryPath: Built binary path
  • url: Release tarball URL
  • sha256: Checksum of tarball
  • version: Semantic version (major/minor/patch)

Adding a New Subnet

  1. Create subnet on P-Chain: Deploy via lux subnet create CLI command
  2. Note Subnet ID: Base58-encoded ID from the P-Chain transaction
  3. List VM dependencies: Which VMs the subnet uses (by alias)
  4. Configure consensus: Set Snow consensus parameters appropriate for your use case
  5. Write YAML: Create subnets/<alias>.yaml following the format above
  6. Submit PR: Open a pull request

Consensus Parameter Reference

These parameters control Snow consensus behavior for subnets:

ParameterDescriptionDefault
kSample size (number of validators polled per round)20
alphaQuorum size (required agreement to accept)15
betaVirtuousConfidence threshold for virtuous transactions15
betaRogueConfidence threshold for conflicting transactions20
concurrentRepollsNumber of concurrent polls4
optimalProcessingTarget number of in-flight transactions50
maxOutstandingItemsMaximum unprocessed items1024
maxItemProcessingTimeTimeout per item (nanoseconds)120,000,000,000 (120s)
parentsNumber of parents per vertex (DAG depth)5
batchSizeTransactions per batch30
validatorOnlyRestrict to validators onlyfalse
  • lux/lux-node.md -- Core node that loads and runs VM plugins
  • lux/lux-evm.md -- Subnet EVM execution engine
  • lux/lux-spacesvm.md -- SpacesVM storage chain
  • lux/lux-cli.md -- CLI for subnet creation and management

On this page