Skip to content

Appliance feature parity: everything host-CLI-only is impossible on a shell-less box #786

Description

@VijitSingh97

The finding

The control gate's design is correct and must not be weakened: wallets, view keys, auth,
onion exposure, tokens, per-rig descriptors and the security perimeter are deliberately
host-CLI-only — the dashboard container must never be able to commit them, because a
compromised container could then swap a payout wallet or exfiltrate a view key.

But the design's escape hatch is "edit config.json on the host and run ./pithead apply" —
and the appliance HAS no host access: no shell, SSH disabled. Every host-only item is
therefore not "inconvenient" on the appliance, it is impossible after first boot. The
wizard covers most of them at setup; changing them later means a reinstall.

What an appliance operator cannot do today

Lost capability DIY path Severity
Change the payout wallet edit + apply The most important operator action over a machine's life
Enable/change payout confirmation (view keys, scan heights) edit + apply Flagship feature, post-setup
Add/edit a rig in workers.list (per-rig control/upgrade) edit + apply Fleet management
Change the dashboard password, enable the onion edit + apply Security lifecycle
Add/change Telegram or Healthchecks after setup edit + apply Alerting lifecycle
Switch node mode local↔remote, change remote hosts edit + apply Topology changes
Encrypted backup / restore (wallet settings, Tor keys, config) pithead backup/restore Disaster recovery — currently NOTHING exports state off an appliance
Support bundle, doctor detail, secrets rotation CLI Supportability

The designed answer, and the appliance-native one

The gate's own comments name the plan: #338 out-of-band approval (Telegram approve/deny
with deny-on-timeout) drops in where the refusal happens today
, turning perimeter changes
into dashboard-initiated + second-factor-approved. That is the right general mechanism.

An appliance-native complement worth designing alongside it: physical presence as the
second factor
— the machine already reads pithead-config.json from a FAT partition at
first boot; extending that to "a config on inserted removable media, confirmed on the
console, applies on any boot" gives holders-of-the-hardware a host-equivalent channel with
no network trust at all. That is what host-CLI-only actually means operationally: someone
with hands on the machine.

Backup/restore needs its own dashboard surface regardless (download an encrypted
backup.tar.zst; restore at wizard time from an uploaded one — the restore half naturally
belongs to the wizard's pre-seed path).

Sequencing

Pre-GA blockers, in order of user pain: (1) backup export, (2) #338 or the physical-presence
channel for wallet/keys/workers changes, (3) restore-at-setup. The dashboard OS-update
action is tracked separately and compounds with (2).

Metadata

Metadata

Assignees

No one assigned

    Labels

    appliancePithead OS appliance work — lands on feat/phase2-bakery-imageenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions