Metadata-Version: 2.4
Name: krail
Version: 0.2.1
Summary: KRAIL client for local projects and the local API runtime
Author: AkeBoss Tech
License-Expression: MIT
Project-URL: Homepage, https://github.com/AkeBoss-tech/knowledge
Project-URL: Repository, https://github.com/AkeBoss-tech/knowledge
Project-URL: Issues, https://github.com/AkeBoss-tech/knowledge/issues
Keywords: knowledge,research,agents,local-first,mcp
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2
Requires-Dist: pyyaml>=6
Provides-Extra: analysis
Requires-Dist: numpy; extra == "analysis"
Requires-Dist: pandas; extra == "analysis"
Requires-Dist: statsmodels; extra == "analysis"
Requires-Dist: matplotlib; extra == "analysis"
Provides-Extra: local
Requires-Dist: owlready2; extra == "local"
Requires-Dist: duckdb; extra == "local"
Provides-Extra: embeddings
Requires-Dist: sentence-transformers>=2.7; extra == "embeddings"

# krail

KRAIL client supporting local project mode and the local FastAPI runtime.

Install from PyPI:

```bash
pip install krail
```

The distribution is named `krail`; the Python import namespace remains `rail`.

## Usage Examples

```python
import rail

# API mode
project = rail.connect("nj-economics")

# DataFrame queries
df = project.query("SELECT county_name, unemployment_rate FROM County ORDER BY unemployment_rate DESC LIMIT 10")

# Agent research
answer = project.agent.ask("What counties had unemployment above 10% in 2020?")
print(answer)

# Streaming agent
for event in project.agent.ask("Compare Hudson and Bergen County unemployment trends", stream=True):
    if event["type"] == "text_delta":
        print(event["text"], end="", flush=True)

# Direct local mode
project = rail.local("./nj-economics")
ont = project.ontology()
counties = ont.individuals("County")
print(f"Loaded {len(counties)} counties")
```
