OpenAPI SDK Strategy & Ownership
June 1, 2026 · View on GitHub
Purpose
This document outlines the long-term strategy, ownership, and maintenance plan for the ogx-open-client Python SDK.
Why Two Python SDKs?
OGX maintains two Python client SDKs with different generation approaches:
1. ogx_client (Official, Stainless-generated)
- Repository: https://github.com/ogx-ai/ogx-client-python
- Package:
ogx_clienton PyPI - Generated by: Stainless SDK generator
- Status: Primary/Recommended
2. ogx-open-client (Alternative, OpenAPI Generator)
- Repository: Distributed from main ogx repo
- Package:
ogx_open_clienton PyPI - Generated by: OpenAPI Generator
- Status: Alternative for OpenAPI tooling users
Strategic Rationale
Why maintain both?
-
Risk mitigation: Following Stainless's acquisition (May 2026), maintaining an OpenAPI Generator alternative provides:
- Independence from third-party tooling decisions
- Fallback option if Stainless changes direction
- Community control over SDK generation
-
Ecosystem compatibility: Some organizations have:
- Existing OpenAPI Generator toolchains
- Internal policies requiring OpenAPI-spec-driven clients
- Custom code generation workflows built on OpenAPI tools
-
Transparency: OpenAPI Generator is:
- Fully open source (Apache 2.0)
- Community-driven
- Widely adopted standard
When to Use Which SDK?
Use ogx_client (Stainless) if
- ✅ You want the officially supported SDK
- ✅ You prefer IDE autocomplete and type hints optimized by Stainless
- ✅ You don't have specific OpenAPI tooling requirements
Use ogx-open-client (OpenAPI Generator) if
- ✅ Your organization uses OpenAPI Generator for all SDKs
- ✅ You need full control over the generation toolchain
- ✅ You want SDK generation transparency and reproducibility
- ✅ You integrate with OpenAPI-spec-driven testing/mocking tools
Versioning Strategy
Version Alignment
- SDK versions track OGX server versions (semantic versioning)
- Example: Server v1.0.3 → SDK v1.0.3
- Pre-release versions use standard suffixes:
-rc1,-alpha.1,-beta.2
Release Process
- Automated: Tag push
openapi-sdk-v{VERSION}triggers publish - Stable releases (e.g., v1.0.0) → Published to TestPyPI initially
- Production PyPI → Manual workflow_dispatch with approval gate
- Pre-releases (e.g., v1.0.0-rc1) → Built for validation, not published
Breaking Changes
- Major version bumps (v1.x.x → v2.0.0) for breaking API changes
- Minor version bumps (v1.0.x → v1.1.0) for new features (backward compatible)
- Patch version bumps (v1.0.0 → v1.0.1) for bug fixes only
Ownership & Maintenance
Primary Maintainers
- Team: OGX Core Contributors
- Owner: Same governance as main OGX project
- Contact: contributors@ogx.dev
PyPI Package Ownership
- Package name:
ogx-open-client - PyPI Organization:
ogx-ai(if available) or individual maintainer accounts with 2FA - Trusted Publishing: Configured via GitHub Actions OIDC (no API keys in secrets)
Maintenance Commitment
- Status: Active - Maintained in parallel with official SDK
- CI/CD: Automated validation on every PR, automated publish on tags
- Updates: SDK regenerated when OpenAPI spec changes
- Support: Bug reports tracked in main ogx repo issues
Deprecation Policy
If this SDK is ever deprecated:
- 6 months notice minimum via GitHub discussions, blog post, and PyPI description
- Clear migration guide to official SDK
- Final LTS release with security updates only
- Archive notice on PyPI package page
Long-Term Vision
Current Status (2026)
- Both SDKs maintained actively
- OpenAPI Generator SDK provides strategic independence
- Users choose based on tooling preferences
Potential Future Scenarios
Scenario A: Stainless remains viable
- Continue dual-SDK approach indefinitely
- Both SDKs maintained, users choose based on needs
- No deprecation planned
Scenario B: Stainless becomes unavailable
ogx-open-clientbecomes primary SDK- Rename/promote to
ogx_client(v2.0.0) - Seamless transition for users
Scenario C: Community prefers OpenAPI
- Usage metrics drive decision
- Could promote OpenAPI SDK to primary over time
- Gradual transition with long deprecation period
Decision Criteria
Re-evaluate strategy annually based on:
- User adoption metrics (download counts, GitHub stars)
- Maintenance burden vs. value
- Stainless product direction and licensing
- Community feedback and feature requests
Incident Response
Rollback Plan
If a bad version is published to PyPI:
-
Yank the release (doesn't delete, marks as unavailable):
uv publish --yank ogx-open-client=={VERSION} -
Publish hotfix with patch version bump:
git tag openapi-sdk-v1.0.1 # Assuming bad version was 1.0.0 git push origin openapi-sdk-v1.0.1 -
Notify users:
- GitHub release notes with migration instructions
- Discord announcement in #announcements
- Update PyPI description with warning (if critical)
Breaking Change Released Accidentally
- Yank the breaking release immediately
- Publish non-breaking version as next patch
- Reserve the breaking changes for next major version
- Post-mortem in GitHub Discussions to prevent recurrence
Contact for Emergencies
- GitHub: @ogx-ai/core-team (mention in issue)
- Discord: #dev-chat channel for urgent issues
- Email: contributors@ogx.dev
Questions or Feedback?
- Open an issue: https://github.com/ogx-ai/ogx/issues
- Join Discord: https://discord.gg/ZAFjsrcw
- Email: contributors@ogx.dev
Last updated: 2026-05-31