mirror of
https://github.com/samvallad33/vestige.git
synced 2026-06-02 19:55:15 +02:00
Microsoft is discontinuing x86_64 macOS ONNX Runtime prebuilts after v1.23.0, so ort-sys 2.0.0-rc.11 can't ship an Intel Mac binary and never will. Previous Intel Mac attempts kept dying in the ort-sys build script with "does not provide prebuilt binaries for the target x86_64-apple-darwin with feature set (no features)." Issue #41 was the latest casualty. Fix: route Intel Mac through the ort-dynamic feature path (runtime dlopen against a system libonnxruntime installed via Homebrew). This sidesteps ort-sys prebuilts entirely and works today. Changes: - crates/vestige-core/Cargo.toml: split `embeddings` into code-only vs backend-choice. The embeddings feature now just pulls fastembed + hf-hub + image-models and activates the 27 #[cfg(feature = "embeddings")] gates throughout the crate. New `ort-download` feature carries the download-binaries-native-tls backend (the historical default). Existing `ort-dynamic` feature now transitively enables `embeddings`, so the cfg gates stay active when users swap backends. Default feature set expands `["embeddings", ...]` -> `["embeddings", "ort-download", ...]` so existing consumers see identical behavior. - crates/vestige-mcp/Cargo.toml: mirrors the split. Adds `ort-download` feature that chains to vestige-core/ort-download, keeps `ort-dynamic` that chains to vestige-core/ort-dynamic. Both transitively pull `embeddings`. Default adds `ort-download` so `cargo install vestige-mcp` still picks the prebuilt-ort backend like before. - .github/workflows/ci.yml: re-adds x86_64-apple-darwin to the release-build matrix with `--no-default-features --features ort-dynamic,vector-search`. Adds a `brew install onnxruntime` step that sets ORT_DYLIB_PATH from `brew --prefix onnxruntime`. - .github/workflows/release.yml: re-adds x86_64-apple-darwin to the release matrix with the same flags + brew install step. The Intel Mac tarball now also bundles docs/INSTALL-INTEL-MAC.md so binary consumers get the `brew install onnxruntime` + ORT_DYLIB_PATH prereq out of the box. - docs/INSTALL-INTEL-MAC.md: new install guide covering the Homebrew prereq, binary install, source build, troubleshooting, and the v2.1 ort-candle migration plan. - README.md: replaces the "Intel Mac and Windows build from source only" paragraph with the prebuilt Intel Mac install (brew + curl + env var) and a link to the full guide. Platform table updated: Intel Mac back on the "prebuilt" list. Verified locally on aarch64-apple-darwin: - `cargo check --release -p vestige-mcp` -> clean (default features) - `cargo check --release -p vestige-mcp --no-default-features --features ort-dynamic,vector-search` -> clean Runtime path on Intel Mac (verified on CI): brew install onnxruntime export ORT_DYLIB_PATH=$(brew --prefix onnxruntime)/lib/libonnxruntime.dylib vestige-mcp --version Fixes #41. Long-term plan (v2.1): migrate to ort-candle pure-Rust backend so no system ONNX Runtime dep is needed on any platform. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
98 lines
3.3 KiB
TOML
98 lines
3.3 KiB
TOML
[package]
|
|
name = "vestige-mcp"
|
|
version = "2.0.7"
|
|
edition = "2024"
|
|
description = "Cognitive memory MCP server for Claude - FSRS-6, spreading activation, synaptic tagging, 3D dashboard, and 130 years of memory research"
|
|
authors = ["samvallad33"]
|
|
license = "AGPL-3.0-only"
|
|
keywords = ["mcp", "ai", "memory", "fsrs", "neuroscience", "cognitive-science", "spaced-repetition"]
|
|
categories = ["command-line-utilities", "database"]
|
|
repository = "https://github.com/samvallad33/vestige"
|
|
|
|
[features]
|
|
default = ["embeddings", "ort-download", "vector-search"]
|
|
embeddings = ["vestige-core/embeddings"]
|
|
vector-search = ["vestige-core/vector-search"]
|
|
# Default ort backend: downloads prebuilt ONNX Runtime at build time.
|
|
# Fails on targets without prebuilts (notably x86_64-apple-darwin).
|
|
ort-download = ["embeddings", "vestige-core/ort-download"]
|
|
# Alternative ort backend: runtime-linked system libonnxruntime via dlopen.
|
|
# Required on Intel Mac and on systems with glibc < 2.38.
|
|
# Usage: cargo build --no-default-features --features ort-dynamic,vector-search
|
|
# Runtime: export ORT_DYLIB_PATH=$(brew --prefix onnxruntime)/lib/libonnxruntime.dylib
|
|
ort-dynamic = ["embeddings", "vestige-core/ort-dynamic"]
|
|
|
|
[[bin]]
|
|
name = "vestige-mcp"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "vestige-restore"
|
|
path = "src/bin/restore.rs"
|
|
|
|
[[bin]]
|
|
name = "vestige"
|
|
path = "src/bin/cli.rs"
|
|
|
|
[dependencies]
|
|
# ============================================================================
|
|
# VESTIGE CORE - The cognitive science engine
|
|
# ============================================================================
|
|
# Includes: FSRS-6, spreading activation, synaptic tagging, hippocampal indexing,
|
|
# memory states, context memory, importance signals, dreams, and more.
|
|
#
|
|
# Only `bundled-sqlite` is always on. `embeddings` and `vector-search` are
|
|
# toggled via vestige-mcp's own feature flags below so `--no-default-features`
|
|
# actually works (previously hardcoded here, which silently defeated the flag).
|
|
vestige-core = { version = "2.0.5", path = "../vestige-core", default-features = false, features = ["bundled-sqlite"] }
|
|
|
|
# ============================================================================
|
|
# MCP Server Dependencies
|
|
# ============================================================================
|
|
# Async runtime
|
|
tokio = { version = "1", features = ["full", "io-std"] }
|
|
|
|
# Serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
# Date/Time
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
# UUID
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
|
|
# Constant-time comparison for auth tokens (prevents timing side-channels)
|
|
subtle = "2"
|
|
|
|
# Error handling
|
|
thiserror = "2"
|
|
anyhow = "1"
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
|
|
|
|
# Platform directories
|
|
directories = "6"
|
|
|
|
# CLI
|
|
clap = { version = "4", features = ["derive"] }
|
|
colored = "3"
|
|
|
|
# SQLite (for backup WAL checkpoint)
|
|
rusqlite = { version = "0.38", features = ["bundled"] }
|
|
|
|
# Dashboard (v2.0) - HTTP server + WebSocket + embedded SvelteKit
|
|
axum = { version = "0.8", default-features = false, features = ["json", "query", "tokio", "http1", "ws"] }
|
|
tower = { version = "0.5", features = ["limit"] }
|
|
tower-http = { version = "0.6", features = ["cors", "set-header"] }
|
|
futures-util = "0.3"
|
|
open = "5"
|
|
|
|
# Embedded SvelteKit dashboard (v2.0)
|
|
include_dir = "0.7"
|
|
mime_guess = "2"
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|