Metadata-Version: 2.4
Name: korullm
Version: 0.1.0
Summary: Policy-aware LLM routing, transports and drive strategies extracted from Koru.
Author: Semcod
Author-email: Tom Sapletta <tom@sapletta.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/semcod/korullm
Project-URL: Issues, https://github.com/semcod/korullm/issues
Project-URL: Repository, https://github.com/semcod/korullm
Keywords: llm,routing,subllm,koru,automation
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Requires-Python: <3.14,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: subactor-subllm<2.0,>=1.4.0
Provides-Extra: cursor
Requires-Dist: subactor-subllm[cursor]<2.0,>=1.4.0; extra == "cursor"
Provides-Extra: test
Requires-Dist: pytest<10.0,>=8.0; extra == "test"
Requires-Dist: ruff<0.16,>=0.11; extra == "test"
Dynamic: license-file

# korullm

`korullm` is the LLM boundary extracted from Koru. It provides strategy
selection, policy-resolved SubLLM transports and a fail-closed Cursor SDK lane.

Koru owns task orchestration, browser/IDE control and business policies. This
package owns only model selection and model invocation.

## Installation

```bash
pip install korullm
pip install 'korullm[cursor]'
```

## Usage

```python
from pathlib import Path
from korullm import run_subllm

result = run_subllm(
    "Return a JSON plan.",
    Path.cwd(),
    route_function="planning-assistant",
    system_prompt="Return only valid JSON.",
)
assert result.returncode == 0
```

The model and credentials are resolved by SubLLM for the `koru-agent` route;
callers do not select providers or read secret values directly.
