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.5.0.tar.gz (8.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.5.0-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: weaviate_engram-0.5.0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","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.5.0.tar.gz
Algorithm Hash digest
SHA256 691fbfb60254309248ef5d92468177aab4acb7269674285a92e99ee05598b9cd
MD5 e824b1738566bb24b4cda2986d69e058
BLAKE2b-256 e55db753b182d54de12218c9cb783f76f218e18e87c49199d356c2fc49b43202

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weaviate_engram-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d92653828e933d4bbd29d993383e19eaca109e81b40d2cbc5b7e8caee0615f6b
MD5 096e4def9f3c0b5d21bb325a5299719c
BLAKE2b-256 a55cd3911113ba2b7a2237b48d2dc7fb6d085b2d263329cf62c99e185e351684

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