Skip to main content

MCard: Local-first Content Addressable Storage with Content Type Detection

Project description

Python 3.10+ MIT License ruff Build Status

MCard

MCard is a local-first, content-addressable storage platform with cryptographic integrity, temporal ordering, and a Polynomial Type Runtime (PTR) that orchestrates polyglot execution. It gives teams a verifiable data backbone without sacrificing developer ergonomics or observability.


Highlights

  • 🔐 Hash-verifiable storage: Unified network of relationships via SHA-256 hashing across content, handles, and history.
  • ♾️ Universal Substrate: Emulates the Turing Machine "Infinitely Long Tape" via relational queries for computable DSLs.
  • ♻️ Deterministic execution: PTR mediates 8 polyglot runtimes (Python, JavaScript, Rust, C, WASM, Lean, R, Julia).
  • 📊 Enterprise ready: Structured logging, CI/CD pipeline, security auditing, 99%+ automated test coverage.
  • 🧠 AI-native extensions: GraphRAG engine, optional LLM runtime, and optimized multimodal vision (moondream).
  • ⚛️ Quantum NLP: Optional lambeq + PyTorch integration for pregroup grammar and quantum circuit compilation.
  • 🧰 Developer friendly: Rich Python API, TypeScript SDK, BMAD-driven TDD workflow, numerous examples.
  • 📐 Algorithm Benchmarks: Sine comparison (Taylor vs Chebyshev) across Python, C, and Rust.
  • High Performance: Optimized test suite (~37s) with runtime caching and session-scoped fixtures.

For the long-form narrative and chapter roadmap, see docs/Narrative_Roadmap.md. Architectural philosophy is captured in docs/architecture/Monadic_Duality.md.


Quick Start (Python)

git clone https://github.com/xlp0/MCard_TDD.git
cd MCard_TDD
./activate_venv.sh          # installs uv & dependencies
uv run pytest -q -m "not slow"  # run the fast Python test suite
uv run python -m mcard.ptr.cli run chapters/chapter_01_arithmetic/addition.yaml

Create and retrieve a card:

from mcard import MCard, default_collection

card = MCard("Hello MCard")
hash_value = default_collection.add(card)
retrieved = default_collection.get(hash_value)
print(retrieved.get_content(as_text=True))

Quick Start (JavaScript / WASM)

See mcard-js/README.md for build, testing, and npm publishing instructions for the TypeScript implementation.

Quick Start (Quantum NLP)

MCard optionally integrates with lambeq for quantum natural language processing using pregroup grammar:

# Install with Quantum NLP support (requires Python 3.10+)
uv pip install -e ".[qnlp]"

# Parse a sentence into a pregroup grammar diagram
uv run python scripts/lambeq_web.py "John gave Mary a flower"

Example output (pregroup types):

John: n    gave: n.r @ s @ n.l @ n.l    Mary: n    a flower: n
Result: s (grammatically valid sentence)

The pregroup diagrams can be compiled to quantum circuits for QNLP experiments.


Polyglot Runtime Matrix

Runtime Status Notes
Python Reference implementation, CLM runner
JavaScript Node + browser (WASM) + Full RAG Support + Pyodide
Rust High-performance adapter & WASM target
C Low-level runtime integration
WASM Edge and sandbox execution
Lean ⚙️ Formal verification pipeline (requires lean-toolchain)
R Statistical computing runtime
Julia High-performance scientific computing

⚠️ Lean Configuration: A lean-toolchain file in the project root is critical. Without it, elan will attempt to resolve/download toolchain metadata on every invocation, causing CLM execution to hang or become unbearably slow.


Project Structure (abridged)

MCard_TDD/
├── mcard/            # Python package (engines, models, PTR)
├── mcard-js/         # TypeScript implementation & npm package
├── chapters/         # CLM specifications (polyglot demos)
├── docs/             # Architecture, PRD, guides, reports
├── scripts/          # Automation & demo scripts
├── tests/            # >450 automated tests
└── requirements.txt / pyproject.toml

Documentation



Platform Vision (December 2025): The Function Economy

Recent theoretical advancements have crystallized the MCard platform into a universal substrate for the Function Economy.

1. Vau Calculi Foundation: The MVP Card Database as Function Catalog

Using insights from John Shutt's Vau Calculi, PCard treats functions as first-class operatives cataloged in the MVP Card database.

  • Identity: Unique SHA-256 hash
  • Naming: Mutable handles in handle_registry
  • Versioning: Immutable history in handle_history

2. Symmetric Monoidal Category: Universal Tooling

All DSL runtimes are isomorphic to Petri Nets and Symmetric Monoidal Categories (SMC). The Symmetry Axiom ($A \otimes B \cong B \otimes A$) guarantees that one set of tools works for all applications:

  • O(1) Toolchain: One debugger, one profiler, one verifier for all domains (Finance, Law, Code).
  • Universal Interoperability: Any CLM can call any other CLM regardless of the underlying runtime (Python, JS, Rust, etc.).

3. PKC as Function Engineering Platform

MCard hashes act as Internet-native URLs for executable functions.

  • Publish: Alice (Singapore) creates a function → sha256:abc...
  • Resolve: Bob (New York) resolves sha256:abc... → Guaranteed identical function
  • Verify: Charlie (London) executes with VCard authorization
  • Result: $\text{PKC} = \text{GitHub for Executable Functions}$

See Also:


Recent Updates

Full changelog: CHANGELOG.md

Latest Version: 0.1.46 / 2.1.26 — January 16, 2026

Please refer to the changelog for details on recent updates including:

  • Refactoring: Extracted server operations to services.py and reorganized CLMs into system/services/.
  • Configuration: Parameterized CLM ports using environment variables (.env).
  • CLM Execution Fixes
  • WebSocket Server Builtin Fixes
  • Pyodide Integration
  • CLM UI Redesign

Testing

Note: All commands below should be run from the project root (MCard_TDD/).

Unit Tests

# Python
uv run pytest -q                 # Run all tests
uv run pytest -q -m "not slow"   # Fast tests only
uv run pytest -m "not network"   # Skip LLM/Ollama tests

# JavaScript
npm --prefix mcard-js test -- --run

CLM Verification

Both Python and JavaScript CLM runners support three modes: all, directory, and single file.

Python

# Run all CLMs
uv run python scripts/run_clms.py

# Run by directory
uv run python scripts/run_clms.py chapters/chapter_01_arithmetic
uv run python scripts/run_clms.py chapters/chapter_08_P2P

# Run single file
uv run python scripts/run_clms.py chapters/chapter_01_arithmetic/addition.yaml

# Run with custom context
uv run python scripts/run_clms.py chapters/chapter_08_P2P/generic_session.yaml \
    --context '{"sessionId": "my-session"}'

JavaScript

# Run all CLMs
npm --prefix mcard-js run clm:all

# Run by directory/filter
npm --prefix mcard-js run clm:all -- chapter_01_arithmetic
npm --prefix mcard-js run clm:all -- chapters/chapter_08_P2P

# Run single file
npm --prefix mcard-js run demo:clm -- chapters/chapter_01_arithmetic/addition_js.yaml

Chapter Directories

Directory Description
chapter_00_prologue Hello World, Lambda calculus, and Church encoding — 11 CLMs
chapter_01_arithmetic Arithmetic operations (Python, JS, Lean) — 27 CLMs
chapter_03_llm LLM integration (requires Ollama)
chapter_04_load_dir Filesystem and collection loading
chapter_05_reflection Meta-programming and recursive CLMs
chapter_06_lambda Lambda calculus runtime
chapter_07_network HTTP requests, MCard sync, network I/O — 5 CLMs
chapter_08_P2P P2P networking and WebRTC — 16 CLMs (3 VCard)
chapter_09_DSL Meta-circular language definition and combinators — 10 CLMs
chapter_10_service Static server builtin and service management — 3 CLMs

Contributing

  1. Fork the repository and create a feature branch.
  2. Run the tests (uv run pytest, npm test in mcard-js).
  3. Submit a pull request describing your change and tests.

We follow the BMAD (Red/Green/Refactor) loop – see BMAD_GUIDE.md.


Future Roadmap

Road to VCard (Design & Implementation)

Based on the MVP Cards Design Rationale, a VCard (Value Card) represents a boundary-enforced value exchange unit that often contains sensitive privacy data (identities, private keys, financial claims). Unlike standard MCards which are designed for public distribution and reproducibility, VCards require strict confidentiality.

Design Requirements & Rationale:

  1. Privacy & Encryption: VCards cannot be stored in the standard mcard.db (which is often shared or public) without encryption. They must be stored in a "physically separate" container or be encrypted at rest.
  2. Authentication Primitive: A VCard serves as a specialized "Certificate of Authority" — a precondition for executing sensitive PTR actions.
  3. Audit Certificates: Execution of a VCard-authorized action must produce a VerificationVCard (Certificate of Execution), which proves the action occurred under authorization. This certificate is also sensitive.
  4. Unified Schema: While the storage location differs, the data schema should remain identical to MCard (content addressable, hash-linked) to reuse the rigorous polynomial logic.

Proposed Architecture:

  • Dual-Database Storage:
    • mcard.db (Public/Shared): Stores standard MCards, Logic (PCards), and Public Keys.
    • vcard.db (Private/Local): Stores VCards, Encrypted Private Keys, and Verification Certificates.
  • Execution Flow: execute(pcard_hash, input, vcard_authorization_hash)
    1. Gatekeeper: PTR checks if vcard_authorization_hash exists in the Private Store (vcard.db).
    2. Zero-Trust Verify: Runtime validates the VCard's cryptographic integrity and permissions (Security Polynomial).
    3. Execute: If valid, the PCard logic runs.
    4. Certify: A new VerificationVCard is generated, signed, and stored in vcard.db, linking the Input, Output, and Authority.

TODOs:

  • Infrastructure: Implement PrivateCollection (wrapper around vcard.db) in Python and JavaScript factories.
  • Encryption Middleware: Add a transparent encryption layer (e.g., AES-GCM) for the Private Collection to ensure Encryption-at-Rest.
  • CLI Auth: Update run_clms.py to accept --auth <vcard_hash> and mount the private keystore.
  • Certificate Generation: Implement the VerificationVCard schema and generation logic in CLMRunner.

Logical Model Certification & Functional Deployment

Use of the Cubical Logic Model (CLM) as a "Qualified Logical Model" is strictly governed by principles derived from Eelco Dolstra's The Purely Functional Software Deployment Model (the theoretical basis of Nix).

A CLM is not merely source code; it is a candidate for certification. It only becomes a Qualified Logical Model when it possesses a valid Certification, which is a cryptographic proof of successful execution by a specific version of the Polynomial Type Runtime (PTR).

The Functional Certification Equation: $$ Observation = PTR_{vX.Y.Z}(CLM_{Source}) $$ $$ Certification = Sign_{Authority}(Hash(CLM_{Source}) + Hash(PTR_{vX.Y.Z}) + Hash(Observation)) $$

Parallels to the Nix Model:

  1. Hermetic Inputs: Just as a Nix derivation hashes all inputs (compiler, libs, source), a CLM Certification depends on the exact PTR Runtime Version and CLM Content Hash. Changing the runtime version invalidates the certificate, requiring re-qualification (re-execution).
  2. Deterministic Derivation: The "build" step is the execution of the CLM's verification logic. If the PTR (the builder) is deterministic, the output (VerificationVCard) is reproducible.
  3. The "Store": The mcard.db acts as the Nix Store, holding immutable, content-addressed CLMs. The vcard.db acts as the binary cache, holding signed Certifications (outputs) that prove a CLM works for a given runtime configuration.

This ensures that a "Qualified CLM" is not just "code that looks right," but "code that has logically proven itself" within a specific, physically identifiable execution environment.


License

This project is licensed under the MIT License – see LICENSE.

For release notes, check CHANGELOG.md.

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

mcard-0.1.46.tar.gz (262.4 kB view details)

Uploaded Source

Built Distribution

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

mcard-0.1.46-py3-none-any.whl (313.2 kB view details)

Uploaded Python 3

File details

Details for the file mcard-0.1.46.tar.gz.

File metadata

  • Download URL: mcard-0.1.46.tar.gz
  • Upload date:
  • Size: 262.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.2

File hashes

Hashes for mcard-0.1.46.tar.gz
Algorithm Hash digest
SHA256 1bc492eae00f1044b21da4e42a294bba10b36d60a48354d61d46952842936990
MD5 9d82941ad27df601f5aea61a57491984
BLAKE2b-256 d3711fc69bf548c5de310dfacdae7c02e9d4ed4fa654b1c8876fdba5d612ef44

See more details on using hashes here.

File details

Details for the file mcard-0.1.46-py3-none-any.whl.

File metadata

  • Download URL: mcard-0.1.46-py3-none-any.whl
  • Upload date:
  • Size: 313.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.2

File hashes

Hashes for mcard-0.1.46-py3-none-any.whl
Algorithm Hash digest
SHA256 2d9e1486af0f57431b4544ca42deaec4968076420d6e6ae88e1d52dec368170f
MD5 a361dae0d3fbed00d30fe9101019cc59
BLAKE2b-256 f58a8907e67b942603b1573367e3592cda93f48ff87f95fc33012083cf53eed7

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