GitHub Action Reference
The shared GitHub Action lives at:
.github/actions/aleph-vm-deploy/action.yml
This action is the main shared entrypoint for Aleph VM deployment work today.
It wraps the Aleph Action Runner from @le-space/node and exposes a GitHub
Actions-friendly input/output contract for consumer workflows.
Supported Modes
Current action modes:
deployDeploy an Aleph VM, optionally auto-configure the guest, optionally publish required port forwards, and emit runtime and verification outputs.list-crnsReturn ranked and geocoded CRN data for selection and diagnostics.
The Node runner also supports additional modes such as retention handling, but those are not currently exposed through this specific composite action input surface.
Core Inputs
Deployment identity and signing:
modeprofilealeph_private_keyapi_hostapi_hostsnamechannel
RootFS and VM sizing:
rootfs_item_hashrootfs_versionrootfs_size_mibvcpusmemory_mibseconds
CRN selection:
crn_hashpreferred_country_codemax_crn_attemptsgeo_crn_limitcrn_list_url
Guest access and lifecycle:
ssh_public_keyenable_caddy_proxyauto_configureverify_reachabilitypublish_port_forwardsrequired_ports_json
required_ports_json must be a JSON array of structured objects such as:
[
{ "port": 22, "tcp": true, "udp": false, "purpose": "SSH" },
{
"port": 80,
"tcp": true,
"udp": false,
"purpose": "Temporary setup endpoint"
}
]
Do not pass raw port numbers such as [22,80].
Aleph API host fallback:
api_hostconfigures the single Aleph API gateway used by default.api_hostsoptionally configures a comma-, space-, or newline-separated list of Aleph API gateways to try in order during deployment, retention cleanup, and relay bootstrap refresh steps.- When
api_hostsis set, it overridesapi_hostfor the action attempt sequence. Each fallback attempt rebroadcasts the same action payload through the next API host.
Example:
api_hosts: >-
https://api3.aleph.im,
https://api2.aleph.im,
https://api.aleph.im
Polling and timeout controls:
wait_attemptswait_delay_msruntime_attemptsruntime_delay_mssetup_attemptssetup_delay_msverify_attemptsverify_delay_msmetadata_attemptsmetadata_delay_msmetadata_timeout_msconfigure_timeout_mstcp_timeout_mshttp_timeout_ms
Important Behavior
deploy
In deploy mode, the action can:
- sign and publish an Aleph
INSTANCEmessage - poll Aleph until the deployment is processed
- inspect CRN runtime networking
- optionally publish a required-port
AGGREGATE - optionally call the guest setup endpoint for
uc-go-peer - collect relay peer and bootstrap metadata
- optionally verify mapped ports and proxy reachability
list-crns
In list mode, the action:
- fetches the CRN list
- ranks or filters it according to the shared selection logic
- returns geocoded CRN data for diagnostics and manual selection
Important Outputs
Deployment identity:
deployer_addressinstance_item_hashinstance_status
Port-forward publication:
port_forward_aggregate_item_hashport_forward_statusport_forwarding_json
Selected CRN and runtime details:
crn_hashcrn_namecrn_urlhost_ipv4ipv6web_proxy_urlssh_commandmapped_ports_jsonruntime_json
Guest configuration and relay outputs:
setup_endpoint_okconfiguration_jsonrelay_peer_idprobe_multiaddrs_jsonbrowser_bootstrap_multiaddrs_json
Verification outputs:
verification_okverification_json
CRN listing outputs:
geocoded_crns_jsongeocoded_crn_count
Current Implementation Notes
The action is a composite GitHub Action.
Today it does three main things:
- sets up Node
- installs the small runtime dependency it still needs dynamically for deploy-mode signing
- runs the shared action runner with inputs mapped into environment variables
That runtime dependency install is still intentional for now. The action is not yet shipped as a fully bundled standalone distribution artifact.
Example
- name: Deploy uc-go-peer VM
uses: ./.github/actions/aleph-vm-deploy
with:
mode: deploy
profile: uc-go-peer
aleph_private_key: ${{ secrets.ALEPH_PRIVATE_KEY }}
name: uc-go-peer
ssh_public_key: ${{ secrets.VM_SSH_PUBLIC_KEY }}
rootfs_item_hash: ${{ steps.collect_rootfs.outputs.rootfs_item_hash }}
preferred_country_code: DE
max_crn_attempts: 5
enable_caddy_proxy: true
auto_configure: true
verify_reachability: true
publish_port_forwards: true
When To Use This Action
Use this action when a consumer workflow wants to keep control of its own workflow structure but reuse the Relay Button deployment logic.
That is the current recommended pattern for repositories such as
universal-connectivity:
- keep project-specific workflow orchestration in the consumer repo
- call the shared deploy action for Aleph VM deployment work
- keep repo-specific site publish, probing, and reporting around it as needed