Myprod Control

Hosted control surface for Oracle, DigitalOcean, Nomad, and Traefik. Awaiting live data

Locked
Open API ↗
agent locked

Personal compute pool

Run backend services across the Oracle control plane and temporary worker VPS capacity without leaving the hosted dashboard.

Public APIchecking
Controlchecking
Workerschecking
Operator console

Token stays in this browser.

locked
Need pool state?

Unlock and refresh to load live nodes, apps, system status, and actions.

System Status

Nomadlocked
Traefiklocked
WireGuardlocked

Endpoint Health

RouteStatusLatency
Checking Oracle ingress...

Traffic Shape

Smoke latency

Resource Utilization

Live Nomad client stats
Unlock to load node resources.

Managed Apps

locked
NameImageDomainDNSNodeReservationStatusAction
Unlock to load live apps.

Project Reservations

Exclusive worker workspaces that are isolated from shared Nomad scheduling.

ProjectWorkerIsolationStatus
Unlock to load project reservations.

Nodes

locked
Unlock to load live nodes.

Node Actions

Unlock to load node controls.

Agent Output

Agent is locked. Enter the Oracle agent token to enable hosted operations.

Are you sure?

Add application

Register a public container image. Deployment remains a separate action.

Myprod will ensure an A record points this hostname to Oracle ingress. Conflicting records are never overwritten.

Public images only. DNS credentials remain on Oracle. Secrets, environment variables, and persistent volumes are not stored by this release.

Myprod operator FAQ

How applications, nodes, reservations, telemetry, and locked access work.

What is sample-api?

sample-api is a tiny Traefik whoami workload used to verify the complete production path: Nomad scheduling, container networking, Oracle ingress, DNS, TLS, and HTTP/HTTPS smoke checks. It is operational evidence, not a dependency of new applications.

What is the difference between a managed app and a project reservation?

A managed app is a container scheduled by Nomad with an explicit CPU and memory reservation. Several apps can share a node. A project reservation removes an entire worker from shared scheduling for privileged host-level work such as package installation, kernel or network changes, Mininet, or hardware-model toolchains.

What must exist before I add an application?
  • An immutable public container image for the target CPU architecture.
  • A service listening on 0.0.0.0 at the declared container port.
  • An unauthenticated health path returning HTTP 2xx.
  • A hostname under the configured Netlify zone, or an externally managed hostname already pointing to Oracle ingress at 140.245.5.201.
  • A joined, eligible, non-draining target node with enough capacity.
What do the Add application fields mean?
  • Name: stable Myprod/Nomad identifier.
  • Domain: public hostname without scheme, path, or port.
  • Container image: public registry reference, preferably pinned to a commit or digest.
  • Target node: exact machine where Nomad should place the workload.
  • Container port: port exposed by the process inside its container.
  • CPU and memory: scheduler reservations, not usage measurements.
  • Health path: HTTP path used to decide whether deployment is healthy.
  • Automatic DNS: create and verify the exact Netlify A record; disable it for externally managed DNS.
Does Register application deploy anything?

Register never starts a workload. It validates and persists configuration and, when automatic DNS is selected, may create or verify the external A record after a separate confirmation. Deploy renders and submits the live Nomad job, waits for a healthy allocation, and requires its own confirmation because it can replace a running workload.

What does Resource Utilization show?

CPU, memory, and root-disk figures are actual host measurements returned by Nomad client statistics. App CPU and memory values are reservations. They describe scheduler capacity promised to an app and are not the app's current process usage.

What can node actions change?
  • Freeze: stops new scheduling while existing allocations continue.
  • Unfreeze: makes a clean, non-draining, unreserved node eligible.
  • Drain: migrates or stops allocations and blocks new placement.
  • Reserve: assigns an empty worker exclusively to one project.
  • Release: clears ownership but leaves the node frozen for inspection.

Every powerful action requires a specific confirmation.

How do I add more compute capacity?

Create and firewall the VPS at the cloud provider, prepare SSH access, then use the SSH-capable local Myprod operator flow to register and join it to WireGuard and Nomad. Vercel cannot perform the first join because private SSH keys must remain on the operator machine. After joining and synchronization, the hosted dashboard can monitor and control it.

What remains visible while the dashboard is locked?

The browser keeps the last successful pool status snapshot and its capture time. Locked views are explicitly labeled cached and all mutation controls remain disabled. The public ingress smoke checks can still refresh without an agent token. Cached state can be stale and must never be treated as proof of current scheduler state.

What is intentionally unsupported?

The current app form does not store secrets, environment variables, private-registry credentials, persistent volumes, arbitrary Nomad configuration, or create cloud instances. Managed DNS currently supports safe Netlify A-record creation only; it does not edit or delete conflicting records.