Metadata-Version: 2.4
Name: nagi-cli
Version: 0.0.2
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Rust
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Requires-Dist: click>=8.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: mcp>=1.7.0 ; extra == 'mcp'
Provides-Extra: mcp
License-File: LICENSE
Summary: A reconciliation engine that declaratively defines the desired state of data and automatically converges toward that state
Keywords: reconciliation,desired-state,drift-detection,data-pipeline,data-quality
Author: The Nagi Contributors
License-Expression: Apache-2.0
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://nagi-project.dev/
Project-URL: Homepage, https://nagi-project.dev/
Project-URL: Issues, https://github.com/nagi-project/nagi/issues
Project-URL: Repository, https://github.com/nagi-project/nagi

# Nagi

Nagi keeps data in its desired state.

## Motivation

State evaluation, routine ELT, and data incident response are often carried out as separate activities — different tools, different runbooks, different moments. When a scheduled job succeeds but the data is stale, the gap between "the pipeline ran" and "the data is correct" surfaces as an incident that lives outside the pipeline itself.

These activities are points on the same continuum: observe state, decide it needs correction, and correct it. Nagi places them in a single reconciliation loop so you can move between monitoring, manual recovery, and automated convergence without changing tools or vocabulary.

```mermaid
graph LR
    subgraph Nagi
        Eval["Evaluate data state"]
        Drift{"Diverged from<br>desired state?"}
        Conv["Run convergence<br>operation"]
    end
    subgraph User
        Define["Define desired state<br>of data"]
    end
    subgraph UserAI["User / AI Agent"]
        Check["Check state"]
    end
    Define --> Eval
    Eval --> Drift
    Drift -->|No| Eval
    Drift -->|Yes| Conv
    Conv --> Eval
    Nagi -->|"Alert"| UserAI
    UserAI -->|"Manual operation"| Nagi
```

## Principles

- Declarative — Define the desired state; let Nagi handle convergence.
- Composable — Use with your existing tools, or let Nagi take the wheel.
- AI-collaborative — Designed for humans and AI agents to work as one.

## Install

```bash
pip install nagi-cli
```

See the [Quickstart](https://nagi-project.dev/overview/quickstart/) for a full walkthrough, or browse the [Documentation](https://nagi-project.dev).

## License

Apache License 2.0. See [LICENSE](LICENSE) for details.

