infiniFi Data: operators
What a supplier needs to serve infinifi.
- Service ID
infinifi- Required version
infinifi >= 1.0- Image
ghcr.io/thefeloniousmonk/infinifi:1.0.1- Minimum RAM
- 1 GB
- RPC types
- REST (expected)
Backend
The infinifi container (Node 22, no third-party dependencies; built from github.com/TheFeloniousMonk/portal-services, infinifi/backend) behind the HA RelayMiner with the rest backend pointed at it. A stateless pass-through: each relay makes one to five GETs to the public infiniFi API, which needs no key. Protocol-wide reads are cached in memory for 60 s (votes and opportunities 300 s) and served stale for up to 15 minutes if the upstream is down; wallet reads are never cached. Needs outbound HTTPS to api.infinifi.xyz. Light on CPU and RAM. Tunable with IF_* environment variables.
REST
Backend: infinifi container on :8080; mount at /
POST /v1/<endpoint> with a JSON body (endpoints without required input also answer GET), plus GET /v1/version, /healthz, /v1/capabilities, /v1/openapi.json. Every response is a JSON object, including errors (which carry an 'error' field).
Notes
Answers in well under a second when cached and within the 8 s upstream deadline otherwise. No rate limits to disable. SAGE operators: type generic (its name for passthrough), rpc_types ["rest"], relay_timeout at least 15s; see sage-service.yaml in the service repository.
Health checks
| Type | Request | Expect | Why |
|---|---|---|---|
| REST | GET /v1/version | $.service matches ^infinifi$ | Identity probe: pins the backend to this service so a wrong backend cannot be staked under this id. |
| REST | GET /healthz | $.status matches ^ok$ | Readiness probe: 200 only while the infiniFi protocol data can be served, fresh or from the 15-minute stale window. |
| REST | POST /v1/yields{} | $.staked.token matches ^siUSD$ | Functional probe: the staked token is always siUSD, so the check is stable while the APYs change. Served from the shared 60 s cache. |
Running it
Build the backend from backend/, or pull the published image:
docker pull ghcr.io/thefeloniousmonk/infinifi:1.0.1Images are tagged with the version the backend reports at GET /v1/version. Keep up with the required version above; an older backend can reject requests that newer callers send.
The service's deploy/ folder has:
The service's docs cover its settings and anything a supplier must provide.