Join the atmowx network
atmowx is an open, decentralized weather network built on the AT Protocol. Your station's observations live in your own atproto repository — you own the data; atmowx.net just indexes what the network publishes. Anyone can join: no registration, no API key, no permission needed.
How it works
- Your account publishes a
net.atmowx.stationrecord (name, location at the precision you choose, elevation, hardware) and a stream ofnet.atmowx.observationrecords — one per reading. - All measurements are SI units encoded as scaled integers
(
{"value": 214, "scale": -1}= 21.4 °C), because the atproto data model has no floats. - Schemas are published, resolvable lexicons under
net.atmowx.*— inspect them atat://atmowx.net/com.atproto.lexicon.schema/net.atmowx.observation. - The map at atmowx.net discovers new stations automatically from the firehose, history included.
The quick path: run the bridge
Our open-source, MIT-licensed bridge does everything, with two ways in — run either or both:
- Cloud polling — the bridge reads the Ambient Weather Network API (WS-2902 and friends with an AWN account)
- Direct push — your console posts each reading straight to the bridge via its custom-server feature. Ambient Weather and Ecowitt protocols, no cloud account needed, happy on a Raspberry Pi.
Grab it from tangled.org/atmowx.net/awn-bridge:
git clone https://tangled.org/atmowx.net/awn-bridge
cd awn-bridge && pnpm install
cp .env.example .env # AWN keys + your PDS credentials
pnpm tsx --env-file=.env packages/bridge/src/cli.ts station create \
--name "My Station" --lat 45.55 --lon -122.67 --elevation 61
# put the printed AT-URI into AWN_DEVICE_MAP in .env, then:
docker compose up -d
# and import your full AWN history:
pnpm tsx --env-file=.env packages/bridge/src/cli.ts backfill \
--from 2024-01-01T00:00:00Z --to 2026-01-01T00:00:00Z
In poll mode the bridge reads AWN every 5 minutes; either way it converts imperial to SI and writes idempotent records (re-running a backfill can never duplicate).
Prefer push? Set PUSH_LISTEN_PORT=8080 in .env and point your
console's custom-server config at the bridge (awnet or WSView Plus app,
path /data/report/, interval ≥ 16 s). The AWN keys become optional —
though backfill still needs them, since history only exists in the
cloud. The
bridge README has the full
walkthrough, including the plain-HTTP caveat for consoles outside your
LAN.
Any other hardware
Write the two record types with any atproto client. The contract is small: validate against the published lexicons, use SI units, derive observation record keys as TIDs from the reading time, and reference your station record by AT-URI. See the API docs for how your data becomes queryable the moment you publish.
A note on locations
Your station record's coordinates are public. Choose the precision you're comfortable with — the schema treats location precision as the owner's choice (city-block, neighborhood, or exact). Elevation matters for pressure interpretation; include it if you can.