Skip to content

Open Data Framework (odf)

Open Data Framework (ODF) is a Python framework for building data applications — small services that read, transform, and serve data — without the usual boilerplate. You write your data model and logic as plain Python classes; the framework wires them together and runs them. This package, odf, is the toolbelt around that: a CLI to scaffold and run projects, a UI to see and drive what's running, an MCP server so AI tools can act on your project too, and a chat window to talk to it directly.

Looking for the core abstractions?

Entity, Repository, Component, Service, Task, Pipeline, Agent, Function, Context, Project, and Config all live in the sibling opendataframework package, which this one depends on. This site covers the CLI, UI, MCP server, and chat only.

Install

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

pip install "odf[ui]"odf init my-projectCreated 'default' project 'my-project' in /path/to/my-projectcd my-projectodf runUI running at http://127.0.0.1:4747

Open http://127.0.0.1:4747 and select the Items node, then View, to see its records. The scaffolded app/ package is where your own entities, repositories and tasks go.

What's in the package

  • CLI: odf init scaffolds a project from one of five templates, and odf run starts one, optionally with the UI, MCP server and chat.
  • Server: odf.server.Server wraps an opendataframework.Project and is what odf run boots under the hood. Use it directly to run a project from Python: embedded in a larger app, a test fixture, a notebook.
  • UI: the topology of every component, grouped by Layer, with its actions, a view of each repository's data (table, map, timeseries, image, video, audio, document), and labelling of that data for later pipelines.
  • MCP Server: the same actions as MCP tools, plus each agent, function and component's own tools, for any MCP-speaking client.
  • Chat: a chat window in the UI, backed by a local Ollama model, that acts on the project through the MCP tools.
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

The UI, live

This is the actual UI, live — not a screenshot

Pointed at a static snapshot of examples/01-table-view, the smallest example in the repo (one @Storage @Repository, no other components). Only the topology graph and data view are shown here. Click the Books node, then View, to see its records as a table; it's a static snapshot with no server behind it, so edits (Add/Save/Delete) won't persist.

Examples

See Examples for 20 small projects, one concept each, including the four that mirror odf init --template layouts.