Releases: OpenDCAI/DataMind
DataMind v0.3.0 Release
DataMind v0.3.0
DataMind v0.3.0 is a preview release focused on safer local execution,
scope-aware memory, and a complete PyPI installation path.
Preview release: the core architecture is functional, but some
integrations are still being expanded. For production use, start with an
isolated profile and validate the target database, model gateway, and
deployment environment first.
Installation
pip install datamindOptional extras:
pip install 'datamind[mysql]' # MySQL dialect support
pip install 'datamind[postgres]' # PostgreSQL dialect support
pip install 'datamind[voyage]' # Voyage embeddings
pip install 'datamind[huggingface]' # Local BGE / e5 embeddingsHighlights
Scope-Typed Memory v2
Memory entries now carry explicit scope, kind, and status fields:
scope:global,profile, orsessionkind:preference,decision,workflow,summary,skill, orfactstatus:activeorarchived
Recall combines scope-conditioned retrieval results, which helps keep
profile-specific preferences from leaking across tenants or sessions. Existing
v0.2 memory stores are migrated automatically on first open.
Hook-Based Safety Layer
Tool execution now runs through a HookChain that can return Allow, Deny,
AskUser, or Rewrite. Three hooks are enabled by default:
PathAllowlistHookresolves symlinks and blocks file access outside the
active working directory or profile data directory.DestructiveSqlHookusessqlglotto detect destructive SQL operations.
DELETE,UPDATE,DROP TABLE,TRUNCATE, andALTERrequire
confirmation;DROP DATABASEandDROP SCHEMAare denied.AuditLogHookrecords tool calls instorage/<profile>/audit.jsonlwith
a hash chain for tamper detection. Secret-shaped fields such asapi_key,
password, andtokenare redacted automatically.
The browser UI now displays a confirmation modal when user approval is needed.
Streaming responses also include hook_asks_user and hook_denied events.
PyPI Packaging
The PyPI package now includes the runtime code, browser UI, and default skill
catalog needed for a standard pip install datamind workflow:
datamind/Python packagedatamind/static/app.htmldatamind/skills/{code-review,db-ops-sop}/SKILL.md
Release publishing is configured through GitHub Actions with PyPI Trusted
Publishing, so package uploads do not require long-lived PyPI tokens.
Fixes
- Fixed an empty-wheel packaging issue caused by an overly broad package
exclusion rule. - Switched packaging metadata to source the version from
datamind.__version__. - Aligned project metadata with the repository license (
Apache-2.0).
Quick Start
pip install datamind
export DATAMIND__LLM__API_BASE=https://your-gateway.example.com
export DATAMIND__LLM__API_KEY=sk-...
export DATAMIND__LLM__MODEL=claude-sonnet-4-6
datamind chatTo run the browser UI locally:
python -m uvicorn datamind.server:app --port 8000
# Open http://127.0.0.1:8000Verification
Automated test suite:
133 passed in <1s
Smoke checks:
python -m datamind.scripts.hello_sdk # model gateway connectivity
python -m datamind.scripts.hello_memory # scope-typed memory and extraction
python -m datamind.scripts.hello_hooks # sandboxing and audit hash chainKnown Limitations
- BYOP HTTP sinks: chunk, vector, and graph payload schemas are defined, but
HTTP sink endpoints and adapter examples are still in progress. Current
ingest flows accept local file paths. - MySQL / PostgreSQL: dialect support is available through optional extras
and smoke checks, but users should run environment-specific validation before
production use. - SDK backend:
DATAMIND__AGENT__BACKEND=sdkis available, but hook-chain
enforcement currently runs through the native execution loop. - Large deployments: this preview has not yet been validated against
large-scale production workloads.
Roadmap
- HTTP sink endpoints for chunk, vector, and graph ingestion.
- Additional ETL adapter examples for common orchestration tools.
- Broader database validation for MySQL and PostgreSQL.
- Expanded safety and recovery evaluations for hook-governed execution.
Links
Bug reports are welcome during the preview. Please include the relevant smoke
check output and a redacted Settings() snapshot when possible.