Skip to main content

Official Python SDK for Cube Memory — semantic search with 100% exact recall

Project description

cubememory

Official Python SDK for Cube Memory — semantic search with 100% exact recall, isolated multi-tenant islands, and native MCP support.

PyPI npm License: MIT

Install

pip install cubememory          # sync (uses requests)
pip install cubememory[async]   # + async support (uses httpx)

Quick Start

from cubememory import CubeClient

cube = CubeClient(
    base_url="https://cubememory.com.br/gateway",
    api_key="cm_live_YOUR_KEY",
    project_id="proj_YOUR_PROJECT",
)

# Semantic search — 100% exact cosine recall (no ANN approximation)
results = cube.index("my-docs").search("wireless headphones", limit=10)
for r in results:
    print(f"[{r.score:.2f}] {r.text_preview}")

# Index a document
cube.index("my-docs").insert(
    id="doc-001",
    text="Noise cancelling Sony WH-1000XM5",
    metadata={"price": 349, "brand": "Sony"},
)

# LLM Memory (agent remembers between sessions)
cube.memory.store("User prefers dark mode and speaks Portuguese")
ctx = cube.memory.search("user preferences")

# PKM Notes
cube.notes.upsert(
    title="Meeting Q3",
    text="Discussed the roadmap and timeline.",
    tags=["meeting", "q3"],
)
notes = cube.notes.search("roadmap")

Async Usage

import asyncio
from cubememory.client import AsyncCubeClient

async def main():
    cube = AsyncCubeClient(
        base_url="https://cubememory.com.br/gateway",
        api_key="cm_live_YOUR_KEY",
        project_id="proj_YOUR_PROJECT",
    )
    results = await cube.index("my-docs").search("wireless headphones")
    memories = await cube.memory.search("user preferences")

asyncio.run(main())

API Reference

CubeClient(base_url, api_key, project_id, timeout=30.0)

Param Type Description
base_url str Gateway URL, e.g. https://cubememory.com.br/gateway
api_key str Your API key (cm_live_xxx)
project_id str Your project ID (proj_xxx)

cube.index(name)

Method Description
.insert(id, text, metadata?) Index a document
.insert_many(docs[]) Batch index
.search(query, limit?, threshold?, filter?) Semantic search → List[SearchResult]
.get(id) Fetch by ID
.delete(id) Remove document
.stats() Index statistics

SearchResult fields: id, score, text_preview, metadata


cube.memory

Agent memory — persists LLM context between sessions.

Method Description
.store(text, layer?) Save memory ("long-term" or "short-term")
.search(query, limit?) Semantic search → List[SearchResult]
.list(limit?) List all memories
.delete(id) Delete a memory

cube.notes

PKM Notes — Obsidian-style knowledge base with AI auto-connections.

Method Description
.upsert(title, text, id?, tags?) Create or update a note
.list() List all notes → List[Note]
.get(id) Full note with related notes → NoteDetail
.search(query, limit?) Semantic search → List[Note]
.delete(id) Delete note and its chunks

MCP Integration

Connect Claude, GPT, Cursor, or any MCP-compatible LLM:

{
  "mcpServers": {
    "cube-memory": {
      "type": "http",
      "url": "https://cubememory.com.br/gateway/v1/mcp",
      "headers": {
        "Authorization": "Bearer cm_live_YOUR_KEY",
        "X-Project-Id": "proj_YOUR_PROJECT"
      }
    }
  }
}

Available MCP tools: search_memory, store_memory, list_memories, search_notes, get_note.


LangChain / Agent Integration

from cubememory import CubeClient

cube = CubeClient(base_url, api_key, project_id)

# Use as a LangChain retriever-style tool
def retrieve(query: str) -> list[str]:
    results = cube.index("knowledge-base").search(query, limit=5)
    return [r.text_preview for r in results]

# Agent memory tool
def remember(text: str) -> str:
    cube.memory.store(text)
    return f"Stored: {text[:60]}..."

def recall(query: str) -> str:
    results = cube.memory.search(query, limit=3)
    return "\n".join(r.text_preview for r in results)

Why Cube Memory?

Cube Memory Bancos vetoriais baseados em ANN/HNSW
100% exact recall ✅ cosine float32 ❌ ANN approximation
Multi-tenant isolation ✅ island per project ⚠️ shared index with filters
MCP native ✅ built-in
Self-host footprint ✅ minimal, single-host friendly ❌ heavy multi-service clusters
LGPD/GDPR ✅ data never leaves your server ❌ cloud by default

Links

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

cubememory-0.1.3.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

cubememory-0.1.3-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file cubememory-0.1.3.tar.gz.

File metadata

  • Download URL: cubememory-0.1.3.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for cubememory-0.1.3.tar.gz
Algorithm Hash digest
SHA256 6f038f0747fe1ee5ddf5d59605cd43cb5c7a8f4807aaa88389df53999bbab005
MD5 999037b7ac4f0ae146e97bf264fbeaff
BLAKE2b-256 ddcff6db537bb041a289621b32bb39b13c821a71cfc6f7691d647114090877c3

See more details on using hashes here.

File details

Details for the file cubememory-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: cubememory-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for cubememory-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 86f4b86141e05acf14beda84b90b5aec3bae0102ec5b6de216e39b684f3c9dac
MD5 587f7ad19ac6e4ca5ac65b27f026c180
BLAKE2b-256 52b04f23fdf4c570ee2898f2dcf11101e847e5527c4d77ba6cc27a2a280f82dc

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