Token auth
ARDA_TOKEN in the environment. Scoped per fleet, revocable, never written to the repo.
The arda command line treats a fleet the way git treats a repository: a workspace you link, releases you push, channels you promote through, and a history you can walk backwards when a Friday deploy goes wrong.
Most days are the same shape: change something, push it, put it in front of a few devices, watch what happens. The rest of the surface exists for the days that aren't.
Grouped the way you'd reach for them. Every command works against the fleet your workspace is linked to, or an explicit --fleet.
| Command | Purpose | Typical use |
|---|---|---|
| Project | ||
arda login | Authenticate this machine against your account | Once per workstation |
arda init | Scaffold a project and its arda.json manifest | New application |
arda link | Bind the working directory to a fleet or group | After cloning a repo |
arda build | Produce the .arda package locally without uploading | CI artefacts, offline signing |
| Releases | ||
arda push | Build, sign, encrypt and upload a new release | Every change |
arda releases | List releases with hashes, sizes and channels | Auditing what exists |
arda promote | Move a release between channels | beta → stable |
arda tag | Attach a human name to a release | Version marking |
| Deployment | ||
arda deploy | Roll a release out to a target, optionally in waves | Shipping |
arda rollback | Send the previous release back down | When it goes wrong |
arda pin | Hold specific devices on a specific release | Awkward sites, pilot units |
arda cancel | Stop an in-flight rollout | Mid-deploy panic |
| Fleet | ||
arda devices | List devices with state, release and last-seen | Daily |
arda status | Summarise the fleet and any active rollout | Daily |
arda claim | Register a new device against your account | Provisioning |
arda group | Create and manage device groups | Regions, customers, sites |
arda env | Set configuration pushed to a device or group | Per-site settings |
| Support | ||
arda logs | Stream a device's application console | Debugging live |
arda console | Attach a JavaScript console to the running page | Inspecting state |
arda screenshot | Capture what a device is showing right now | "What does it look like?" |
arda shell | Open a shell on the device over its outbound tunnel | Last resort |
arda restart | Restart the application, or reboot the device | The classic |
arda info | Show a device's hardware and OS snapshot | Support triage |
# .github/workflows/release.yml
steps:
- uses: actions/checkout@v4
- name: Build application
run: npm ci && npm run build
- name: Push release
env:
ARDA_TOKEN: ${{ secrets.ARDA_TOKEN }}
ARDA_PACK_KEY: ${{ secrets.ARDA_PACK_KEY }}
run: arda push -m "$GITHUB_SHA"
- name: Deploy to beta
run: arda deploy --channel beta --staged
{
"name": "order-kiosk",
"version": "1.4.0",
"entry": "dist/index.html",
"build": "npm run build",
"capabilities": ["db", "sync", "printer", "usb:read"],
"fleet": "order-kiosk",
"channel": "beta",
"ignore": ["*.map", "**/*.test.js"],
"bind": "installation"
}
Every command is non-interactive by default, authenticates from an environment token, exits non-zero on failure and speaks --json when you'd rather parse than read. Signing keys stay yours: the control plane never holds a private key, so a compromised account can't sign a package on your behalf.
ARDA_TOKEN in the environment. Scoped per fleet, revocable, never written to the repo.
The pack key signs on your machine or your runner. It is never uploaded, and the server never needs it.
The CLI is the outer loop — build it, sign it, put it on two hundred machines. The inner loop is the twenty seconds between changing a colour and wanting to see it, and a full page reload there is worse than useless: it throws away the state you spent four clicks getting into.
ArdaLive is our live-preview extension for exactly that. It diffs the <head> and <body> and patches the live DOM in place, so scroll position, focus, video playback and the form you're halfway through typing all survive the edit. Linked stylesheets hot-swap without a flash. It serves your unsaved editor buffer, not the file on disk.
We wrote it to make designing device interfaces less painful — a kiosk screen is usually several steps deep into a flow, and reloading to check a change costs you all of it. Then it turned out nothing about that is device-specific, so it shipped as a standalone extension instead: free, MIT, and just as useful on an ordinary website. You don't need ArdaForm to get something out of it.
The portal and CLI open together. Put your name down and tell us what you're building — it genuinely affects what we finish first.