Endpoint matrix
| Hostname | Path | Network | Profile | Middlebox | Default rate limit | TLS |
|---|---|---|---|---|---|---|
rpc.sigil.ml | /rpc, /health, /metrics, /ws | mainnet | public | Cloudflare | 25 req/s sustained, 100 burst per IP | Cloudflare-managed |
rpc-direct.sigil.ml | /rpc, /health, /ws | mainnet | public | none | 10 req/s sustained, 25 burst per IP | Let’s Encrypt via cert-manager |
canary-rpc.sigil.ml | /rpc, /health, /metrics, /ws | canary | public | Cloudflare | 25 req/s sustained, 100 burst per IP | Cloudflare-managed |
canary-rpc-direct.sigil.ml | /rpc, /health, /ws | canary | public | none | 10 req/s sustained, 25 burst per IP | Let’s Encrypt |
Why two endpoints
A single Cloudflare-fronted public RPC is operationally clean but reduces censorship resistance: Cloudflare can geofence, log, or reject any user’s traffic, which reproduces the single-CDN concentration that Solana’sapi.mainnet-beta.solana.com is critiqued for.
The dual-endpoint design is the compromise:
rpc.sigil.ml— default for browser users. Full WAF, full DDoS shield, generous rate limit. Optimised for “it just works”.rpc-direct.sigil.ml— the no-middlebox escape hatch. Lower rate limit, full IP exposure to the validator-cluster ingress. Documented trade-off.
status.sigil.ml.
Rate limits
Per-IP token bucket. Defaults benchmarked against:| Provider | Free-tier rate |
|---|---|
| Alchemy | 25 req/s |
| Infura | ~10 req/s |
| QuickNode | 25 req/s |
Solana api.mainnet-beta.solana.com | ~4 req/s/IP |
Public profile defaults
Direct profile defaults
Method profile
Public RPC profiles only expose the method table innode/sigil-rpc/src/profiles.rs::PUBLIC. Validator-internal methods (peer management, block production, log inspection) return MethodNotFound on the public endpoints.
The conformance test node/sigil-node/tests/rpc_conformance.rs asserts that every method in the public profile resolves under the public profile and that validator-internal methods reject from it.
Operational checks
When to escalate
| Symptom | Action |
|---|---|
| Rate-limit 429s spike on the public endpoint | Verify Cloudflare rate-limit dashboard; raise the per-IP limit if legitimate; add ASN challenge if abusive. |
| Direct endpoint reachability drops | Check ingress-nginx and the LB host; verify DNS is grey-cloud (not orange). |
Method dispatch returns MethodNotFound for canonical methods | Re-deploy the RPC pods; verify profile flag matches public not validator. |
5xx from /rpc | Pod log inspection; check AkashaKV health on the backing nodes. |
See also
- DDoS protection — Cloudflare WAF rules.
- Run an RPC node — operator handbook.
- JSON-RPC overview — method reference.