diff --git a/scripts/install.sh b/scripts/install.sh new file mode 100755 index 00000000..c2931d0a --- /dev/null +++ b/scripts/install.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -e + +echo "Welcome to Basic Memory installer" + +# 1. Install uv if not present +if ! command -v uv &> /dev/null; then + echo "Installing uv package manager..." + curl -LsSf https://github.com/astral-sh/uv/releases/download/0.1.23/uv-installer.sh | sh +fi + +# 2. Configure Claude Desktop +echo "Configuring Claude Desktop..." +CONFIG_FILE="$HOME/Library/Application Support/Claude/claude_desktop_config.json" + +# Create config directory if it doesn't exist +mkdir -p "$(dirname "$CONFIG_FILE")" + +# If config file doesn't exist, create it with initial structure +if [ ! -f "$CONFIG_FILE" ]; then + echo '{"mcpServers": {}}' > "$CONFIG_FILE" +fi + +# Add/update the basic-memory config using jq +jq '.mcpServers."basic-memory" = { + "command": "uvx", + "args": ["basic-memory"] +}' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE" + +echo "Installation complete! Basic Memory is now available in Claude Desktop." +echo "Please restart Claude Desktop for changes to take effect." + +echo -e "\nQuick Start:" +echo "1. You can run sync directly using: uvx basic-memory sync" +echo "2. Optionally, install globally with: uv pip install basic-memory" +echo -e "\nBuilt with ♥️ by Basic Machines." \ No newline at end of file diff --git a/uv.lock b/uv.lock index 685b9952..bf736ea9 100644 --- a/uv.lock +++ b/uv.lock @@ -61,7 +61,7 @@ wheels = [ [[package]] name = "basic-memory" -version = "0.0.1" +version = "0.1.0" source = { editable = "." } dependencies = [ { name = "aiosqlite" }, @@ -144,7 +144,7 @@ name = "click" version = "8.1.8" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "platform_system == 'Windows'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } wheels = [ @@ -582,7 +582,7 @@ email = [ { name = "email-validator" }, ] timezone = [ - { name = "tzdata", marker = "platform_system == 'Windows'" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, ] [[package]] @@ -997,7 +997,7 @@ name = "tzlocal" version = "5.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "tzdata", marker = "platform_system == 'Windows'" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/04/d3/c19d65ae67636fe63953b20c2e4a8ced4497ea232c43ff8d01db16de8dc0/tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e", size = 30201 } wheels = [