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.
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.
- 01ardaplayer -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 fromseed/. - 02-watch · -consoleReload on every save, and the inspector open at start. Off until asked for; put them in
arda.dev.jsononce and forget them. - 03-deviceRegisters this folder as its own device with ArdaForm. Claim it in the portal like any other, and it syncs for real.
- 04git 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.
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.
| Flag | What it does | Group |
|---|---|---|
-dev DIR | Run an app folder in a window, locally. -device enrols it; -watch reloads on save; -console opens the inspector | Developing |
-window WxH · -scale 75% · -bg #000 | The app's screen size, the window drawn around it, and the colour shown before the page paints | Developing |
-cog · -chrome | Force the device's exact engine (WPE WebKit) on a desk, or the Chrome fallback | Developing |
-kiosk | Run as a device: full screen on every connected display, or headless when there is none. What the systemd unit runs | Running a device |
-headless [DIR] | The same app with no screen and no DOM — a back-office box, a sensor node | Running a device |
-installer DIR | Boot into an install app and arm the disk-writing engine. What the USB stick runs | Running a device |
-claim CODE | Enrol with an install code instead of showing an activation code | Running a device |
-inspect · -ble · -mirror | Make a desk run reachable from the portal's Device view; advertise over Bluetooth for diagnostics; delete hand-added files under storage/ | Running a device |
-unbind | Remove this device: identity, data, and on a live device the app too. A live device asks for its device password; a developer folder needs none | Running a device |
-install | Make this Linux machine a device: the binary into place and a systemd unit running -kiosk | Other |
-splash LOGO · -correct DIR · -id · -version | Paint a logo on the framebuffer; restructure a loose page into an app folder; print the hardware id; print the build | Other |
{
"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
}
checkin/
arda.dev.json ← yours; never packed, refused outside -dev
app/ ← the whole app, byte for byte what is packed
index.html
manifest.json ← datasets and setting fields
app.js
style.css
seed/ ← local runs: members.json → the 'members' dataset
members.json
state/ data/ storage/ ← the player's, sealed; keep out of git
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.
Every flag,
every key.
The full list, grouped as ardaplayer -h prints it, with what each one refuses and why.