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¶
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 initscaffolds a project from one of five templates, andodf runstarts one, optionally with the UI, MCP server and chat. - Server:
odf.server.Serverwraps anopendataframework.Projectand is whatodf runboots 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.