Skip to main content

File-native model and experiment registry

Project description

Koobi

Koobi project icon

File-native model and experiment registry for local workflows.

Koobi stores experiment metadata as plain Markdown cards, builds a disposable DuckDB index, and serves an interactive Marimo UI for browsing, filtering, visualizing, and editing cards. The source of truth is always your files.

Why Koobi

Most experiment trackers assume a hosted service and database-backed runs. Koobi is designed for local-first users who want:

  • readable, versionable records in Git
  • zero-server operation
  • domain-agnostic metrics and parameters
  • workflows friendly to both humans and coding agents

Current MVP Capabilities

  • Markdown card parsing and serialization with preserved body/key ordering
  • additive card updates (only targeted fields are rewritten)
  • DuckDB index build with:
    • cards table (metadata + body)
    • measures table (long-format metrics)
    • series_registry table (series pointers)
  • Marimo app with:
    • project/status/search filters
    • model table view
    • card detail view (metrics/params/tags/body)
    • edit form (name/status/tags/body) with write-back
    • one measure bar chart
  • CLI commands:
    • koobi init
    • koobi new
    • koobi index
    • koobi ui

Architecture Overview

cards/*.md  -->  index.duckdb  -->  Marimo app
   ^                                  |
   |---------- edit/write-back -------|
  • Cards are authoritative.
  • Index is derived and disposable.
  • UI reads from index and writes edits back to cards.

Installation

Install into any project or environment directly from Git:

pip install git+https://github.com/blu3c0ral/koobi.git

This installs the koobi command and the importable koobi package.

For local development on Koobi itself, install editable with dev extras:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"

Quickstart

Koobi discovers its configuration automatically: every command searches the current directory and its parents for a koobi.toml. Work from inside your workspace and no --config flag is needed.

1) Create (or enter) a workspace

koobi init --path my-registry
cd my-registry

Or use the bundled demo workspace:

python examples/local_example_to_cards.py --overwrite
cd examples/local

2) Build the index

koobi index

3) Launch the UI

koobi ui

The UI opens at http://localhost:2718.

Running from outside the workspace

If you prefer not to cd, point Koobi at the config explicitly or via an environment variable (precedence: --config > KOOBI_CONFIG > current dir):

koobi ui --config examples/local/koobi.toml
# or
export KOOBI_CONFIG=examples/local/koobi.toml
koobi ui

CLI Reference

Initialize a new workspace:

koobi init --path /path/to/workspace

Create a new card (run from inside the workspace):

koobi new demo_project.my_model

Rebuild index:

koobi index

Run UI:

koobi ui

Use as a Library

Koobi's core is importable, so other projects and coding agents can read, query, and write cards programmatically:

from koobi import load_config, build, connect, query_cards
from koobi import Card, load_card, save_card

# Resolve config by searching upward from a path (file or directory)
cfg = load_config("path/to/workspace")

# Build the disposable DuckDB index from the Markdown cards
build(cfg)

# Query cards joined with wide-format measures
con = connect(cfg)
df = query_cards(con, project="demo_project", status="candidate")

# Read, mutate, and write back a single card (only targeted fields change)
card = load_card("path/to/workspace/cards/demo_project.my_model.md")
card.status = "promoted"
save_card(card, fields=["status"])

The full public API is exported from the top-level koobi package; see koobi.__all__.

Repository Layout

src/koobi/                  # core package (schema, cards, config, index, charts, app, cli)
tests/                      # unit tests
examples/local/             # self-contained demo workspace
examples/local_example_to_cards.py
docs/                       # product, technical, and future feature docs

Development

Run tests:

pytest

Recommended pre-PR checklist:

  • run pytest
  • regenerate local example cards if example inputs changed
  • verify koobi index and koobi ui against examples/local/koobi.toml

Documentation

Status

Active MVP implementation with local example workflow included. Phase 0 focus is stability of file contracts, indexing, and interactive editing.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

koobi-0.0.2.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

koobi-0.0.2-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file koobi-0.0.2.tar.gz.

File metadata

  • Download URL: koobi-0.0.2.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for koobi-0.0.2.tar.gz
Algorithm Hash digest
SHA256 d95326cf1b2d25ec006ecd263e6bab79159e0eafe0ed7cf1a80bab8fa22bfc1c
MD5 5e90757742fe0e7802cb40189fdec44f
BLAKE2b-256 9f9a4c7cf458894d8d119fecf058ba28007f0b156349a62e53ebc6b56faca28c

See more details on using hashes here.

File details

Details for the file koobi-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: koobi-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for koobi-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aa2a90522ddaa05e52d1dcb50a516885362bccf9d9cde5ac95e11d5680d0bdf4
MD5 d8689e9c49acc000245d220a4435322a
BLAKE2b-256 e2eafeeb6ffc381c408d175d72a4d7c3d7afb92a7c5f0c5bdba1bf45e6a639b6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page