Documentation · Releases · Marsyas

Marsyas — Pythia node pool

v.Chronos.Marsyas.0 — legacy v.H.1.23

The hub lends its chainweb fleet to Pythia as a metered pool of IP-keyed slots — Pythia plays through the nodes the hub already runs, the hub records each read, and every slot heals itself when its backing node goes dark.

Marsyas.0 turns the hub's chainweb fleet into a service Pythia consumes. Pythia reads the fleet through one POST-to-read node listing and receives the hub's containers as IP-keyed slots; as it routes reads through those slots the hub records each read as it arrives; and each slot self-heals — if the node backing a slot goes unreachable the slot fails over to another reachable node on its own, so a consumer never routes into a dead slot. Only genuinely reachable, LIVE-operator containers are offered as slots. Which containers are enrolled shows as a per-container Eye badge on the hub's nodes page. An operator-reward scaffold — Stoicism / PythXP for the operators whose nodes serve Pythia — is modelled end-to-end but stays INERT behind an arm-flag: it moves no reward on its own until an Ancient admin arms the pool.

Why “Marsyas”

Marsyas was the satyr who picked up the aulos Athena had thrown away and played it so masterfully that he was heard across the land — a ready-made instrument taken up and played through by another.

For this release, “Marsyas” names the shape of the node pool: the hub does not build anything new to run — it lends the chainweb fleet it already runs to an outside consumer. Pythia is that player, reading the fleet as a pool of slots and routing its reads through them, while the hub records every read and keeps each slot healthy.

What changed for the operator

  • The hub lends its chainweb fleet to Pythia. A single POST-to-read node listing at /api/pythia/nodes/ surfaces the fleet to Pythia as IP-keyed slots — a bare-IP slot_id per container — with a LIVE-operator join so only genuinely reachable, live containers are ever offered.
  • Reads are metered as they arrive. /api/pythia/usage/ records each read Pythia routes through a slot the moment it arrives, with a clear split between a malformed usage report and a report against a slot the hub does not know.
  • Slots heal themselves. When the node backing a slot goes unreachable the slot fails over to another reachable node on its own, so a consumer never routes into a dead slot — no operator action required.
  • A per-container Eye badge. /hub/nodes marks which of your containers are enrolled in the Pythia pool with a per-container Eye badge.
  • The operator-reward scaffold is inert until armed. The Stoicism / PythXP reward for operators whose nodes serve Pythia is wired end-to-end but stays OFF behind an arm-flag — nothing pays out on its own until an Ancient admin arms the pool.

Operator notes

  • No reward moves until you arm it. The reward accrual is modelled but inert by design — no Stoicism / PythXP is minted for pool-serving operators before an Ancient admin arms the pool.
  • Only live, reachable containers are offered. The LIVE-operator join means an offline or non-live container is never listed to Pythia as a slot.
  • Stale reads are forfeited, not accrued late. A usage report older than the retry window is forfeited rather than credited out of time, so the metering stays honest.