Metadata-Version: 2.4
Name: odf
Version: 0.5.0
Summary: Open Data Framework CLI.
License-File: LICENSE
Author: mykytapavlov
Author-email: mykytapavlov@users.noreply.github.com
Requires-Python: >=3.14
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.14
Provides-Extra: chat
Provides-Extra: examples
Provides-Extra: mcp
Provides-Extra: notebook
Provides-Extra: ui
Requires-Dist: fastapi (>=0.100.0) ; extra == "ui"
Requires-Dist: matplotlib (>=3.9.0,<4.0.0) ; extra == "examples"
Requires-Dist: mcp (>=1.2.0,<2.0.0) ; extra == "mcp"
Requires-Dist: notebook (>=7.6.0,<8.0.0) ; extra == "examples"
Requires-Dist: notebook (>=7.6.0,<8.0.0) ; extra == "notebook"
Requires-Dist: numpy (>=2.0.0,<3.0.0) ; extra == "examples"
Requires-Dist: ollama (>=0.4.0) ; extra == "chat"
Requires-Dist: opencv-python (>=5.0.0.93,<6.0.0.0) ; extra == "examples"
Requires-Dist: opendataframework (>=0.5.0,<0.6.0)
Requires-Dist: plotly (>=5.24.0,<6.0.0) ; extra == "examples"
Requires-Dist: rich (>=15.0.0,<16.0.0)
Requires-Dist: scikit-learn (>=1.9.0,<2.0.0) ; extra == "examples"
Requires-Dist: typer (>=0.27.0,<0.28.0)
Requires-Dist: uvicorn (>=0.23.0) ; extra == "ui"
Requires-Dist: websockets (>=13.0) ; extra == "examples"
Requires-Dist: websockets (>=13.0) ; extra == "notebook"
Description-Content-Type: text/markdown

# Open Data Framework CLI

Scaffolds and runs Open Data Framework projects, and serves them through a UI, an
MCP server and a chat window. Depends on `opendataframework` for the core
abstractions (`Entity`, `Repository`, `Component`, `Service`, `Task`, `Pipeline`,
`Agent`, `Function`, `Layer`, `Context`, `Project`) — see that package for those.

**Documentation:** <https://opendataframework.github.io/odf/>

---

# Install

```bash
pip install odf                # CLI + scaffolding only
pip install "odf[ui]"          # + UI dev server
pip install "odf[mcp]"         # + MCP server
pip install "odf[ui,chat]"     # + chat window (served by the UI)
```

`odf run` starts the UI by default, so most projects want at least `odf[ui]`.

---

# Quickstart

```bash
pip install "odf[ui]"
odf init my-project            # or --template data-analytics / data-engineering / data-science / ml / research
cd my-project
odf run                        # UI at http://127.0.0.1:4747
```

With `pip install "odf[ui,mcp,chat]"`, `odf run --mcp --chat` adds the MCP server
at `http://127.0.0.1:4748/mcp` and a chat window. The same from Python:

```python
from odf.server import Server

server = Server.from_config("config.toml")
server.start(ui=True, mcp=True, chat=True)
server.wait()  # blocks until Ctrl+C/SIGTERM
```

---

# What's included

- **CLI** — `odf init` scaffolds a project from a template; `odf run` starts it.
- **UI** — the topology of every component with its actions, a view of each
  repository's data (table, map, timeseries, image, video, audio, document), and
  labelling of that data into a plain `annotations.json`.
- **MCP server** — the same actions as MCP tools, plus each agent, function and
  component's own tools.
- **Chat** — a chat window in the UI, backed by a local Ollama model, that acts
  on the project through the MCP tools.

See the [documentation](https://opendataframework.github.io/odf/) for each, and
[`examples/`](https://github.com/opendataframework/odf/tree/main/examples) for 26 small projects, one concept each.

