Skip to main content

Python SDK for Engram by Weaviate.

Project description

weaviate-engram

[!WARNING] Engram is currently in preview. While in preview (pre-1.0), the API is subject to breaking changes without notice. Use in production at your own risk.

Engram is a fully managed memory service by Weaviate. It lets you add persistent, personalized memory to AI assistants and agents — no infrastructure to set up or manage. When you add a memory, Engram processes it asynchronously through a background pipeline that extracts, deduplicates, and reconciles facts. Memories are scoped at three levels — project, user, and conversation — which can be mixed and matched freely. Each scope is backed by Weaviate's multi-tenant architecture, ensuring strong isolation between tenants.

Requirements

  • Python 3.11 to 3.14

Installation

pip install weaviate-engram
uv add weaviate-engram

Quick Start

Create a project and get an API key at console.weaviate.cloud/engram.

from engram import EngramClient

client = EngramClient(api_key="your-api-key")

Add a memory from a string:

run = client.memories.add("Alice prefers async Python and avoids Java.", user_id="user_123")

Add a memory from a conversation:

run = client.memories.add(
    [
        {"role": "user", "content": "What's the best way to handle retries?"},
        {"role": "assistant", "content": "Exponential backoff with jitter is the standard approach."},
        {"role": "user", "content": "Got it — I'll use that in my HTTP client."},
    ],
    user_id="user_123",
)

Search memories:

results = client.memories.search(query="What does Alice think about Python?", user_id="user_123")
for memory in results:
    print(memory.content)

Wait for a run to complete (memory processing is asynchronous):

status = client.runs.wait(run.run_id, timeout=60.0)
print(status.status)  # "completed" or "failed"
print(f"+{len(status.memories_created)} ~{len(status.memories_updated)} -{len(status.memories_deleted)}")

Async Client

An async client is also available:

from engram import AsyncEngramClient

client = AsyncEngramClient(api_key="your-api-key")

run = await client.memories.add("Alice prefers async Python and avoids Java.", user_id="user_123")
results = await client.memories.search(query="What does Alice think about Python?", user_id="user_123")

Contributing

See CONTRIBUTING.md.

License

This project is licensed under the BSD 3-Clause License.

Support

For questions or help, reach out to support@weaviate.io.

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

weaviate_engram-0.2.0.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

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

weaviate_engram-0.2.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file weaviate_engram-0.2.0.tar.gz.

File metadata

  • Download URL: weaviate_engram-0.2.0.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for weaviate_engram-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5954a479a94a30203718404d9ea417954a11d1923884cfd4ab36292ac7b2fd99
MD5 b48623ab404781ae783de82e1d426689
BLAKE2b-256 8079699aec87ec79bf27bc330c05cb11f4700bdd41558c44bd19569d1ce59875

See more details on using hashes here.

File details

Details for the file weaviate_engram-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: weaviate_engram-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for weaviate_engram-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e208aaea4243e345773a4b7d42b8844e4808eb7cae3391cacfc50447f133edcc
MD5 57b46258fe4ec8fa0a27c52c05a8abf1
BLAKE2b-256 a0dac38b5eaa9d64ba3e1280914d21842268291af0b69e1e388dfa6bf774a4e7

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