Sharing & roles
Every app is private until its owner explicitly shares it — and sharing is always revocable.
How does sign-in work without passwords?
Smallcloud uses single-use magic links. A visitor enters their email at the sign-in wall; a link is issued — emailed when the operator has configured an email provider (Resend), otherwise printed to the server log / CLI; opening it once sets a 30-day session cookie. Tokens live 15 minutes, work exactly once, and only their hashes are ever stored.
How do I give someone access to an app?
smallcloud share notes # viewer (read-only) link
smallcloud share notes --role editor # full-access link
Send the printed link. The recipient signs in first, then opens it — from that point the app URL simply works for them.
What can each role do?
- Owner (the deployer): every HTTP method, plus share/unshare/delete via the CLI.
- Editor: every HTTP method on the app.
- Viewer: read-only — GET, HEAD, OPTIONS. Writes get a 403.
- No role: a 403 page suggesting they ask the owner for a link. Signed-in ≠ authorized.
Redeeming a newer link upgrades a role in place. Revoke anytime:
smallcloud unshare notes <their-email>
The workspace directory
Every team member sees all apps — owner, status, last-used, and their own role — at https://sc-home.<your-domain>. Apps they can open are links; the rest say "no access".
Signing out
/_sc/logout on any app host kills the session server-side and clears the cookie. Sign-ins, share redemptions, revocations, and logouts all land in the audit trail.