Build and Installation

The package can be installed from PyPi as follows

pip install kmds

A conda version of the package is not available at the moment.

Please see the the build instructions page for details of building the project and maintaining documentation.

Quick Summary Logging (CLI)

You can create exploratory observations directly from a project summary block.

Application workflow example (explicit and non-interactive):

kmds-summary-log \
    --summary "This is a daily reporting workflow for support operations. Missing category labels were found in intake data." \
    --workflow-name "support_reporting_intake" \
    --workflow-type application \
    --project-file ./support_reporting_intake.xml \
    --create-project \
    --no-prompt

Ambiguous summary example (interactive prompt):

kmds-summary-log \
    --summary "Project kickoff notes for the upcoming quarter." \
    --workflow-name "quarterly_kickoff_notes" \
    --project-file ./quarterly_kickoff_notes.xml \
    --create-project

In the ambiguous case, KMDS prompts for workflow type and then logs exploratory observations.

Natural Language Observation Ingestion

KMDS can also ingest a single free-form natural language observation and map it to the existing ontology schema.

Summary mode example:

kmds-observe \
    --text "The model accuracy dropped by 5% after pruning on 2026-04-20." \
    --mode summary \
    --output-format json

Log mode example:

kmds-observe \
    --text "Missing values were observed in the customer_age field during intake validation." \
    --mode log \
    --workflow-name "support_reporting_intake" \
    --project-file ./support_reporting_intake.xml \
    --workflow-type application \
    --create-project

For complete examples of all interaction modes, see the Natural Language Ingestion documentation page.

Semantic Search (CLI)

Build a vector index from a KMDS knowledge base and search it with a natural-language query.

kmds-search \
    --kb ./support_reporting_intake.xml \
    --query "What data quality issues were found?" \
    --n-results 5

JSON output:

kmds-search \
    --kb ./support_reporting_intake.xml \
    --query "What data quality issues were found?" \
    --output-format json

LLM Search Orchestrator (CLI)

Ask a free-form question; the orchestrator routes it to the best KMDS search template using an LLM and synthesises a plain-English answer. Falls back to semantic search automatically when routing is uncertain.

export GOOGLE_API_KEY="your-api-key"
kmds-ask \
    --kb ./support_reporting_intake.xml \
    --query "What assumptions drove the final model selection?"

JSON output:

kmds-ask \
    --kb ./support_reporting_intake.xml \
    --query "What assumptions drove the final model selection?" \
    --output-format json

See the Natural Language Search documentation page for a full guide, including how to supply a custom LLM function.