Skip to main content

ATLAS

CI Pages deploy Live demo status Landing PyPI GAIA relays Python >=3.11 624 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.

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.

Metadata

Release files for aimarket-atlas 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aimarket-atlas 0.3.0
File Size Uploaded
aimarket_atlas-0.3.0.tar.gz 12.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for aimarket-atlas 0.3.0
File Interpreter ABI Platform
aimarket_atlas-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.3 MB

Release files / aimarket_atlas-0.3.0.tar.gz

Download URL aimarket_atlas-0.3.0.tar.gz
Size 12.5 MB
Tags Source
SHA-256 checksum
How to use checksums
cdb673e79acee0380b4235eac8f9e210a8309a8673144e8285f3c9bbb122d080
BLAKE2b-256 checksum
How to use checksums
0ceaf54ee83e85e73f3e6e9949be4e079590fcd1abe2f20a7b193b5891b82069
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / aimarket_atlas-0.3.0-py3-none-any.whl

Download URL aimarket_atlas-0.3.0-py3-none-any.whl
Size 797.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1e119fa96dee724c6bae4c03eb97d6671778a9c9995d8b2675cc427dd658f50f
BLAKE2b-256 checksum
How to use checksums
497018c27a4573f090575d98ad6d96760a0b7a0ef4004ca3bfef0e2df0d9cb02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page