Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

ai-almanac

Local-first benchmarking platform for AI weather and climate models.

Pick a region and an event type (e.g. monsoon onset), select one or more models, submit a benchmark, and see per-grid-point skill maps (MAE, FAR, miss rate, RMSE, ACC, bias) rendered in your browser. The whole thing — web UI, API, benchmark runner, and database — is a single Python process you launch on your own GPU workstation (NVIDIA DGX Spark, a lab box, your laptop for the LLM-driven UI).

pipx install ai-almanac      # or `uv tool install ai-almanac`
ai-almanac serve             # opens http://localhost:8765 in your browser

That's it.


What you get

Layer Where it lives
Web UI SvelteKit SPA, bundled into the wheel
API FastAPI, served on the same port as the UI
Database SQLite under ~/.local/share/ai-almanac/almanac.db (auto-migrated)
Storage Filesystem under the same data directory
Benchmark runner Detached local supervisor, with ROMP in a Pixi-managed environment
Access model Local, single-user application bound to the loopback interface

One Python package. One process. One port. One data directory.

Benchmark jobs run in detached local supervisor processes. Closing or restarting the web server does not stop active work. Restarting ai-almanac serve reconciles queued and running jobs from SQLite, and active jobs can be canceled from the benchmark UI.


Install

# Recommended — uv tool install gives you a managed venv per CLI
uv tool install ai-almanac

# Or pipx
pipx install ai-almanac

# Or pip (less isolated)
pip install ai-almanac

Once a homebrew tap / .deb is published, brew install ai-almanac and apt install ai-almanac will be available too. The PyPI package is the source of truth — those channels are thin wrappers.

Prerequisites for running real benchmarks and blends

Actual benchmark and model-blending execution need separate scientific Python stacks. Those dependencies live in isolated Pixi-managed environments to keep the core install small:

# Install pixi (one-time): https://pixi.sh
curl -fsSL https://pixi.sh/install.sh | bash

# Materialize both workload environments (takes a few minutes the first time)
ai-almanac env prepare

This also checks out the blending workflow at the version pinned by AI Almanac. Subsequent ai-almanac serve runs reuse both environments. ai-almanac env info prints the installed benchmark package versions.


Usage

ai-almanac serve                       # default: 127.0.0.1:8765, opens browser
ai-almanac serve --port 9000           # alternate port
ai-almanac serve --no-open             # don't auto-launch a browser tab
ai-almanac serve --reload              # dev mode (uvicorn auto-reload)
ai-almanac env prepare                 # install / update workload environments
ai-almanac env info                    # show installed package versions

ai-almanac reset --confirm             # wipe ~/.local/share/ai-almanac/
ai-almanac version

Test shared mode locally

Run the complete multi-user architecture locally without DNS, TLS, an OIDC provider, or a GPU:

pixi run self-host-local

Open http://localhost:18080. The stack uses PostgreSQL, shared ownership and authorization, persistent Docker volumes, and synthetic benchmark outputs. Switch between the built-in administrator and regular user at http://localhost:18080/__dev.

On a host with NVIDIA Container Toolkit, run real benchmarks instead:

pixi run self-host-local-gpu

The same shared stack can exercise GCS artifact storage or the deployed Modal runner. GCS requires three bucket names and a service-account or Application Default Credentials JSON file:

export GCS_DATA_BUCKET=my-data-bucket
export GCS_UPLOADS_BUCKET=my-uploads-bucket
export GCS_OUTPUTS_BUCKET=my-outputs-bucket
export GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/gcloud/application_default_credentials.json"

pixi run self-host-local-gcs

To submit jobs to Modal, also export MODAL_TOKEN_ID and MODAL_TOKEN_SECRET, deploy the Modal app, then run:

pixi run self-host-local-modal

Modal mode uses GCS because remote workers cannot access the local Compose volume. The local runner supports either local storage or GCS.

Stop the stack with pixi run self-host-local-down. Use pixi run self-host-local-reset to also delete its PostgreSQL and application data volumes.

For an internet-accessible or multi-user installation, follow the deployment guide. Do not expose personal mode to untrusted users.

Where data lives

Everything goes under $AI_ALMANAC_DATA_DIR, defaulting to:

  • Linux: ~/.local/share/ai-almanac/
  • macOS: ~/Library/Application Support/ai-almanac/
  • Windows: %LOCALAPPDATA%\ai-almanac\
$AI_ALMANAC_DATA_DIR/
├── almanac.db          ← SQLite (WAL mode)
├── uploads/            ← user-uploaded obs datasets
├── jobs/<job_id>/      ← run logs, NetCDF outputs, figures
├── benchmark-env/      ← Pixi environment (ROMP + scientific/geo dependencies)
├── blending-env/       ← Pixi environment and pinned blending workflow
└── cache/              ← weight cache (HuggingFace), ARCO chunks

Override with AI_ALMANAC_DATA_DIR=/some/path ai-almanac serve to move one instance's private state. Do not point multiple running instances at the same application data directory. Researchers may register the same read-only input dataset directories from separate AI Almanac instances.


Adding data

Open Data in the web UI and register local observation or model-output directories. AI Almanac checks the file pattern and configured NetCDF variable before making a source available to benchmark workflows.


Development

Install Pixi, then start the complete development stack:

pixi run dev

This runs FastAPI with Python auto-reload on http://localhost:8765 and the SvelteKit Vite server with hot module replacement on http://localhost:5173. See DEVELOPMENT.md for the full task list.


License

MIT.

Metadata

Release files for ai-almanac 0.1.0a1

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

Source distribution (sdist)

Source distribution for ai-almanac 0.1.0a1
File Size Uploaded Provenance Actions
ai_almanac-0.1.0a1.tar.gz 1.3 MB With provenance Details for ai_almanac-0.1.0a1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ai-almanac 0.1.0a1
File Interpreter ABI Platform Actions
ai_almanac-0.1.0a1-py3-none-any.whl Python 3 none any Details for ai_almanac-0.1.0a1-py3-none-any.whl

Total release size: 2.7 MB

Release files / ai_almanac-0.1.0a1.tar.gz

Download URL ai_almanac-0.1.0a1.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
a40376fc5919a8bf0cf1883c02d84c5df079c45601696e4af68c88038dc12c3b
BLAKE2b-256 checksum
How to use checksums
e92269e741d8bb5aaeefd15bd920362620b4c612c0983e07f203bf9256e5fd51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / ai_almanac-0.1.0a1-py3-none-any.whl

Download URL ai_almanac-0.1.0a1-py3-none-any.whl
Size 1.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
63aba2052e61571a6dfb81c09879fac53bee41f54f1fa8f41f3a19576315f79f
BLAKE2b-256 checksum
How to use checksums
259f7f2e5295eaafe590ce3a446d506ed6fcb422c7c356baa4230f9b141c1329
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Security for ai-almanac 0.1.0a1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ai_almanac-0.1.0a1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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