Vilice is a proof of concept. Run it on a box you can afford to lose.

Vilice Console

Vilice Console is a GUI-based approach to Vilice via a Rails app. It can be deployed with Vilice itself, or run locally. For more details see the console code inside the monorepo.

It holds no privilege of its own. Each machine is reached over scoped SSH with its own key, authorized on the box at observe to read or operate to deploy — so the console can run anywhere, and revoking one box never touches another.

Install

Vilice Console is an ordinary app with an ordinary AppConfig:

// console.json — Vilice Console's own AppConfig
{
  "image":     "ghcr.io/agoraforge/vilice-console@sha256:…",
  "hostnames": ["console.example"],
  "port":      4000,
  "health":    "/up",
  "env":       { "HTTP_PORT": "4000" },
  "secrets":   ["RAILS_MASTER_KEY"],
  "volumes":   ["vilice-console-storage:/rails/storage"]
}

See AppConfig for what each field means. It deploys the ordinary way, with one addition — the master key.

The Master Key

RAILS_MASTER_KEY is the console’s one secret, and it earns the name: it unlocks the keys that protect each machine’s SSH key at rest. Rails generates it with the app, it lives in config/master.key, and it is deliberately not in the repository.

The config above only names it. The value travels the other half of the deploy envelope, on stdin, so it never reaches the recorded command line and is never written to the record. Building the envelope in the pipe keeps the key out of a second file — with jq, that is one line:

jq --arg key "$(cat config/master.key)" \
   '{ app: ., secret_values: { RAILS_MASTER_KEY: $key } }' console.json \
  | vilice deploy console

Vilice stores the value in the box’s Podman secret store and injects it into the container as env. It is needed on every deploy, not just the first — a deploy that omits it is refused. A backup never includes the secret store, so this key is yours to keep: restoring onto a fresh box means supplying it again, or the console comes up unable to read its own machine keys.

See Secrets for the general rule.

Boxcar

Vilice Console is built on Boxcar — a Rails pattern language that encodes Agora Constitution articles as composable concerns: identity, the accountable record, scoped decisions.