📖 Read-only mirror.
atlasis published from the canonical AI-Factory monorepo. Pull requests are not accepted — any commit pushed here is overwritten byscripts/mirror_satellites.shon the next sync. 🐞 Found a bug or have a request? Please open an issue.
ATLAS — planetary physical-sensor map over GAIA relays
Honest LIVE vs SIM pins · optional 3D globe with sensor towers · part of the alexar76 AI agent economy
Weather · air · fire · GNSS integrity · jamming · traffic · quake · more — live map → · landing → · run locally →
Live map · Landing · Guide (EN) · GAIA · Alien Monitor
Docs: EN · RU · ES · FR · ZH · Map legend Operator use cases: EN · RU · ES · FR · ZH Add a sensor: add-gaia-atlas-sensor (EN · RU · ES · FR · ZH)
ATLAS is the ecosystem physical sensor map: weather, air quality, tides, rivers, marine, UK grid carbon, earthquakes, wildfire, radiation, GNSS integrity stations, separately sourced GNSS jamming reports, public Finnish AIS, NWS tsunami CAP, optional own-edge ADS-B/AIS, and energy — plotted from GAIA relays. Every GNSS station is a stable clickable point_id; agents can query it through atlas.point.read@v1 or request a signed point/bbox/route field through atlas.gnss.degradation.read@v1. Inventory, derived degradation, and reported interference remain distinct claim classes. New open-data devices are registered on GAIA; map layers, pins, and watchboxes are ATLAS (no separate GAIA product UI for those surfaces). Pins are labelled LIVE only when GAIA exposes an upstream provenance source URL; simulators are SIM. It ships as the atlas node on Alien Monitor (/embed preview + full-map CTA) and includes ATLAS Analyst (DeepSeek deepseek-v4-pro by default) with prompt-injection firewall, LLM retries, reply language matching the question (fallback: UI locale), and a full AICOM / AIMarket ecosystem brief so the assistant can answer Hub / ARGUS / Metis / GAIA questions — not only sensor readings.

Full map · 24 layers (incl. fire / radiation / jamming / public AIS / tsunami / cyclone / ADS-B / traffic) · LIVE/SIM · in-view list

ATLAS Analyst · Alien Monitor embed
| Surface | URL / path |
|---|---|
| Public map | https://atlas.modelmarket.dev/ |
| Landing (Pages) | https://alexar76.github.io/atlas/ |
| Alien Monitor embed | /embed |
| Health | /health |
| Snapshot / viewport / station / watchboxes | /api/v1/* |
| Monitor payload | /api/v1/monitor |
| Analyst chat | /api/ai/ask |
pip install aimarket-atlas
export DEEPSEEK_API_KEY=sk-… # optional Analyst
export ATLAS_GAIA_URL=https://iot.modelmarket.dev
atlas --host 127.0.0.1 --port 9330
open http://127.0.0.1:9330/Docker:
docker compose -f docker-compose.local.yml up -d --build
open http://127.0.0.1:9330/From a monorepo checkout (editable):
cd atlas
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
atlas --reload --host 127.0.0.1 --port 9330# From monorepo root (factory host):
./scripts/deploy_atlas.sh --remote root@<host>
# Public UI (no password): https://atlas.modelmarket.dev/Priced capabilities are metered (ATLAS_PAYMENT_ENFORCED=1) and there are two ways to reach
them. Anonymous callers get a free allowance — five invokes an hour, keyed by
X-AIMarket-Sandbox-Visitor or the caller's address. Buyers who need more hold a prepaid
credit account and send its key as X-API-Key: charged the published price per call, exempt
from the allowance, and never billed for a refusal.
The allowance used to be the ceiling for everyone, including anyone building a product on ATLAS evidence — four cite-desks selling monthly plans were capped at five runs an hour between all of their customers, and going through the hub did not help, because the hub's own call to ATLAS lands on the same allowance.
# Issue an account (operator only; works before the rail is switched on)
curl -sX POST https://atlas.modelmarket.dev/ai-market/v2/accounts \
-H "X-Atlas-Token: $ATLAS_OPERATOR_TOKEN" \
-d '{"label":"acme","grant_usd":25}' # the api_key is returned ONCE
# Top up, replay-safe on the reference
curl -sX POST https://atlas.modelmarket.dev/ai-market/v2/accounts/<id>/topup \
-H "X-Atlas-Token: $ATLAS_OPERATOR_TOKEN" \
-d '{"amount_usd":25,"reference":"inv-1043"}'
# What the operator is holding for other people
curl -s https://atlas.modelmarket.dev/ai-market/v2/credits/stats \
-H "X-Atlas-Token: $ATLAS_OPERATOR_TOKEN"
# What a buyer sees about itself
curl -s https://atlas.modelmarket.dev/ai-market/v2/accounts/me -H "X-API-Key: atls_…"A charged response carries the price and the remaining balance, so an unattended buyer can watch its own money instead of discovering the end of it in a refused call:
| Header | Meaning |
|---|---|
X-Atlas-Credit-Charged-Usd |
What this call cost — 0.000000 on a refusal |
X-Atlas-Credit-Balance-Usd |
What is left after it |
X-Atlas-Credit-Low |
1 once the balance is at or under ATLAS_CREDITS_LOW_BALANCE_USD (default 1.00, 0 disables) |
The same threshold makes ATLAS warn its operator in the log — once per account per ten
minutes, in calls rather than only in dollars ("about 7 more call(s) at $0.06"), because the
number that matters is how long the buyer has left, not the figure itself. Desks in this
family read the headers and publish them at /api/public/health under supply.credit.
Full rail, in five languages — what the money does, what it does not, and the order to switch it on in: CREDIT-ACCOUNTS · RU · ES · FR · ZH.
Turn the rail on with ATLAS_CREDITS_ENABLED=1 after the accounts exist and the keys are
handed out: enabling it first puts every buyer holding a not-yet-issued key back on the
anonymous allowance at the moment it starts expecting to be charged. A prepaid balance is
somebody else's money, so ATLAS_CREDITS_DB_PATH must point at the mounted volume — the node
refuses to boot rather than take money into a ledger a rebuild would delete.
| Mechanism | Role |
|---|---|
| Cheap fleet poll | Pins only |
| Viewport readings | Sensors in the visible bbox |
| Click detail | Human-readable card + shared TTL cache |
| LIVE vs SIM | source present ⇒ LIVE; else SIM (GAIA rule) |
| Single-flight | One GAIA call per sensor under concurrency |
| SSE | Fleet snapshot fan-out |
| Analyst | Server snapshot + firewall + retries; language = question ∥ UI locale |
Buyers cannot pass lat/lon into GAIA invoke — anchors are operator env on GAIA.
pip install -e ".[dev]"
# or: pip install -r backend/requirements.txt -r backend/requirements-dev.txt
pytest -qMocked GAIA — no network required. 624 tests.
Node id atlas · env ALIEN_ATLAS_URL / ALIEN_PUBLIC_ATLAS_URL · panel: LIVE/SIM sensors + /embed iframe + full map CTA.
MIT — see LICENSE.
Map UI + watchboxes over GAIA relays. Open-Meteo CC BY 4.0; NWS/USGS/NOAA U.S. public domain; UK Carbon Intensity open data; FIRMS cite NASA; Safecast CC0; CyberNews GNSS CC BY 4.0.