Skip to main content

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 app.maximem.ai/api-keys.

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

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.2.1.tar.gz (13.0 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.2.1-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for maximem_vity_sdk-0.2.1.tar.gz
Algorithm Hash digest
SHA256 2b454dd1a97f11f49c4775580d9281bdfbe541982c9d76f5babbcaf803e5dd86
MD5 6962e0838bbf91858ac51660c858b01e
BLAKE2b-256 57b34e9ab9a178fbf890f6c803988dbb23c16462bccffc1780bccba80db6ed06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for maximem_vity_sdk-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 632e105a5659339ee125158be9a082d98d740727c79cc8c71d8b4b31cc4c2de1
MD5 2cbc41e9fd4e5bdf899d37387651edcf
BLAKE2b-256 bf4c6ff0dfd711794e133c5f2a0ac7724c63ed4e2db0ecf56878d6a308af15dc

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