Every flow has its own access: an owner, the people it's shared with, and a general access for everyone else. Your role on a flow decides what you can do with it in the Studio. Open it from the editor's Share button.
Roles on a flow
| Role | Can |
|---|---|
| Viewer | Open it live (read only), see versions and tests, star it, copy it to another workspace (when the owner allows) |
| Commenter | Everything a viewer can, plus comments and suggestions |
| Editor | Change it, test runs and runs, the agent, tests, open its browsers; share it and publish it when the owner allows |
| Owner | Everything: its settings, sharing settings, transferring ownership, moving it to another workspace, deleting it |
Your role is the best of:
- Owner: you own the flow, or you're the workspace's Owner or Admin (they manage every flow).
- Your own entry: shared with your account, or with your email before you had an account. An entry can expire; after that it no longer counts.
- General access:
- Restricted: only the people on it.
- Anyone in the workspace: every member, not guests, with the role you pick.
- Anyone with the link: anyone who signs in and opens the link (they join the workspace as a guest), with the role you pick. Only when the workspace allows links (Settings › Sharing).
New flows start as Anyone in the workspace · Viewer, owned by whoever made them.
The share dialog
- Add people or emails: workspace members are suggested; type an email for anyone else. Pick a role, then Send (with Notify people on, they get an email and a bell with your message) or Share (no message).
- Someone outside the workspace joins it as a Guest. It needs the workspace to allow guests (Settings › Sharing) and a plan with collaboration.
- An email without an account shows as Pending. It becomes theirs when they sign up and open the link.
- People with access: change a role, Set expiration (1, 7 or 30 days, or none), Transfer ownership (owner only, to a workspace member who isn't a guest; you stay on it as an editor), Remove access.
- Requests: people who asked for access, with their message and the role they want. Approve (someone outside the workspace joins as a guest) or Deny; they get a bell either way.
- General access: scope and role (see above).
- Gear (owner only):
- Editors can change permissions and share.
- Editors can publish.
- Viewers and commenters can copy it to another workspace.
- Copy link:
/share/flow/<id>.
Who may share (add people, change entries, general access, answer requests): the owner, and editors when the first gear setting is on.
The flow's link
/share/flow/<id> opens the flow for anyone who may:
- Signed out: "Sign in to open …", then back here.
- With access: straight into the Studio.
- Invited by email before having an account, or link open to anyone: joins the workspace as a guest first, then into the Studio.
- Without access (or when their entry expired: "Your access ended on …"): the request page, with a message box and the role they want. The owner (and editors, when they may share) get a bell and an email (once a day per person); the email's button opens the flow with the share dialog (
?share=1). - Deleted: "This flow was deleted".
Opening a flow's Studio page without access sends you to its link, so the request page is the same everywhere.
The flow list
Studio shows only the flows you can open, with All, Owned by me, Shared with me and Favorites. Each row says who edited it last ("Edited by Ayu, 5 minutes ago") and shows avatars of who has it open right now. Sharing changes don't count as edits. Guests don't get New flow, export or import.
How it works
Flow.access(TAccessinsrc/types/lib/access):owner { userId },member [{ userId | email, role, expiresAt, invitedBy }],general { scope, role },setting { editor { isShare, isPublish }, viewer { isCopy } }. The same type is meant for campaigns when they become shareable.flowRole(src/lib/flow/access) works out someone's role;flowAccess(src/controllers/flow/access) is the Studio's check for one flow: in the workspace (guests too), the flow is there, the role is at least the one an action needs (NOT_FOUND,NO_ACCESS,ROLE). Every Studio action on one flow uses it, including the live document's ticket (editors get write access) and the agent's stream.- Workspace pickers the editor needs (node catalog, datasets, callable flows) ask only for a seat in the workspace, so guests can use the editor; datasets stay limited to what each person may use.
- API keys keep the workspace permission table (they act for the workspace, not a person on a flow).
- Share actions:
src/actions/app/[workspace]/studio/share(aStudioShareGet,Invite,Member,General,Transfer,Decide). The request page's action isaShareFlowRequest(src/actions/(public)/share/flow); requests areAccessRequestdocuments (target { kind: "flow", id }, message, role, status), answered ones removed after 90 days. - Messages:
flow.share(email, WhatsApp) andflow.access.request(email); bells go straight to the person. - Audit:
flow.share,flow.share.change,flow.share.remove,flow.share.general,flow.share.transfer,flow.share.request.approve|deny.
Not built yet
- Seats for guest editors (the plan says guest editors take a seat; today guests never do).
FAQ
Who can see my flow?
By default everyone in the workspace, as viewers (guests excluded). Set General access to Restricted to keep it to the people you add. Workspace Owners and Admins can always open every flow.
Can I share a flow with someone outside my workspace?
Yes, when the workspace allows guests and its plan includes collaboration. They join as a Guest and see only the flows shared with them.
What happens when access expires?
Their entry stops counting at that time. If nothing else gives them a role, the link shows "Your access ended on …" with a way to ask again.
Can an editor delete or move my flow?
No. Deleting, moving to another workspace, the flow's settings and the sharing settings stay with the owner.