Skip to main content

Python-native semantic modeling and analysis library for agentic analytics.

Project description

Marivo

Metric-centered analysis runtime for AI agents.

Marivo is a Python library — not a hosted service or a chat UI — that turns a data warehouse into something an AI agent can analyze reliably. It is not a text-to-SQL wrapper: Python declarations are the contract, ibis expressions are the execution language, and typed frames are the boundary between analysis steps.

  • Unified semantics — Datasources, entities, metrics, dimensions, and relationships are declared in Python and addressed by semantic ref (sales.revenue), not raw table or column names.
  • Metric-centered analysis — Sessions start from a trusted metric and chain typed intents (observe, compare, decompose, correlate, forecast), each returning a typed frame.
  • Trustworthy evidence — Every operator records findings, propositions, and assessments, so any conclusion can be traced back to its inputs.
  • Readiness gatescatalog.readiness() blocks incomplete semantic objects from analysis until authoring and access issues are resolved.

Requirements

Python 3.12 or newer.

Installation

pip install marivo

Install the backend extra that matches your datasource:

Backend Install command
DuckDB pip install "marivo[duckdb]"
MySQL pip install "marivo[mysql]"
Postgres pip install "marivo[postgres]"
ClickHouse pip install "marivo[clickhouse]"
Trino pip install "marivo[trino]"
All packaged backends pip install "marivo[all]"

Marivo is deployed by installing the library where the agent runs, checking in the models/ declarations, and providing datasource secrets through environment variables referenced by *_env fields. There is no separate server.

Quick Start

Scaffold a project with the CLI:

marivo init

marivo init creates the project skeleton (marivo.toml, models/, .marivo/) and installs the marivo-semantic and marivo-analysis skills for Claude Code and Codex, so a coding agent can author the semantic layer with you.

Declare semantics under models/semantic/, then load and analyze:

import marivo.semantic as ms
import marivo.analysis as mv

catalog = ms.load()
report = catalog.readiness()
if report.status == "blocked":
    report.show()                       # resolve blockers before analysis

session = mv.session.get_or_create(name="revenue-check", question="Why did Q4 drop?")
revenue = session.catalog.get("sales.revenue")
region = session.catalog.get("sales.orders.region")

current = session.observe(revenue, timescope={"start": "2026-10-01", "end": "2027-01-01"}, grain="month", dimensions=[region])
baseline = session.observe(revenue, timescope={"start": "2025-10-01", "end": "2026-01-01"}, grain="month", dimensions=[region])

delta = session.compare(current, baseline)
session.decompose(delta, axis=region).show()

In-project help is available at every surface: ms.help() and mv.help() list the surface; ms.help("metric") and mv.help("observe") drill into a symbol.

Documentation

Full guides live in the documentation site (built from site/):

  • Installation — install, marivo init, deploy.
  • Quick Start — author declarations, load a catalog, run a first analysis.
  • Concepts — semantic layer, analysis workflow, readiness, and evidence.

Maintained agent guidance lives in marivo/skills/marivo-semantic and marivo/skills/marivo-analysis.

Development

python3 -m venv .venv
.venv/bin/pip install -e ".[dev,duckdb,trino]"

Repository commands run through the local virtualenv via make:

make lint
make typecheck
make examples-check
make test
make check

Read agent-guide.md before contributing. See CONTRIBUTING.md for the full workflow.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marivo-0.2.1.tar.gz (806.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

marivo-0.2.1-py3-none-any.whl (586.2 kB view details)

Uploaded Python 3

File details

Details for the file marivo-0.2.1.tar.gz.

File metadata

  • Download URL: marivo-0.2.1.tar.gz
  • Upload date:
  • Size: 806.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for marivo-0.2.1.tar.gz
Algorithm Hash digest
SHA256 1d847686e1de027491db48a32837a5b2083d1b7a449e3fbd31eda64180108ae3
MD5 6e1fda7e91c5e323f0686259dd3f6a0d
BLAKE2b-256 81c749171d3cfdf021dd4d10d8168c780b738eb82b01c28d6a3d1f1c04d63a29

See more details on using hashes here.

Provenance

The following attestation bundles were made for marivo-0.2.1.tar.gz:

Publisher: release.yml on chengxianglibra/marivo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file marivo-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: marivo-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 586.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for marivo-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4250c05cef3b8d83e45b40f09776cf2e2c5a85e894ad28f52bfd4402d21e7ccd
MD5 9c6e309138c1c2c8c71f2b2f95408f1f
BLAKE2b-256 be9157c6209d797a91ead07c0c712f9b39eff69ab6a4c35123c4b3ee7385a7cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for marivo-0.2.1-py3-none-any.whl:

Publisher: release.yml on chengxianglibra/marivo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page