Repository navigation
[Feature]: Bring your own OIDC and environment directory to T3 Connect #16450
Replies: 2 comments 2 replies
|
yea a selfhosted own OIDC would be great |
|
We have a working fork with the same underlying requirement: keep the connection infrastructure fully self-hosted, without Tailscale, Cloudflare, or Clerk. We replaced the hosted identity integration with our own Better Auth/OAuth service and use PostgreSQL and an FRP-based relay/connector. The fork has corresponding authentication paths for web, desktop, mobile, and headless CLI hosts. Our goal is to reduce the fork and contribute generally useful changes upstream. We would maintain the replacement account/relay service ourselves. I read #6033 and Julius's response that a VPS relay deployment was not something you wanted to take on at that time. Would you consider a narrower scope: allow stock T3 clients to use an independently operated OAuth identity and compatible relay service, while keeping T3 Connect as the default and keeping the alternative service implementation outside this repository? The likely pieces would be:
This is about choosing an operator's service, not automatic failover between unrelated relays. We would preserve the existing scoped environment-session and DPoP model. Before preparing implementation PRs, could a maintainer clarify whether that direction is in scope, and which smallest slice you would be willing to review? If compatibility with external services is also out of scope, knowing that would help us avoid work you do not want to maintain. |
Uh oh!
There was an error while loading. Please reload this page.
Problem
I am building a Kubernetes orchestrator that starts an ephemeral T3 pod per
repository. I already have identity through Zitadel and connectivity through HTTPS
ingress and a VPN.
I would like to sign into the T3 iOS app with my own identity provider and see my
running environments, with authentication and discovery handled by infrastructure
I control. I am happy to authorize each new pod; the missing piece is linking those
environments to my own account system.
What already exists
each environment.
environment sessions. It can be self-hosted with Cloudflare and Clerk.
CliTokenManagerimplements OAuth device login and refresh. The sharedManagedRelaySessionaccepts an account ID and a token-reader callback.cloudflare_tunnelendpoints.Disabling managed tunnels creates a publish-only link, not an advertised ingress
endpoint.
Proposal
Add an optional self-hosted connection mode, with hosted T3 Connect remaining the
default:
sign-in and headless authorization where available.
to the authenticated account and brokers access using T3's existing session model.
tunnels.
select their own deployment.
Potential integration points:
apps/server/src/cloud/publicConfig.ts: CLI endpoints are derived from a Clerk key.CloudAuthProvider.tsx: mobile login uses Clerk; web and desktop have corresponding integrations.infra/relay/src/http/Api.ts: general authentication and the DPoP exchange both need configurable identity verification.EnvironmentConnector.ts: account-based connection currently requires a managed tunnel allocation.Why account-based discovery
Disposable environments come and go. An account-linked directory lets the phone
find current workspaces without maintaining a growing list of manual pairings.
The orchestrator already provides isolation and routing; each T3 environment remains
single-tenant.
Alternatives considered
retains the Clerk and Cloudflare integrations.
declined. Could narrower client/protocol extension points support an externally
maintained connection service instead?
My setup already isolates workspaces in separate pods.
Current workaround
Direct pairing over the VPN, or registering each pod through hosted T3 Connect.
Direct pairing covers connectivity; hosted Connect supplies the account directory.
Environment
Planned deployment: Kubernetes, one T3 server per ephemeral repo pod, Zitadel OIDC,
HTTPS ingress, VPN, and the T3 iOS/web clients.
All reactions