Skip to content

Repository files navigation

📖 Read-only mirror. atlas is published from the canonical AI-Factory monorepo. Pull requests are not accepted — any commit pushed here is overwritten by scripts/mirror_satellites.sh on the next sync. 🐞 Found a bug or have a request? Please open an issue.

ATLAS

CI Pages deploy Live demo status Landing PyPI GAIA relays Python >=3.11 101 tests passed Docker ready MapLibre SPA DeepSeek default License: MIT

🌐 English · Русский · Español · Français · 中文 · Glossary

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

ATLAS — Earth from orbit with live sensor constellation
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.

Gallery

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

ATLAS Analyst   ATLAS embed
ATLAS Analyst · Alien Monitor embed

Surfaces

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

Quick start

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

Production

# From monorepo root (factory host):
./scripts/deploy_atlas.sh --remote root@<host>
# Public UI (no password): https://atlas.modelmarket.dev/

Getting paid

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.

Load model

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.

Tests

pip install -e ".[dev]"
# or: pip install -r backend/requirements.txt -r backend/requirements-dev.txt
pytest -q

Mocked GAIA — no network required. 624 tests.

Alien Monitor

Node id atlas · env ALIEN_ATLAS_URL / ALIEN_PUBLIC_ATLAS_URL · panel: LIVE/SIM sensors + /embed iframe + full map CTA.

License / attribution

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.

About

ATLAS — planetary physical-sensor map over GAIA (LIVE/SIM layers including fire, flood, lightning, alerts, EFFIS, volcano) with Hub composites situation.brief / fire.weather / nearest / watchbox, DeepSeek Analyst, and Alien Monitor embed.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages