GoodMem's Convenient SDK for Python
Project description
GoodMem Python SDK
An OpenAI-style API for Goodmem with auto-inference of model parameters, streaming retrieval, async support, and auto-pagination. The SDK stays in sync with the server's OpenAPI spec — except for hand-written convenience methods (model registry auto-inference, flat post-processor kwargs, etc.) that wrap the generated layer. Please see ../notes/clients_gen.md for the SDK generation details and ../notes/docs_gen.md for the doc generation details.
Installation
pip install goodmem
Usage
The programmatic way
from goodmem import Goodmem
client = Goodmem(
base_url="http://localhost:8080",
api_key="gm_..."
)
embedder = client.embedders.create(
display_name="OpenAI Embedder",
model_identifier="text-embedding-3-large",
api_key="sk-your-openai-key",
)
print(f"Created: {embedder.embedder_id}")
The Skill way
# One-time setup — copy the skill into your Claude Code skills directory
cp -r $(python -c "import goodmem; print(goodmem.__path__[0])")/skills ~/.claude/skills/goodmem
Once installed, Claude Code automatically loads the GoodMem SDK reference when you ask it to create embedders, store memories, run retrieval, etc.
Project structure
clients/v2/
├── python/ # Python SDK (this directory, published to PyPI as "goodmem")
├── _clients_gen/ # Code generation (spec → SDK + MCP)
├── _docs_gen/ # Doc generation (ref pages, skills, sdk2rest)
├── mcp/ # MCP server (published to npm as @pairsystems/goodmem-mcp)
├── claude/ # Claude Code plugin (git subtree → public repo)
├── vibe/ # Cross-SDK vibe auditing (audit_docs.sh, audit_ref_doc.sh, ...)
├── registries/ # Shared model registries (copied into each SDK)
├── ci/ # CI infrastructure
├── notes/ # Internal dev notes (clients_gen.md, docs_gen.md)
├── clients_gen.sh # Full SDK generation pipeline
└── docs_gen.sh # Full doc generation pipeline
Development commands
# Generation (run from clients/v2/, not python/)
cd ..
./clients_gen.sh # compile server → IR → Python SDK → MCP → test
./clients_gen.sh -y # same, but skip server-reset confirmation (unattended/CI)
./docs_gen.sh # ref pages + skills + snippets
./docs_gen.sh --sdk2rest # translate SDK test snippets → REST equivalents
# Publishing (run from python/)
cd python
./publish.sh # Publish to PyPI
./publish.sh --test # Publish to TestPyPI
# Vibe auditing (Claude Code non-interactive)
../vibe/audit_docs.sh # run all doc audits (ref docs + skill docs)
../vibe/audit_ref_doc.sh # audit generated MDX ref docs against SDK source
../vibe/audit_skill_doc.sh # audit generated skill reference (SDK, REST, patterns)
In clients_gen.sh, integration test is only activated when environment variables GOODMEM_BASE_URL and GOODMEM_API_KEY are set.
Warning: Before the integration tests,
clients_gen.shand CI all rungoodmem-reset.shto delete ALL resources on the target server. Never pointGOODMEM_BASE_URLat a production server. We have a dedicated test server on Fly.io for this purpose. See ci/README.md for more details.
See notes/clients_gen.md for the full regeneration workflow and notes/docs_gen.md for the doc and auditing pipelines.
Documentation
- Code generation guide — architecture, regeneration, testing, tier details
- Doc generation guide — how ref docs are generated, docstring authoring
- CI pipeline — GitHub Actions workflow, secrets, Fly.io test server setup
- API reference — published SDK docs
TODO
- Add
gemini-embedding-001to embedder registry once backend addsOPENAI_COMPATIBLEtoProviderType. - Add Anthropic, Google, Cohere, and Mistral LLMs to registry once backend adds matching
LLMProviderTypevalues. - Automate model registry updates to add new models as they are released.
- Generate SDK to an intermediate representation, then map that to cURL, HTTPie, HTTPX, Go, JavaScript, etc.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file goodmem-0.1.22.tar.gz.
File metadata
- Download URL: goodmem-0.1.22.tar.gz
- Upload date:
- Size: 152.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32786ce82c692ecbed07bd5f327af7425c94d402fc90e93c5cc8ce7fd820a9bc
|
|
| MD5 |
a41d261a7ca6ef376bb384b36a5e3b9b
|
|
| BLAKE2b-256 |
1947ce2f4f94c773fcd5f9920ba56f7bf922d37cb024e8664405d43b468591da
|
File details
Details for the file goodmem-0.1.22-py3-none-any.whl.
File metadata
- Download URL: goodmem-0.1.22-py3-none-any.whl
- Upload date:
- Size: 166.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fb129cd1fadb1d5b71b867edad1bdd51a56b60b20cd01a10108051b0b2082cc
|
|
| MD5 |
b1fe261b2e9ab96d7dda0cb4d3bab8d6
|
|
| BLAKE2b-256 |
91dc044b31a8a165e3536c9964014e6099dfafb32102600b5316152e172b1ebf
|