UI Specification: Compute Settings Page
CONTRACT for the Nunba (bundled) and Hevolve React app (non-bundled) sibling projects.
API Source
- Read:
GET /api/settings/compute
- Write:
PUT /api/settings/compute
- Both projects use the same API; no separate endpoints.
Deployment Mode
| Mode |
Access |
| Nunba (bundled) |
Settings page rendered in-app; API calls to https://hevolve.ai (or localhost:6777 if self-hosted) |
| Non-bundled (React app) |
Settings page in external React app; API calls to configured HART OS host |
Wireframe
┌─────────────────────────────────────────────────────────────┐
│ COMPUTE SETTINGS [Save] │
├─────────────────────────────────────────────────────────────┤
│ │
│ ── Model Routing ────────────────────────────────────── │
│ │
│ Own Task Policy: [local_preferred ▼] │
│ Hive Task Policy: [local_preferred ▼] │
│ Max Hive GPU %: [====50====] 50% │
│ │
│ ── Metered API Policy ───────────────────────────────── │
│ │
│ Allow Metered for Hive: [ ] OFF │
│ Daily Limit (USD): [$0.00 ] │
│ ⚠ Central nodes cannot enable metered APIs for hive. │
│ │
│ ── Feature Flags ────────────────────────────────────── │
│ │
│ Accept Thought Experiments: [✓] ON │
│ Accept Frontier Training: [ ] OFF │
│ Offered GPU Hours/Day: [8.0 ] │
│ │
│ ── Settlement ───────────────────────────────────────── │
│ │
│ Auto-Settle: [✓] ON │
│ Min Settlement (Spark): [10 ] │
│ │
│ ── Provider Identity ────────────────────────────────── │
│ │
│ Cause Alignment: [democratize_compute ▼] │
│ Electricity Rate: [$0.12 /kWh] │
│ │
│ Node ID: my-node-001 Tier: regional │
│ │
└─────────────────────────────────────────────────────────────┘
Field-to-API Mapping
| UI Field |
API Field |
Type |
Validation |
| Own Task Policy |
compute_policy |
dropdown |
local_only, local_preferred, cloud_preferred, cloud_only |
| Hive Task Policy |
hive_compute_policy |
dropdown |
Same as above |
| Max Hive GPU % |
max_hive_gpu_pct |
slider |
0-100 |
| Allow Metered for Hive |
allow_metered_for_hive |
toggle |
Boolean; disabled on central tier |
| Daily Limit (USD) |
metered_daily_limit_usd |
number |
>= 0 |
| Accept Thought Experiments |
accept_thought_experiments |
toggle |
Boolean |
| Accept Frontier Training |
accept_frontier_training |
toggle |
Boolean |
| Offered GPU Hours/Day |
offered_gpu_hours_per_day |
number |
>= 0 |
| Auto-Settle |
auto_settle |
toggle |
Boolean |
| Min Settlement (Spark) |
min_settlement_spark |
number |
>= 1 |
| Cause Alignment |
cause_alignment |
dropdown |
democratize_compute, frontier_training, thought_experiments |
| Electricity Rate |
electricity_rate_kwh |
number |
>= 0 |
Role-Based Visibility
| Role |
Behavior |
| Admin |
Full read/write access to all settings on all nodes |
| Operator |
Read/write access to own node's settings |
| Viewer |
Read-only view of settings; Save button hidden |
Tier-Based Restrictions
When node_tier == "central":
- The "Allow Metered for Hive" toggle is disabled
- A warning banner is displayed: "Central nodes cannot enable metered APIs for hive tasks"
- PUT request with
allow_metered_for_hive: true returns 403
Save Behavior
- Collect all changed fields
PUT /api/settings/compute with changed fields only
- On success: toast "Settings saved" + refresh display
- On 403: show tier restriction error
- On 500: show generic error
Implementation Notes
- Load settings on page mount via
GET /api/settings/compute
- Node ID and tier are read-only (from response, not editable)
- Provider Identity section fields are gossipped to the network (note this in UI)
- Cache invalidation happens server-side; no client-side cache needed