A tool to ingest data from various sources and formats, create imagery or video based on that data, and send the results to various locations for dissemination.
Project description
Zyra
Zyra is an open-source Python framework for modular, reproducible data workflows — helping you import, process, visualize, and export scientific and environmental data.
Highlights
- Modular pieces: connectors, processors, visualizers, and utilities.
- CLI-first & streaming-friendly: compose stages with pipes and configs.
- Install what you need: keep core small; add extras per stage.
Quickstart
Install
pip install zyra
Try the CLI
zyra --help
Minimal example
# Acquire → Process → Visualize
zyra acquire http https://example.com/sample.grib2 -o sample.grib2
zyra process convert-format sample.grib2 netcdf --stdout > sample.nc
zyra visualize heatmap --input sample.nc --var VAR --output plot.png
More Examples per Module
See module-level READMEs under src/zyra/ for focused examples and options:
- Connectors/Ingest:
src/zyra/connectors/ingest/README.md - Processing:
src/zyra/processing/README.md - API (service):
src/zyra/api/README.md - MCP Tools:
src/zyra/api/mcp_tools/README.md
Learn More (Wiki)
- Getting Started: https://github.com/NOAA-GSL/zyra/wiki/Getting-Started-with-Zyra
- Workflow Stages: https://github.com/NOAA-GSL/zyra/wiki/Workflow-Stages
- Stage Examples: https://github.com/NOAA-GSL/zyra/wiki/Stage-Examples
- Install & Extras: https://github.com/NOAA-GSL/zyra/wiki/Install-Extras
- Pipeline Patterns: https://github.com/NOAA-GSL/zyra/wiki/Pipeline-Patterns
- Containers Overview: https://github.com/NOAA-GSL/zyra/wiki/Zyra-Containers-Overview-and-Usage
- API Routers & Endpoints: https://github.com/NOAA-GSL/zyra/wiki/Zyra-API-Routers-and-Endpoints
- Zyra Assistant Instructions: https://github.com/NOAA-GSL/zyra/wiki/Zyra-Assistant-Instructions
Stage Map
Swarm Orchestration
zyra swarm --plan samples/swarm/mock_basic.yaml --dry-runprints the instantiated agents.- Remove
--dry-runto execute mock simulate→narrate agents; use--memory provenance.dbto persist provenance and--guardrails schema.railto enforce structured outputs. - Guardrail validation requires the optional extra:
pip install "zyra[guardrails]"(orpoetry install --with guardrails) before using--guardrails schema.rail. - To exercise the skeleton simulate/decide flow end-to-end, try
zyra swarm --plan samples/swarm/simulate_decide.yaml --dry-run(or drop--dry-runto run the mock pipeline). - Add
--log-eventsto echo provenance events live, and--dump-memory provenance.dbto inspect existing runs without executing new stages. - Target specific stages or experiment with partial DAGs using
--agents acquire,visualize,narrate; unknown stage names are rejected early so typos do not silently skip work. - Control concurrency explicitly with
--parallel/--no-parallel(the latter forcesmax-workers=1) and use--max-workers Nwhen you want a fixed pool size. - Override LLM settings for proposal/narrate stages with
--provider mock|openai|ollama|gemini|vertex,--model <name>, and--base-url <endpoint>instead of editing.envor wizard config files. Gemini runs with eitherGOOGLE_API_KEY(Generative Language API) or Vertex credentials (VERTEX_PROJECT,GOOGLE_APPLICATION_CREDENTIALS, etc.). - A real-world example lives in
samples/swarm/drought_animation.yaml; run it withpoetry run zyra swarm --plan samples/swarm/drought_animation.yaml --memory drought.db. Createdata/drought/ahead of time, placeearth_vegetation.jpgin your working directory (or adjust the manifest), and ensure Pillow is installed forprocess pad-missing. - Preview planner output (JSON manifest with augmentation suggestions) before running:
poetry run zyra plan --intent "mock swarm plan". - Plans are YAML/JSON manifests listing agents, dependencies (
depends_on), and CLI args; seesamples/swarm/to get started.
Import (acquire/ingest)
- Docs: https://noaa-gsl.github.io/zyra/api/zyra.connectors.html
- Examples: https://github.com/NOAA-GSL/zyra/wiki/Stage-Examples
Process (transform)
- Docs: https://noaa-gsl.github.io/zyra/api/zyra.processing.html
- Examples: https://github.com/NOAA-GSL/zyra/wiki/Stage-Examples
Simulate
Decide (optimize)
Visualize (render)
- Docs: https://noaa-gsl.github.io/zyra/api/zyra.visualization.html
- Examples: https://github.com/NOAA-GSL/zyra/wiki/Stage-Examples
Narrate
Verify
Export (disseminate; legacy: decimate)
- Docs: https://noaa-gsl.github.io/zyra/api/zyra.connectors.html
- Examples: https://github.com/NOAA-GSL/zyra/wiki/Stage-Examples
LLM Providers for Wizard/Narrate
Zyra’s Wizard, narrative swarm, and discovery semantic search all share the same provider configuration. Install google-auth when needed with pip install "zyra[llm]" (or poetry install --with llm). Key options:
| Provider | Configuration |
|---|---|
| OpenAI | OPENAI_API_KEY, optional OPENAI_BASE_URL |
| Ollama | Local server on http://localhost:11434 (override with OLLAMA_BASE_URL) |
| Gemini (Generative Language API) | Set GOOGLE_API_KEY; optional GENLANG_BASE_URL, VERTEX_MODEL (default gemini-2.5-flash) |
| Gemini (Vertex AI) | Provide VERTEX_PROJECT (aliases: GOOGLE_PROJECT_ID, GOOGLE_CLOUD_PROJECT), VERTEX_LOCATION (default us-central1), and Application Default Credentials (GOOGLE_APPLICATION_CREDENTIALS pointing to a service-account JSON). Optional VERTEX_MODEL, VERTEX_ENDPOINT, VERTEX_PUBLISHER. |
| Mock | No credentials needed; deterministic offline responses. Useful for testing. |
Example ~/.zyra_wizard.yaml targeting Gemini via Vertex:
provider: gemini
model: gemini-2.5-flash
project: my-vertex-project
location: us-central1
API & Reference Docs
- GitHub Pages: https://noaa-gsl.github.io/zyra/
- CLI reference: https://noaa-gsl.github.io/zyra/api/zyra.cli.html
- Modules:
- Connectors: https://noaa-gsl.github.io/zyra/api/zyra.connectors.html
- Processing: https://noaa-gsl.github.io/zyra/api/zyra.processing.html
- Visualization: https://noaa-gsl.github.io/zyra/api/zyra.visualization.html
- Transform: https://noaa-gsl.github.io/zyra/api/zyra.transform.html
- Utils: https://noaa-gsl.github.io/zyra/api/zyra.utils.html
- API (service): https://noaa-gsl.github.io/zyra/api/zyra.api.html
Contributing
- Guide: CONTRIBUTING.md
- Discussions: https://github.com/NOAA-GSL/zyra/discussions
- Issues: https://github.com/NOAA-GSL/zyra/issues
License
Apache-2.0 — see LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zyra-0.1.47.tar.gz.
File metadata
- Download URL: zyra-0.1.47.tar.gz
- Upload date:
- Size: 20.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edddb521883868ec78b9196263905de36d4bc8c72668a9ce6e2804d188a810ef
|
|
| MD5 |
6c301745221ff1ec9095a544b614a301
|
|
| BLAKE2b-256 |
879d61a2f8029aab7250d6fec119856419b0c4f150ad953fb30349eebc627ee9
|
File details
Details for the file zyra-0.1.47-py3-none-any.whl.
File metadata
- Download URL: zyra-0.1.47-py3-none-any.whl
- Upload date:
- Size: 20.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e487759e95a1e041543cc0f99dd81deeb81b41e2528bab52c7bf16f53a12d27
|
|
| MD5 |
54b9932f94b9b934e587dbb8ad0d5da9
|
|
| BLAKE2b-256 |
bab61d81a3a2cb15e7af8464d053f078512edeaba0be21915e78f97806740e70
|