Skip to main content

Synth SDK 0.23 development branch

Local SDK-first Index implementation. The pinned 0.23 development wheel is an engineering qualification candidate and must not be published as a release.

The new client targets the closed index.v1 contract on /api/v1; it refuses legacy responses and does not fall back. Backend adoption and native/cached/live acceptance are pending. This worktree also implements the first Swarms core, output/file delivery and unified MCP adapter. The initial caller model override accepts gpt-6-luna, with openai as the supported provider override. Omitted overrides preserve backend project defaults; resolved metadata is not an override allowlist. Hosted MCP requires the backend authorization/service adapter; its native OAuth/API-key journeys remain unqualified.

SDK clients and synth-ai-mcp use SYNTH_API_KEY for authentication and SYNTH_API_URL for the API origin (default https://api.usesynth.ai). Explicit api_key / base_url arguments, or the MCP --base-url flag, take precedence. Anonymous clients do not read key variables.

Without an explicit or environment key, authenticated clients and stdio MCP use the private credential created by synth-ai login. Login discovery is lazy; each authenticated operation reloads the origin-bound credential and refreshes it if needed. Logout therefore affects the next call in an existing client.

During migration, SYNTH_USER_KEY and SYNTH_BACKEND_API_KEY remain key aliases; SYNTH_BACKEND_URL and SYNTH_API_BASE_URL remain URL aliases. Using an alias without the canonical variable emits one warning per name per process, without its value. Conflicting legacy values refuse configuration. A present but empty canonical variable is invalid and never falls back to another identity.

from synth_ai import SynthClient
from synth_ai.sdk.index import PublicSearchOptions

with SynthClient.anonymous() as client:
    result = client.index.search("reproducible retrieval evidence", options=PublicSearchOptions())
    print(result.response)

This requires an index.v1 backend. Keyed calls require KeyedSearchOptions with an exact Money charge ceiling. Durable search and mutation recovery are keyed. Use typed content refs for current-rights retrieval; citations grant no access. Synchronous clients own a cancellable HTTP pool; synchronous client injection is not supported. Async clients use native async HTTP and may borrow an AsyncClient. Local observer timeouts and close never cancel durable remote work.

For explicit HTTPX use, synth_ai.transports.DeadlineHTTPTransport supplies the same owned, cancellable network implementation. Set a finite HTTPX read timeout; it bounds the whole exchange, including headers and body. Close the HTTPX client to release its pool and join its network thread. Arbitrary non-cooperative synchronous transports cannot be preempted; synchronous client injection into SynthClient is deliberately unsupported. Observer total, idle, reconnect and event-count bounds remain independent of explicit remote cancellation.

The retired source remains on legacy/sdk-pre-0230-20261013; no broad compatibility aliases, old CLI or split MCP are shipped.

Tests live in the dedicated testing repository and install the selected wheel in an owned isolated environment. SDK unit/contract passes are not backend or end-to-end qualification. No backend services/data/deployment are changed here.

Per-request capacity is available through a caller-owned synth_ai.types.rate_limits.ResponseMetadata passed as MutationOptions(response_metadata=capacity) or ReadOptions(response_metadata=capacity). Use one instance per concurrent request. Typed errors and MCP error payloads also retain bounded rate-limit values. These fields never change the result body.

Qualified publication

Source pushes do not publish packages. .github/workflows/publish-dev.yml keeps the registered Trusted Publisher filename and pypi environment, and requires a manual release dispatch. Nightlies use an accepted staging source and an exact X.Y.Z.devN version; stable publication uses main and X.Y.Z. The selected source must already be on that branch. The publisher never builds or restamps a distribution.

The dispatch selects a same-repository Actions artifact by immutable ID and archive SHA256, plus the exact source SHA and version. Its successful producer run must name that source and must not be a PR or fork run. The artifact contains:

  • qualification.json with schema synth.sdk.qualified-artifact.v1, status: "passed", source_sha, version, and channel.
  • distributions: one wheel and optionally one sdist, each with filename and SHA256. These are the final-version bytes that were qualified.
  • checks: sdk-contracts, fresh-install, native-index-fast, native-index-deep, native-monitor, native-swarms, and staging. Each carries status: "passed" (see deferral below), the same source_sha, the exact distributions filename-to-SHA256 mapping, evidence_path under evidence/, and that file's evidence_sha256. A check named in .github/release-policy.json for that exact version may instead carry status: "deferred" with a non-empty reason and a ticket id (ticket); its evidence file is the deferral record {"check", "reason", "ticket"} and must match. For 0.23.0 only native-swarms is deferrable. Every other check must be passed, and the publish receipt lists deferred checks.

Qualification must produce this artifact only after the named checks actually pass. The verifier binds retained evidence and bytes; it does not infer test success from filenames. Review the source, checks and wheel hashes in the verification job before authorizing the protected pypi job. Existing registry versions are accepted only when their complete filename/hash set matches; different bytes refuse instead of being silently skipped. The final registry readback and publication receipt are retained as workflow artifacts.

For qualification performed on the release host, retain the complete reviewed ZIP as a same-repository release asset, then dispatch retain-qualified-release.yml at its exact source commit. Supply the asset ID, ZIP hash, channel and final version. The producer validates the same source, distribution and evidence rules and uploads the unchanged files as an Actions artifact. Use that artifact's immutable ID and archive digest in the protected publisher. The producer does not run missing checks or build a replacement wheel.

.github/v023-preserved-candidate.json records the unchanged SDK1511 candidate wheel and original source. That record is provenance, not publication approval or a substitute for final native and staging qualification.

Metadata

Release files for synth-ai 0.23.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for synth-ai 0.23.0
File Interpreter ABI Platform
synth_ai-0.23.0-py3-none-any.whl Python 3 none any Details

Release files / synth_ai-0.23.0-py3-none-any.whl

Download URL synth_ai-0.23.0-py3-none-any.whl
Size 194.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
11fd62f544671e64e39f94e50b1c3e3c613307db850a2798c66c2c3f985a1756
BLAKE2b-256 checksum
How to use checksums
a0bdb9d942ca7e349804b7e97b49b9cd5d66bcb4e23f0efdce14bd2a282f5fcc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.23.0 This release

1 release file

0.22.0

2 release files

0.21.3

2 release files

0.21.2

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.20.2

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.2

2 release files

0.18.0

2 release files

0.17.4

2 release files

0.17.3

2 release files

0.17.2

2 release files

0.17.1

2 release files

0.17.0

2 release files

0.16.1

2 release files

0.16.0

2 release files

0.15.2

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.14.2

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.7

2 release files

0.11.6

2 release files

0.11.5

2 release files

0.11.4

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.9.11

4 release files

0.9.10

4 release files

0.9.9

4 release files

0.9.8

4 release files

0.9.7

3 release files

0.9.6

3 release files

0.9.5

4 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

3 release files

0.9.0

2 release files

0.8.2

3 release files

0.8.0

2 release files

0.7.9

2 release files

0.7.8

4 release files

0.7.7

1 release file

0.7.6

1 release file

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.12

2 release files

0.4.10

1 release file

0.4.9

1 release file

0.4.8

1 release file

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.24

2 release files

0.2.23

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.14

2 release files

0.2.12

2 release files

0.2.10

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.3

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page