langgraph-store-firestore
A Google Firestore long-term-memory store (BaseStore) for LangGraph — namespaced key/value memory with prefix search, filters, list_namespaces, and native semantic search via Firestore vector search.
pip install langgraph-store-firestore
from langgraph_store_firestore import FirestoreStore
store = FirestoreStore(project_id="my-gcp-project")
store.put(("users", "1", "memories"), "food", {"text": "loves sushi", "kind": "pref"})
item = store.get(("users", "1", "memories"), "food")
hits = store.search(("users", "1"), filter={"kind": "pref"})
Use it as a LangGraph store: graph.compile(store=FirestoreStore(...)). Async methods work too (sync calls run in a thread). Authentication uses Application Default Credentials (gcloud auth application-default login).
Semantic search (Firestore vector search)
Pass a LangGraph IndexConfig and the store embeds the configured fields on put (stored as a Firestore Vector) and ranks search(query=...) by cosine similarity using find_nearest:
from langgraph_store_core import bedrock_titan_embeddings
from langgraph_store_firestore import FirestoreStore
store = FirestoreStore(project_id="my-gcp-project", collection="memory",
index={"dims": 1024, "embed": bedrock_titan_embeddings(dimensions=1024), "fields": ["text"]})
store.put(("memories", "kamal"), "k1", {"text": "the user loves sushi", "kind": "pref"})
hits = store.search(("memories", "kamal"), query="what food does the user like?", filter={"kind": "pref"})
print(hits[0].score, hits[0].value)
embed may be any LangChain Embeddings, a list[str] -> list[list[float]] callable, or a provider string. fields defaults to ["$"] (whole value as JSON). put(..., index=False) skips embedding for one item.
Firestore requires a vector index. With create_index=True (default) the store creates a composite index prefix ASC + embedding (flat, dims) on the collection through the Firestore Admin API if one is missing; the build is asynchronous and query searches fail with FAILED_PRECONDITION until it is READY (usually a few minutes; check gcloud firestore indexes composite list). The caller needs datastore.indexes.create / list permissions, or create the index yourself and pass create_index=False:
gcloud firestore indexes composite create --collection-group=memory --query-scope=COLLECTION \
--field-config=order=ASCENDING,field-path=prefix \
--field-config=vector-config='{"dimension":"1024","flat":"{}"}',field-path=embedding
The namespace prefix is a range pre-filter on the vector query. Firestore pre-filters are limited to indexed equality/range fields, so value filters are applied on the returned candidates (the store oversamples when a filter is given).
Data model
A single collection of documents {prefix, key, value, created_at, updated_at[, embedding: Vector]}, doc id = enc(prefix)__enc(key). Search is a prefix range query; filters and namespace matching are evaluated in the core.
Docs: https://skamalj.github.io/agentstate-reducer/
License
MIT
Metadata
Release files for langgraph-store-firestore 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| langgraph_store_firestore-0.1.0.tar.gz | 6.6 kB | Without provenance | Details for langgraph_store_firestore-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| langgraph_store_firestore-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for langgraph_store_firestore-0.1.0-py3-none-any.whl |
Total release size: 12.0 kB
Release files / langgraph_store_firestore-0.1.0.tar.gz
| Download URL | langgraph_store_firestore-0.1.0.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2058928a3ea434e0df245e4e32ac0372fa1f9668e5dc006719abae05f6c6021d
|
|
BLAKE2b-256 checksum How to use checksums |
78baaeefe94c00d268aa307dddcb85cef3fa10924576efd1b14962285ec4a511
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","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":null}
|
Release files / langgraph_store_firestore-0.1.0-py3-none-any.whl
| Download URL | langgraph_store_firestore-0.1.0-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8a760d429718d526e2717c40db3c08107f56509138ddb2d927a62eeca491ae84
|
|
BLAKE2b-256 checksum How to use checksums |
65d1ed45be06e409e4f213bfa42d096a72b3513e6466a75f2eb1e39c2cd85e00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","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":null}
|
Security for langgraph-store-firestore 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.