skycore activate connects an installed drone to SkyHub with the one-time token from the dashboard. It sets up the VPN, logs in to the container registry, and starts the drone’s services.
Usage
sudo).
There is no
STAGE environment variable any more. sudo drops environment variables, so the stage is always an argument or the recorded value.
Services
To list the services the installed release defines:
A name the release does not define is skipped with a warning. If none of the requested services exist, activation stops and prints the available ones. See Microservices & Container Profiles for what each container runs.
What activation does
1
Checks, before the token is used
Works out the stage, checks it runs as root, and checks that
curl, jq and docker are installed and Docker is running. It makes sure WireGuard can run. On a kernel without the WireGuard module, such as every Jetson, it builds the userspace client wireguard-go once. If any check fails, the token is not used.2
Calls SkyHub with the token
Prints
Activating this vehicle on the <stage> environment and sends the token to SkyHub’s activation API. This uses up the token. The answer carries the VPN settings, the registry login and the compose file location.3
Joins the VPN
Saves the VPN settings to
/etc/wireguard/wg0.conf, then enables and starts wg-quick@wg0. SkyHub reaches the drone over this tunnel; the dashboard sees it online through rosbridge on port 9090. If ufw is active, activation adds one rule, ufw allow in on wg0 comment skycore-vpn. If an iptables policy drops inbound traffic, it prints a loud FIREWALL: warning instead.4
Logs in to the container registry
Logs Docker in to the registry the activation answer names.
5
Records the activation
Writes
/home/skycore/skycore.conf. This happens before the steps that can still fail. If one of them fails, sudo skycore update finishes the job without a new token.6
Installs the compose file
Downloads the stage’s compose file to
/home/skycore/docker-compose.yml and checks it first: it must parse, every image must be pinned to a tag other than latest or to a digest, and every image must exist in the registry. The previous file is kept as docker-compose.yml.prev.7
Starts the services
Pulls the images and starts the requested services. If the same services are already running from another compose file, it stops and names them instead of starting a second set.
8
Finishes
Adds the user who ran
sudo to the docker group, prints Drone activation is complete. and the status block.The configuration file
Activation writes/home/skycore/skycore.conf. Only root can read it, because it holds the token.
compose_source (where the compose file came from) and last_update. Every command reads the stage from here, so --stage is only needed once.
To change which services up starts, edit the services: line as root, then run sudo skycore down and sudo skycore up. Activating again needs a new token, because each token works once.
Managing services
up
Starts the services listed inskycore.conf:
down. It needs an activated drone and a compose file. Without one it says Run 'sudo skycore activate --stage dev|prod --token <token>' first or run 'sudo skycore update' to fetch it.
down
Stops all SkyCore containers:status
Shows the version, stage, activation, the compose file and where it came from, each image with its revision label, and each container’s state:sudo. Without it, stage and activated read (cannot read /home/skycore/skycore.conf - run with sudo). Containers that are not running, or that keep restarting, are listed under warnings: with the docker logs command to look at them.
update
Updates theskycore CLI, then the compose file and containers, when they changed:
Already up to date - nothing was changed.

