Web OAuth SSO
Add "Sign in with Flowsta" to your web app. OAuth 2.0 + PKCE, no client secrets, pre-built login buttons for React, Vue, Qwik, and vanilla JS.
Auth Guide
OAuth SSO for web apps. Identity linking for desktop apps. Holochain-powered zero-knowledge privacy.
Choose the approach that fits your application:
Add "Sign in with Flowsta" with the @flowsta/auth SDK:
import { FlowstaAuth } from '@flowsta/auth';
const auth = new FlowstaAuth({
clientId: 'your_client_id',
redirectUri: 'https://yourapp.com/auth/callback'
});
auth.login(); // Redirects to login.flowsta.com
const user = await auth.handleCallback();
console.log('Welcome,', user.displayName);Link your app's agent key with the user's Flowsta Vault identity:
import { linkFlowstaIdentity } from '@flowsta/holochain';
const result = await linkFlowstaIdentity({
appName: 'YourApp',
clientId: 'your_client_id',
localAgentPubKey: myAgentKey,
});
// Commit attestation to your DHT
await appWebsocket.callZome({
role_name: 'my-role',
zome_name: 'agent_linking',
fn_name: 'create_direct_link',
payload: {
other_agent: decodeHashFromBase64(result.payload.vaultAgentPubKey),
other_signature: base64ToSignature(result.payload.vaultSignature),
},
});Manage Flowsta Vault identity in Tauri desktop apps:
import { FlowstaVaultAuth } from '@flowsta/auth-tauri';
const vault = new FlowstaVaultAuth();
const status = await vault.getStatus();
if (status.unlocked) {
const identity = await vault.getIdentity();
console.log('DID:', identity.did);
console.log('Agent key:', identity.agentPubKey);
}Traditional authentication services store user data in centralized databases - single points of failure vulnerable to breaches, censorship, and vendor lock-in.
Flowsta Auth is different: