One binary.
Every mode.

There is no separate developer tool to install. The ardaplayer binary that runs on the device is the one you run on your desk: point it at an app folder and it opens the page with the same window.Arda the fleet has. Deploying is a git push — there is nothing to upload from a terminal.

01 / The loop

The command
you'll actually use.

Most days are the same shape: edit the page, look at it, push. The player opens your folder in a window, local by default — no account, no network, no device row. Switch the device on when you want real sync and the portal.

  1. 01
    ardaplayer -dev myapp/Serves myapp/app/ on loopback and opens it. Datasets, the outbox and settings work from the folder's own sealed stores; seeds load from seed/.
  2. 02
    -watch · -consoleReload on every save, and the inspector open at start. Off until asked for; put them in arda.dev.json once and forget them.
  3. 03
    -deviceRegisters this folder as its own device with ArdaForm. Claim it in the portal like any other, and it syncs for real.
  4. 04
    git pushArdaForm packs the commit and the connected branch's devices take it. Nothing runs from the repository and there is no build to wait for.
~/checkindeveloper mode
$ ardaplayer -dev . ardaplayer v1.2.3 — ArdaForm device runtime device local — no control plane is dialled; the app runs on its own stores. datasets remembered: members, entries level=INFO msg="serving app" … dev=true
local deviceRUNNING
02 / Modes

The
flags.

A small surface, deliberately — the portal does the things a terminal is bad at. ardaplayer -h is the authority and groups them the same way.

FlagWhat it doesGroup
-dev DIRRun an app folder in a window, locally. -device enrols it; -watch reloads on save; -console opens the inspectorDeveloping
-window WxH · -scale 75% · -bg #000The app's screen size, the window drawn around it, and the colour shown before the page paintsDeveloping
-cog · -chromeForce the device's exact engine (WPE WebKit) on a desk, or the Chrome fallbackDeveloping
-kioskRun as a device: full screen on every connected display, or headless when there is none. What the systemd unit runsRunning a device
-headless [DIR]The same app with no screen and no DOM — a back-office box, a sensor nodeRunning a device
-installer DIRBoot into an install app and arm the disk-writing engine. What the USB stick runsRunning a device
-claim CODEEnrol with an install code instead of showing an activation codeRunning a device
-inspect · -ble · -mirrorMake a desk run reachable from the portal's Device view; advertise over Bluetooth for diagnostics; delete hand-added files under storage/Running a device
-unbindRemove this device: identity, data, and on a live device the app too. A live device asks for its device password; a developer folder needs noneRunning a device
-installMake this Linux machine a device: the binary into place and a systemd unit running -kioskOther
-splash LOGO · -correct DIR · -id · -versionPaint a logo on the framebuffer; restructure a loose page into an app folder; print the hardware id; print the buildOther
{
  "window":  "1280x800",
  "scale":   "75%",
  "bg":      "#000000",
  "console": false,
  "watch":   true,

  "can": { "touch": true, "keyboard": false, "mouse": false },
  "screens": [
    { "name": "main", "primary": true },
    { "name": "customer", "size": "800x480", "console": true }
  ],

  "settings":  { "currency": "EUR", "till_no": 3 },
  "partition": "branch-12",

  "devices": { "wifi": { "enabled": true,
                "networks": [{ "ssid": "shop", "key": "secret" }] } },

  "device": false
}
03 / Settings & automation

A file instead
of a line of flags.

arda.dev.json sits beside app/ and remembers how you like to work on that app: window and scale, the inspector, reload-on-save, what the machine should pretend to have, a second screen as a second window. On a local run settings and partition stand in for the portal's values, and devices is a pretend Wi-Fi radio, so a Wi-Fi screen can be built on a desk. It is plain JSON — a comment makes the player refuse it. The command line always wins over it, and an unknown key stops the player with the key named rather than being a setting that quietly does nothing.

Automation is the repository. Push to the branch a project is connected to and ArdaForm packs that commit and offers it to the branch's devices. There is no upload step to script, no token to keep in CI, and nothing is executed from your code on the way — which is also why a build step has to run on your side, with its output committed.

Reference

Every flag,
every key.

The full list, grouped as ardaplayer -h prints it, with what each one refuses and why.