Senlay Open Network
Publish signed station observations and discuss a limited contributor pilot. Coverage, source rights, API limits and access are confirmed manually.
Contribute observations through a scoped pilot.
Registering a station does not automatically grant unlimited API access. Contributor eligibility, source rights, available coverage, quotas and pilot duration are agreed with Senlay before deployment.
Your station's accepted observations appear in later verification responses as explicitly labelled direct station evidence, alongside the sources already covering that coordinate.
Inspect station quality and its limits.
Station placement, exposure, calibration and maintenance can affect a reading. Distance alone does not establish that a measurement represents the requested coordinate.
Senlay exposes source distance, freshness, basic plausibility checks and available model disagreement. Calibration and neighbouring-station validation remain pilot work. A station observation should be treated as evidence with uncertainty, not assumed ground truth.
Connect a station
Create a Senlay account, register a provider, register a station under it, then publish signed observations. This is the live sequence from the senlay-platform repository README.
curl -sS -X POST https://senlay.cloud/api/v1/providers/register \
-H "Authorization: Bearer $API_KEY" -H 'content-type: application/json' \
--data '{"name":"My community network","slug":"my-community-network"}'
curl -sS -X POST https://senlay.cloud/api/v1/stations/register \
-H "Authorization: Bearer $API_KEY" -H 'content-type: application/json' \
--data '{"providerId":"prv_REPLACE_ME","name":"Beach wind station","sensorType":"weather_station","location":{"lat":15.8801,"lng":108.3380}}'
Save the station secret when it is returned. The original secret is shown once. The server stores a derived signing key that remains sensitive and can authenticate station submissions. If the original secret is lost, rotate it in the dashboard and update the station software; an in-person visit is not inherently required.
Before publishing live data, use the dashboard's Send signed test action to verify the station secret and payload shape without storing a fake observation. Then publish signed observations:
curl -sS -X POST https://senlay.cloud/api/v1/observations \
-H "X-Senlay-Station-Id: stn_REPLACE_ME" \
-H "X-Senlay-Timestamp: $TIMESTAMP" \
-H "X-Senlay-Signature: $SIGNATURE" \
-H 'content-type: application/json' \
--data '{"id":"obs_2026...","stationId":"stn_REPLACE_ME","observedAt":"2026-09-05T12:00:00Z","location":{"lat":15.8801,"lng":108.3380},"measurements":[{"phenomenon":"wind.speed","value":7.4,"unit":"m/s"}]}'
The senlay-platform JavaScript SDK computes the X-Senlay-* signature headers for you. Header formats, signing rules, and the full observation schema are documented in the network protocol document.
Open protocol, closed engine
State the boundary plainly, because a clear line is easier to trust than a vague one.
Open — Apache 2.0
The observation envelope and JSON Schema, deterministic validation and normalization, HMAC request signing, the JavaScript SDK, the MQTT bridge, and the edge gateway.
Private
The aggregation engine, divergence scoring, the global registry, authentication, billing, provider credentials, the accumulated place-memory corpus, and risk models.