Skip to main content

Python SDK for Gestalt executable providers

Project description

Gestalt Python SDK

Use the Python SDK to build executable Gestalt providers with normal Python classes, functions, and type annotations.

The package is published to PyPI as gestalt-sdk and imported in provider code as gestalt.

uv add gestalt-sdk
import gestalt


class SearchInput(gestalt.Model):
    query: str = gestalt.field(description="Search query")


plugin = gestalt.Plugin("search")


@plugin.operation(method="GET", title="Search")
def search(input: SearchInput, request: gestalt.Request):
    return {"results": [input.query]}

Provider projects

Python source providers are discovered through [tool.gestalt].provider in pyproject.toml.

[project]
name = "gestalt-search"
version = "0.0.1"
dependencies = ["gestalt-sdk"]

[tool.uv]
package = false

[tool.gestalt]
provider = "provider"

Use the provider manifest for static provider identity, connections, hosted HTTP routes, passthrough surfaces, and release metadata. Use Python code for executable operations, provider lifecycle hooks, host-service clients, and provider-specific runtimes.

Public surface

The top-level gestalt package exposes the supported authoring API:

  • Model, field, Plugin, operation, and Request for integration providers.
  • AuthenticationProvider, CacheProvider, S3Provider, SecretsProvider, WorkflowProvider, AgentProvider, and PluginRuntimeProvider for host-service provider runtimes.
  • Cache, IndexedDB, S3, WorkflowHost, WorkflowManager, AgentHost, AgentManager, and PluginInvoker for calling sibling host services.
  • gestalt.telemetry for provider-authored GenAI spans and metrics.

The SDK also exposes authored protocol helpers for agent, workflow, authorization, and authentication request payloads. The generated protobuf stubs are private runtime internals and are not part of the provider authoring API.

Regenerating protobuf stubs

This is an SDK maintainer workflow. Provider authors consume the checked-in stubs through the gestalt package and do not need to regenerate them in provider repositories.

Regenerate them from the repo root with:

uv run python sdk/python/scripts/generate_stubs.py

The script uses pinned Buf remote Python plugins so the generated stubs stay reproducible while plugin_pb2.py tracks the protobuf 6.33.1 runtime floor used by this SDK package and remains compatible with protobuf 7 runtimes. buf must be available on PATH.

API reference

The authored Python API reference is generated with Sphinx from the SDK's docstrings. Build it locally from sdk/python with:

uv sync --group dev
uv run sphinx-build -W -b html -d docs/_build/doctrees docs docs/_build/html

The generated docs intentionally focus on the handwritten SDK surface. The checked-in protobuf stubs live under the private gestalt/_gen package and are not expanded as authored reference pages.

Publishing

The SDK is published publicly as gestalt-sdk while keeping the import path gestalt.

Release tags stay aligned with the repo's SDK tag convention:

  • sdk/python/v0.0.1
  • sdk/python/v0.0.1-alpha.1
  • sdk/python/v0.0.1-beta.1
  • sdk/python/v0.0.1-rc.1

The release workflow normalizes those tag versions to PEP 440 before building and publishing with uv, so sdk/python/v0.0.1-alpha.1 becomes package version 0.0.1a1.

Releases are published to PyPI through GitHub Actions Trusted Publishing. The release workflow runs in the pypi environment and uses GitHub OIDC rather than a checked-in upload token.

Local SDK checks

From sdk/python, install the SDK plus its dev tooling and run the checks used in CI:

uv sync --group dev
uv run ruff check .
uv run ty check --exclude 'gestalt/_gen/**' gestalt scripts tests
uv run vulture --config pyproject.toml
uv run python -m unittest discover -s tests
uv run sphinx-build -W -b html -d docs/_build/doctrees docs docs/_build/html

The generated protobuf stubs under gestalt/_gen are excluded from the static analysis tools because they are vendored output rather than hand-maintained SDK code.

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

gestalt_sdk-0.0.1a19.tar.gz (139.4 kB view details)

Uploaded Source

Built Distribution

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

gestalt_sdk-0.0.1a19-py3-none-any.whl (129.4 kB view details)

Uploaded Python 3

File details

Details for the file gestalt_sdk-0.0.1a19.tar.gz.

File metadata

  • Download URL: gestalt_sdk-0.0.1a19.tar.gz
  • Upload date:
  • Size: 139.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gestalt_sdk-0.0.1a19.tar.gz
Algorithm Hash digest
SHA256 378c45e27b06664de77494915e299dc2ff639335a5a4ab26287286ed1fed1948
MD5 e2e93028b3650820cde16a880325a3f5
BLAKE2b-256 c7826598fb7ca11d6e1cac9ba91c8ed22738156339a54c358675c14bea0cab73

See more details on using hashes here.

Provenance

The following attestation bundles were made for gestalt_sdk-0.0.1a19.tar.gz:

Publisher: release-sdk.yml on valon-technologies/gestalt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gestalt_sdk-0.0.1a19-py3-none-any.whl.

File metadata

  • Download URL: gestalt_sdk-0.0.1a19-py3-none-any.whl
  • Upload date:
  • Size: 129.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gestalt_sdk-0.0.1a19-py3-none-any.whl
Algorithm Hash digest
SHA256 47301be714407516e2de40b7c6c644c4f8d9500272df4645342eeb7b34b9946d
MD5 50d58372a30af8d9fe3dfc26a6052e30
BLAKE2b-256 5118e200b4d232b7e3fe08fae90bc4d5693d4f8b8cd884003b1f63810e7c0399

See more details on using hashes here.

Provenance

The following attestation bundles were made for gestalt_sdk-0.0.1a19-py3-none-any.whl:

Publisher: release-sdk.yml on valon-technologies/gestalt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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