Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ classifiers = [ # List of https://pypi.org/classifiers/
]
dependencies = [
# go/keep-sorted start
"google-genai>=1.21.1, <2.0.0", # Google GenAI SDK
"google-adk", # Google ADK
"google-genai>=1.21.1, <2.0.0", # Google GenAI SDK
"httpx>=0.27.0, <1.0.0", # For OpenMemory service
"orjson>=3.11.3",
"redis>=5.0.0, <6.0.0", # Redis for session storage
Comment thread
miyannishar marked this conversation as resolved.
# go/keep-sorted end
"orjson>=3.11.3",
]
dynamic = ["version"]

Expand All @@ -40,6 +40,9 @@ changelog = "https://github.com/google/adk-python-community/blob/main/CHANGELOG.
documentation = "https://google.github.io/adk-docs/"

[project.optional-dependencies]
s3 = [
"aioboto3>=13.0.0", # For S3ArtifactService
]
test = [
"pytest>=8.4.2",
"pytest-asyncio>=1.2.0",
Expand Down
1 change: 1 addition & 0 deletions src/google/adk_community/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from . import artifacts
from . import memory
from . import sessions
from . import version
Expand Down
38 changes: 38 additions & 0 deletions src/google/adk_community/artifacts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Community Artifact Services

This module contains community-contributed artifact service implementations for ADK.

## Available Services

### S3ArtifactService

Production-ready artifact storage using Amazon S3 (or any S3-compatible service such as MinIO, DigitalOcean Spaces, etc.).

**Installation:**
```bash
pip install google-adk-community[s3]
```

**Usage:**
```python
from google.adk_community.artifacts import S3ArtifactService

artifact_service = S3ArtifactService(
bucket_name="my-adk-artifacts",
aws_configs={"region_name": "us-east-1"},
)
```

**Features:**
- Native async I/O via `aioboto3` (no `asyncio.to_thread` wrappers)
- Atomic versioning using S3 conditional writes (`IfNoneMatch`)
- Session-scoped and user-scoped artifacts
- Automatic version management
- Custom metadata support (JSON-serialised)
- Batch delete for efficient cleanup
- Paginated listing for large artifact collections
- Works with S3-compatible services (MinIO, DigitalOcean Spaces, etc.)

**See Also:**
- [S3ArtifactService Implementation](./s3_artifact_service.py)
- [Tests](../../../tests/unittests/artifacts/test_s3_artifact_service.py)
19 changes: 19 additions & 0 deletions src/google/adk_community/artifacts/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from .s3_artifact_service import S3ArtifactService

__all__ = [
'S3ArtifactService',
]
Loading
Loading