Changelog
Release history for the cPod platform and SDK packages (@cpod/sdk, cpod-sdk, cpod-sdk-go, Cpod.SDK). Follows Semantic Versioning and Keep a Changelog.
Upgrade policy — No breaking changes before v2.0.0. Minor versions add new optional fields and endpoints. Patch versions are bug fixes only.
v0.9.0 — 2026-05-21
OAuth 2.0 app-store engine — register apps, issue JWTs, PKCE flows, rotating refresh tokens.
Added
Sidecar
- OAuth 2.0 engine —
POST /oauth/token,GET /oauth/authorize,POST /oauth/introspect,POST /oauth/revoke(served by Control Plane at:8080, proxied via cpod-backend) client_credentialsgrant — service-to-service token issuance (RS256 JWT, 1 h TTL)authorization_code + PKCEgrant — user-facing flows with S256 code challengerefresh_tokengrant — rotating refresh chain; old token revoked on each use- JWKS endpoint —
GET /api/v1/jwkson control plane for external JWT verification - Token event stream —
GET /api/v1/token-eventsfor issuance/revocation audit
Control Plane
POST /api/v1/apps— register an OAuth application; returnsclient_secret(argon2-hashed at rest, returned once)POST /api/v1/apps/:id/rotate-secret— secret rotation with immediate invalidation of old credentialsDELETE /api/v1/apps/:id— revokes all active tokens for the appPOST /api/v1/scopes— define custom scopes with resource namespacing- App types:
service(client_credentials),web(auth code),spa(PKCE, no secret),cli(device/PKCE)
SDKs
- Python (
cpod-sdk==0.9.0) —AsyncCpodClient.from_env(), full EDM domain access, typed Pydantic models - TypeScript (
@cpod/sdk@0.9.0) —SDK.fromEnv(), full EDM service wrappers, typed error classes - Go (
github.com/cpod-ai/cpod-sdk-go@v0.9.0) —cpod.FromEnv(), context-first API, functional options - .NET (
Cpod.SDK@0.9.0) —CpodClient.FromEnv(), async/await, strong typed models
v0.8.0 — 2026-04-10
SCIM 2.0 federation and hash-chained audit log.
Added
- SCIM 2.0 endpoints —
/scim/v2/Users,/scim/v2/Groupsfor Okta/Azure AD/Google Workspace federation AuditService.EmitAuditEvent— hash-chained audit records (sequence_id+previous_hash+record_hash)AuditService.QueryAudit— query audit events by tenant, actor, resource, time range- Webhook delivery — outbound audit events to registered HTTP endpoints (HMAC-SHA256 signed)
TenantService—ResolveTenant,ValidateIsolationgRPC RPCs- Per-tenant Rego policy isolation —
input.tenant_idnamespacing in the default bundle
Fixed
- Sidecar crash on malformed JWKS response from IdP — now logs warning and retains cached keys
- gRPC connection pool exhaustion under high concurrency — increased pool size and added backpressure
v0.7.0 — 2026-02-28
Job engine, secrets service, PII masking.
Added
JobService—SubmitJob,WatchJob(streaming),GetJobLogs,GetJobOutput,CancelJobSecretsService—ResolveSecretwith secret bundle + grant model; raw secret never loggedMaskingService—Mask(structured),MaskString— regex + NER-based PII detectionFlagService—EvaluateFlagwith tenant-scoped feature flagsRateLimitService— token-bucketCheckRateLimit,ResetRateLimitinline_filessupport on job submission — mount content directly into job containerssecret_bundleson jobs — inject resolved secrets as files in the job container
v0.6.0 — 2026-01-15
Initial public release — gRPC sidecar with AuthService and PolicyService.
Added
- CoreSDK Rust sidecar — gRPC on
:50051, health on:9091 AuthService—ValidateToken,Authorize,RevokeToken,GetJwksPolicyService—Evaluate,DryRun, OPA/Rego via regorus engine- JWKS validation — RS256, ES256, PS256; rejects
alg: none;ArcSwap<JwkCache>with 30 s background refresh CORESDK_ENV=developmentmode — disables JWT validation for local dev- mTLS support —
CORESDK_TLS_{CERT,KEY,CA}_FILE - Control Plane SQLite backend (default), Postgres and MongoDB options
- Default RBAC Rego bundle —
global_admin,tenant_admin,user,viewerroles
Upcoming v1.0.0 (planned 2026-Q3)
- SAML SSO —
ValidateSAMLAssertiongRPC RPC for enterprise IdP integration - Impersonation tokens — time-limited admin impersonation with full audit trail
- Quota service — per-tenant resource quotas with
QuotaService.CheckEntitlement - OTel traces — every gRPC call produces an OTLP trace span; export to Jaeger, Tempo, or any collector
- License entitlements —
LicenseService.CheckEntitlementfor feature gating by plan