Stream Kit account
Create and manage your Stream Kit account in the desktop app.
Stream Kit account
Stream Kit accounts are optional. You can use the app without signing in. An account lets you manage a profile (name, email, avatar) and enables cloud features that require identity.
Sign in or create an account
- Click Log in in the top-right of the app header.
- Enter your email and password, or choose Create account.
- Use Forgot password? on the login form to request a reset email.
- After you sign in, the header shows your avatar. Open the menu for Profile or Log out.
Profile
Open Profile from the avatar menu to update:
- Avatar image (JPEG, PNG, WebP, or GIF up to 5 MB; you can also remove it)
- Display name
- Email (sends a confirmation link to the new address; your login email updates after you confirm)
- Password (current password required; you stay signed in on this device)
- Account deletion (confirm with your password; permanently removes your profile and cloud data)
If your email is not verified yet, the profile page shows an Unverified badge and a Resend verification email button. Verification is informational only and does not block app features.
If your account has an active plan, your avatar shows a primary ring (header and profile) and the plan appears in a Subscription card on the profile page. You can cancel an active plan from that card. After cancellation, cloud features stay available for 30 days (grace period); the profile shows the end date. When the grace period ends, the plan no longer unlocks cloud access.
Active (or grace-period) plans also unlock cloud files (user_files): upload or browse media from handler file fields (for example Play audio file) and rankings icons. Without sign-in or an entitled plan, those fields use local Browse only; Upload and Cloud appear once cloud access is unlocked. Manage stored files from the Cloud files section on Profile (list, quota bar, optional Keep cloud files offline, Open offline folder, delete). Each plan defines a max file size and total storage quota. Stored values are host-independent paths such as /api/files/...; the UI and runtime resolve them against the current PUBLIC_POCKETBASE_URL. When Keep cloud files offline is enabled on a PC, Stream Kit mirrors the library into a per-account folder under local AppData (with a gray progress toast showing how many files are synced), file fields show the local cache path when available (including after you sign out on that PC), and playback (audio, OBS media, icons) prefers filesystem paths (falling back to authenticated cloud URLs if a file is not cached yet or download fails while signed in), while actions keep syncing cloud refs across machines. Absolute PocketBase URLs from older builds are normalized to relative paths on load when a plan is active.
When a plan becomes active, Stream Kit automatically uploads existing local files from cloud-capable action handler fields in the background. Prefer cloud file refs (/api/files/...) so media works on every PC. Local paths keep working for playback until they are migrated.
Active (or grace-period) plans also enable cloud sync for your Stream Kit setup: your local SQLite database stays the offline runtime store, and changes sync to PocketBase while you are signed in with an entitled plan. Conflicts use last-write-wins on a monotone revision per record. Sync retries automatically when you come back online. Open Profile to see sync status or tap Sync now. See Using multiple PCs.
What syncs (Pro): actions and queues; plugin domain data (bot, rankings, quotes, variables, collections, websocket connection metadata); account-scoped plugin settings; overlay projects (metadata + source zip); dashboard layout; installed zip-plugin catalog (restored via manifest URL when available).
What stays on each PC: Twitch/YouTube OAuth tokens, Discord bot token, OBS host/port/password, TTS API keys, and other device-local settings (API server bind/port, developer modes, local TTS voice ids).
Active plans also unlock cloud overlays: built overlays publish to the cloud automatically and show a public browser-source URL on the site (/app/overlays/{id}/) on the overlays list and configure page. Live events still require the desktop app online. You can unpublish an overlay from its configure page if you do not want a public URL. Authoring projects themselves also sync for Pro accounts (see multi-PC guide).
Developers / local setup
The desktop app talks to PocketBase using PUBLIC_POCKETBASE_URL from $env/static/public (baked in at build time). Cloud overlays also need PUBLIC_SITE_URL (the marketing site origin).
Root pnpm dev bootstraps this automatically:
- Creates
packages/app/.envandsite/.envfrom their.env.examplefiles when missing - Starts PocketBase on
http://127.0.0.1:8090(localhost only) with a local superuser ([email protected]/stream-kit-devby default — override withPOCKETBASE_ADMIN_EMAIL/POCKETBASE_ADMIN_PASSWORD) - Seeds a
proplan if missing and grants active memberships to users without an entitled plan (SK_DEV_SEED=planfor plan only,SK_DEV_SEED=0to skip)
Dev seed and the PocketBase task refuse non-localhost PUBLIC_POCKETBASE_URL values so a remote/production instance cannot be seeded by accident.
Example app env (local .env):
PUBLIC_POCKETBASE_URL=http://127.0.0.1:8090
PUBLIC_SITE_URL=http://localhost:5173Release / tauri build uses committed packages/app/.env.production (https://api.stream-kit.app and https://stream-kit.app), which overrides localhost values from .env. The Vite production build fails if those URLs are wrong.
Plugins can read the signed-in public profile and call login/logout via app.auth — see Plugin Authoring API. Subscription objects may include optional endsAt during the post-cancel grace period.