Skip to main content

Vity by Maximem AI — cross-session semantic memory SDK with profile-based recall and memory graph.

Project description

maximem-vity-sdk

Vity by Maximem AI — a lightweight Python SDK for cross-session semantic memory. Store facts and preferences, recall relevant context for a prompt, run semantic search, and capture whole conversation turns — all over the Maximem REST API.

from maximem_vity import VityClient

client = VityClient(api_key="mx_...")

# Recall context ready to inject into a system prompt
context = client.recall(current_prompt="What color theme does the user like?")

# Store an explicit fact
client.store("User prefers dark mode", memory_type="preference")

# Semantic search
hits = client.search("editor preferences", top_k=5)

Installation

pip install maximem-vity-sdk

Requires Python ≥ 3.9. The only runtime dependency is httpx.

Authentication

Every request is authenticated with a Maximem API key (it starts with mx_). The API key owns the memory spaceVityClient takes no channel or user ID. Use a separate API key whenever memories must be isolated between users or accounts.

Get your key at maximem.ai/dashboard.

import os
from maximem_vity import VityClient

client = VityClient(api_key=os.environ["MAXIMEM_API_KEY"])
export MAXIMEM_API_KEY="mx_..."

API

recall(current_prompt, recent_messages=None, max_tokens=1000, strategy="hybrid") -> str

Returns a plain-text context block for the current prompt, ready to inject into a system prompt (empty string if nothing relevant). strategy is one of "semantic", "recency", or "hybrid".

context = client.recall(
    current_prompt="Remind me what we decided about the API.",
    recent_messages=[{"role": "user", "content": "Let's revisit the API."}],
    max_tokens=800,
)

store(content, memory_type="fact", category="", importance="medium") -> dict

Stores a single explicit memory. memory_type accepts the high-level aliases fact, preference, emotion, episode, knowledge, profile (mapped to Maximem categories automatically), or pass category directly to override. importance is "low", "medium", or "high". Returns {"id": ..., "stored": True}.

client.store("User's timezone is IST", memory_type="fact", importance="high")

search(query, top_k=10, limit=0, category="", min_score=0.0) -> list[dict]

Semantic search. Returns a list of dicts shaped as {"content", "type", "score", "id", "created_at"}. top_k is the convenience limit (capped at 20 by the API); limit overrides it when set.

for hit in client.search("favourite languages", top_k=5, min_score=0.3):
    print(hit["score"], hit["content"])

capture(messages, agent_id="hermes", session_key="") -> dict

Captures a full conversation turn into long-term memory. messages is a list of {"role", "content", "timestamp"} dicts (timestamps are filled in if omitted). Returns {"captured": N, "deduplicated": M}.

client.capture([
    {"role": "user", "content": "I hate comic sans"},
    {"role": "assistant", "content": "Noted — I'll avoid it."},
])

forget(query="", dry_run=True) -> dict

Deletes memories matching a query. Defaults to a dry run — pass dry_run=False to actually delete. Returns {"count": N, "ids": [...]}.

preview = client.forget(query="old project notes")          # safe preview
client.forget(query="old project notes", dry_run=False)     # actually delete

Convenience shims

  • ingest(messages, session_id="") — alias for capture().
  • get_profile() — a broad search returning the user's stored memories.

Lifecycle

VityClient holds a pooled HTTP connection. Close it explicitly or use it as a context manager:

with VityClient(api_key="mx_...") as client:
    client.store("User prefers tabs over spaces")
# connection closed automatically

Error handling

All errors derive from VityError:

Exception Raised when
VityAuthError API key missing or invalid (HTTP 401)
VityRateLimitError Rate limit exceeded (HTTP 429) — back off and retry
VityUnavailableError Network error, timeout, or service error (HTTP 5xx)
VityError Any other API error
from maximem_vity import VityClient, VityError

try:
    client.store("...")
except VityError as e:
    logger.warning("Memory write failed: %s", e)

Configuration

Option Default Description
api_key Required. Maximem API key (mx_...).
endpoint https://agenticrouter-prod.maximem.ai Override for staging.
timeout 30.0 Per-request timeout in seconds.

Development

pip install -e ".[dev]"
pytest                      # run the test suite
python -m build             # build the wheel + sdist into dist/

License

MIT © Maximem AI

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

maximem_vity_sdk-0.1.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

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

maximem_vity_sdk-0.1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file maximem_vity_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: maximem_vity_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for maximem_vity_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e2f2b933a113e9b55f33d41c865411dc72875ffc88e42268bb418a324731b160
MD5 4b9916c2402e9a08cf92b9dbb4b45b18
BLAKE2b-256 e1165bdf4952cefe85cf6d50516cfa69998d333d5afbf905ffe95cd8ab597547

See more details on using hashes here.

File details

Details for the file maximem_vity_sdk-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for maximem_vity_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b16bbe678291bdac59d4b8113aabc9a0a4adf26e403d71c2a97407192d9fc2d4
MD5 797c573192ac2dbf5c0bf9fdbd9b7764
BLAKE2b-256 7f3b1478b7e2db3955944fc7c313c698de3d29271eaecb1b701b18edadf14835

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