Skip to content

Enhancement: DXT (Desktop Extensions) packaging support #193

Description

@bm-claudeai

Summary

Investigate implementing DXT (Desktop Extensions) packaging for Basic Memory to enable one-click installation in Claude Desktop and other MCP-compatible applications.

Background

Anthropic released the DXT specification on June 26, 2024 to enable packaging MCP servers as single-click installable extensions (.dxt files). This would significantly improve Basic Memory's user experience by eliminating manual installation and configuration steps.

Current Status: NOT READY FOR IMPLEMENTATION

After investigation and implementation attempts, DXT is too immature for production use with Basic Memory:

Major Blocking Issues

  1. Binary Permissions Problem (anthropics/dxt#12)

    • Binary files lose executable permissions when packaged
    • Causes EACCES errors during execution
    • No current solution beyond manual chmod after installation
  2. Platform-Specific Dependencies (anthropics/dxt#17)

    • Basic Memory has native binary dependencies (pydantic_core, SQLite, Pillow, etc.)
    • No guidance for cross-platform Python packages with native extensions
    • Community consensus: need separate packages for each platform/architecture
  3. Python Path Issues

    • Claude Desktop can't find python command due to PATH limitations
    • python3 command has better compatibility but still platform-dependent
  4. DXT Immaturity

    • Version 0.1.0 explicitly labeled as preview/work in progress
    • Anthropic states they're "looking forward to working with the greater community on evolving and changing the format"
    • Multiple critical issues unresolved

Implementation Attempt Details

We successfully created a working DXT package structure:

  • Created comprehensive manifest.json with all 19 Basic Memory MCP tools
  • Implemented dependency bundling following Anthropic's patterns
  • Added automated build process via justfile (just dxt)
  • Package size: ~30MB with bundled dependencies

However, encountered these runtime issues:

ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'

The native binary modules are present but not loading correctly in Claude Desktop's execution environment.

Basic Memory Dependencies Requiring Native Binaries

  • pydanticpydantic_core (Rust extensions)
  • sqlalchemy → SQLite C extensions
  • pillow → Image processing libraries
  • aiosqlite → SQLite async bindings
  • watchfiles → File system monitoring (Rust)

Recommendation

Wait for DXT v0.2+ before implementing. Focus on current distribution channels:

  • PyPI (uv tool install basic-memory)
  • Homebrew (brew install basicmachines-co/basic-memory/basic-memory)
  • Docker containers

Future Implementation Plan

When DXT matures (estimated 3-6 months):

  1. Multi-Platform Strategy: Build separate DXT packages for major platforms:

    • basic-memory-macos-arm64.dxt
    • basic-memory-macos-x86_64.dxt
    • basic-memory-windows-x86_64.dxt
    • basic-memory-linux-x86_64.dxt
  2. Distribution Infrastructure:

    • Automated GitHub Actions builds for each platform
    • Download page with platform detection
    • Clear installation instructions
  3. Testing Protocol:

    • Verify all 19 MCP tools work correctly
    • Cross-platform compatibility testing
    • Performance benchmarking vs. native installation

References

Branch

Implementation work is available on the dxt-packaging branch for future reference.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions