Shuttle Docs

Application configuration

The verified bootstrap helper and what does not exist.

GroupIntegration application and SDK bootstrap
RuntimesTypeScript browser/server, React client adapter, Python/Go server
Updated2026-09-15

Status and source truth

Proposed configuration boundary based on the verified current SDK review. The inspected SDK client does not expose generic createApplication, getApplication, getApplications, updateApplication or deleteApplication methods. It also does not expose getWalletKitConfig. Those methods are therefore not invented here.

The source does expose getProxyAuthConfig in the browser authentication support layer. It reads public authentication configuration used by the configured login flows. It is a support read, not an application resource or permission grant.

The similarly named workload/deployment application APIs found in the upstream client manage hosted compute artifacts. They are unrelated to an integrator's SDK application and are intentionally excluded.

Entity meaning#

An integration application assembles clients/adapters for one product surface, points at an authorized backend and selects public authentication presentation. It does not become an embedded-wallet owner. A server-wallet service identity is separately configured, auditable and limited; it is never inferred from the application label or an end-user session.

Concept Owns Does not own
Application configuration public client options, backend/proxy location, enabled login presentation, redirect/origin settings, UI labels users, wallet keys, policies, approvals, transaction state
Organization users, wallet/policy scope, root approval configuration and administration browser UI configuration or server deployment
User identity factors and organization membership application secrets or organization-wide authority

This distinction prevents a dashboard label named “application” from being mistaken for an SDK resource with unsupported CRUD.

Bootstrap surfaces#

TypeScript browser core and React#

Browser bootstrap accepts only public values required to reach the application's own backend/auth proxy and initialize the UI adapter. Exact option names remain an implementation contract, but the boundary is fixed:

React provides a client-component context/provider around the same TypeScript client. It does not duplicate business methods or run during server rendering. The provider may call getProxyAuthConfig to obtain public authentication choices; unavailable configuration fails explicitly and cannot fall back to a broader login or wallet permission.

TypeScript, Python and Go servers#

Server construction supplies organization context and authorized server/service credentials through approved server-side custody. Python and Go remain server bindings. No server credential, event-verification secret, signing secret, session secret or provider client secret is serialized into browser configuration.

Verified method and explicit absences#

Surface Status Meaning
getProxyAuthConfig verified supporting browser/core helper reads public authentication configuration; read-only and non-authorizing
client constructor/provider configuration verified SDK pattern assembles a runtime client; it does not create a backend application record
getWalletKitConfig absent from the inspected current source not part of this proposed surface
application CRUD absent from the inspected current source no generic application resource is promised

Organization OAuth client credentials are configuration-adjacent but are not application records. Their secure-backend get/list/create/update/delete contract is defined once in Frontend authentication and referenced from Organizations. No application CRUD or browser secret-provisioning method is inferred from those admin methods.

TypeScript browser TypeScript server React adapter Python server Go server
Public bootstrap and getProxyAuthConfig only Proposed client construction and secure admin wiring Client provider over the same public values Proposed server client construction Proposed server client construction
const authConfig = await browserCore.getProxyAuthConfig();
const server = createServerClient({ endpoint, organizationId, credential: serverCredential });

Constructor names are schematic target shapes, not installable packages. The public browser path never accepts serverCredential.

Failure and security behavior#

Configuration is versioned and validated before use. Missing endpoint, incompatible auth configuration, wrong organization context, disallowed origin, unavailable proxy or stale configuration produces a typed non-success and no user, session, wallet or policy effect. Public configuration never proves authorization. The backend rechecks the authenticated actor, organization, wallet access, policy and action-bound approval at each protected boundary.

Changing application presentation cannot enable a disabled authentication factor, weaken an organization policy, make a server-only method browser-safe or convert login into transaction consent. Cache use, if later accepted, must be bounded and tied to a configuration version and expiry.

Acceptance#

See Frontend authentication, Users, and Organizations.