The panel is a no-build web app (native ES modules) served by your own node at http://localhost:8545/app/. It talks only to that node's control API (API), which is loopback-only unless you opt in to remote admin (a login on one hostname).
Try it without installing anything: app.elyrainference.com is a live node with a real model; signed out you get a chat page that shows which machine answered (Live app and the try page). The views below are the full panel, which is what you run on your own node.
The top bar shows VPR · :<port>, the wallet balance chip, and DEMO MARKET · N SIMULATED PEERS while the simulated market is on. If the node is not running an overlay says so and reconnects by itself (status is polled every 2 s).
Views#
| # | View | What it is for |
|---|---|---|
| - | Overview | Your endpoint URL, requests/tokens/spend/earnings for 24 h, a 14-day traffic chart, the active policy, recent routes, and the I buy / I sell checklists |
| 01 | Playground | Chat through your own router. Pick auto, an auto:* shorthand or a model. Under each answer: which peer served it (SIMULATED PEER or LIVE), model, price, CLEAR or TEE, tokens, cost, latency. Next to it a route preview shows the top 6 candidates and why the others lost |
| 02 | Models | Every listing the router can reach (live peers, your own upstreams, simulated ones), filterable All / Live / TEE / Cheapest / Fastest / Top rated, with price per MTok, speed, reputation, privacy and source. TRY sends a test request to that listing |
| 03 | Routing | The policy: four weights (price, speed, reputation, privacy), presets (Balanced, Cheapest, Fastest, Private, Top rated), "Require private peers" (teeOnly) and a max price. Live preview of the ranking as you change it |
| 04 | Network | Peer counts, topology graph, this node's identity (name, node id, wallet, peer URL), the demo-network switch, add a peer by URL, and the TEE trust list (image digests you accept) |
| 05 | Payments | Wallet balance, spent/earned, the receipt ledger, settlement batches. With an escrow configured: network settings, mint (mock token only), approve + deposit, withdraw, vouchers both ways, explorer links |
| 06 | Provide | Switch providing on, pick the model source and models to offer, price per MTok, credit limit, privacy claim, earnings (all-time, 24 h, unsettled, per-day bars, per buyer wallet) and what peers see |
| 07 | Connect | Base URL with curl / Python / Node / env snippets, Detect local (finds Ollama on 11434, LM Studio on 1234, 8000, 8080), and add a model source (Ollama, LM Studio, OpenAI, OpenRouter, Groq, Together, or any /v1 server) |
What the panel tells you to do next#
- Overview shows one banner at the top of the page, derived from live state. With no real source: "Connect a real model" with
Detect Ollama(opens Connect and runs detection) andADD A SOURCE. With a real source while the simulated market is still on: "Your real model is connected" withTRY ITandHIDE SIMULATED MARKET(turns the demo network off). Otherwise no banner. - Connect says so when a source was added ("Ollama is ready", models,
Open playground), and explains what to do when detection finds nothing. - Playground lists Your models (live) above the simulated market, says in the empty state who will answer, and while a reply is pending shows the elapsed seconds and, after 6 s, that a first request after idle can take a minute (a cold model load). Result badges read
LIVE/SIMULATED PEER, the peer, model, price,CLEAR/TEE, tokens, cost and time (seconds above 1 s). - A live source always wins over simulated peers for
auto(USAGE), so the route preview shows only real options once you have one.
Verified at 390 px wide (all eight views, no element wider than the screen): one column, tables and code scroll inside their own box, the topology graph scrolls inside its box.
Typical flows#
Use a real local model: Overview → Detect Ollama (or Connect → Detect local, or add http://127.0.0.1:11434/v1) → Add → Open playground → send. See OLLAMA.
Tune routing: Routing → drag weights or choose a preset → watch the live preview → the new weights apply to every request sent to auto. A specific model name ignores the weights for model choice and just picks the best peer for that model.
Buy privately: Routing → tick "Require private peers". Requests with no private route fail instead of leaking. Private means your own machine/LAN or a VERIFIED TEE; a seller's own TEE claim shows as CLAIMED and does not count (TEE).
Pay on-chain (testnet): Payments → network robinhood-testnet + escrow address from STATUS → Mint test USDG (mock only) → Deposit → route a request to a live paid peer → the receipt appears in the ledger. Simulated peers are never settled.
Sell: PROVIDER.
Labels you will see#
| Label | Meaning |
|---|---|
SIM / SIMULATED PEER |
Comes from the built-in demo market. Never real inference, never settled |
DEMO |
Demo engine or demo claim (e.g. TEE · DEMO) |
LIVE |
A real peer or your own upstream |
CLEAR |
The operator can read prompts |
LOCAL |
Your own machine or LAN |
CLAIMED |
Seller says it runs in a TEE; unverified, does not count for private routing |
VERIFIED |
A Google-signed Confidential Space attestation passed your trust list. Proven only against a simulated Google so far (STATUS) |
MOCK |
The testnet token is our open-mint MockUSDG, worthless |
Live app and the try page#
The project's own node runs at app.elyrainference.com. Signed out you get a try page: one real chat against that node's local model, with the route shown. The full panel (everything above) is behind a login and is for the node's owner.
The try page is a small, separate surface, off unless the node sets ELYRA_PUBLIC_TRY=1 (Remote access). It only ever uses a local model on that machine: never a paid peer, never a hosted API key, never simulated answers. To use the full panel on your own node, run it (Quickstart).