Workspaces and roles
How workspaces let a team share materials and runs, what each role can do, and how invites work.
Two engineers in the same group should not each rebuild the same trial chemistry, and a project lead should be able to read a colleague's run without asking for a screenshot. A workspace is how Phases scopes that: it owns the materials, the conversations, the runs and the artifacts created inside it, and it decides who may write.
The two kinds of workspace#
You get a personal workspace automatically. It is created the first time you
sign in, named My Workspace, with a slug derived from the local part of your
email address, and you are its admin. Each user has exactly one, and it cannot
be deleted — its contents are removed through ordinary chat and run cleanup, not
by removing the workspace itself.
An organization workspace is one you create for a team. In the product it is
a modal titled Create a new workspace with two fields, Workspace name and
URL slug (auto-derived from the name, editable). Creating it lands you at
/ws/<slug>, and chats inside it live at /ws/<slug>/chat/<id>.
Only organization workspaces have members, invites and a Members tab. A personal workspace has none of that by design.
Roles#
There are exactly three roles, ordered viewer < member < admin.
| Capability | Viewer | Member | Admin |
|---|---|---|---|
| Read existing workspace chats, runs, materials and flags | Yes | Yes | Yes |
| Submit a chat turn (web or MCP) | No | Yes | Yes |
| Run simulations and publish run artifacts | No | Yes | Yes |
| Create or update workspace materials | No | Yes | Yes |
| Delete an owned workspace-scoped session or run | No | Yes | Yes |
| Delete materials | No | No | Yes |
| Manage members, invites, settings and workspace flags | No | No | Yes |
| Delete the organization workspace | No | No | Owner only |
A viewer is genuinely read-only, and the refusals are explicit rather than
silent. Asking a simulation tool to run returns This workspace role cannot run simulations. Ask a workspace admin for member access. Saving a material returns
Saving workspace materials requires a workspace member or admin role.
Submitting a chat turn is rejected with Workspace viewer access is read-only.
The database repeats the writer check at commit time, so a request that was
authorized just before a demotion cannot slip through afterwards.
Two guards protect the owner. The workspace owner cannot leave their own
workspace — the attempt returns The workspace owner cannot leave. Transfer ownership or delete the workspace. — and an admin cannot remove the owner
(Cannot remove the workspace owner) or demote the last remaining admin.
Inviting people#
Invites are email-based and admin-only, and they exist only for organization workspaces. Inviting into a personal workspace is refused.
From Settings → Members, the Invite Member form takes an email address and a role (admin, member or viewer) and sends the invite. Pending invites are listed below the member table with their email, role and a revoke action.
An invite expires after 7 days. The recipient gets an email with the subject
You're invited to join <workspace> on Phases Copilot and a link to
/invite/<invite-id>, which shows You're invited with the workspace name and
an Accept Invite button; an expired link instead tells the recipient to ask
the workspace owner for a new one. If the deployment has no mail provider
configured, the invite row is still created — the email is not sent, so
you can pass the link along yourself.
Acceptance is strict, and this is a feature rather than an obstacle: the signed-in user's own confirmed email address must match the invited address. A different account, an unverified email, an expired invite or a second attempt at an already-consumed invite all fail closed. The public preview of an invite exposes only the workspace name and slug, the role and the expiry — never who was invited or who invited them.
If someone signs in for the first time with an invited address, the invite is processed as part of their first login, so they land in the workspace without having to find the email again.
Shared materials#
The most useful thing a workspace holds is its material library. A chemistry saved to the workspace is available to every member, in every chat, in the material dropdown of every configuration card under a Workspace Materials group — see Workspace materials and Your own chemistry.
The Materials workbench at /ws/<slug>/materials is headed Materials with
the subtitle Choose an alloy type, family and grade to view its composition and
diagrams, and has three scopes: Material, Compare and Family / Group
data. Admins and members also get a + New material button; viewers do not.
Built-in catalog grades stay read-only for everyone. To change one you clone it into a workspace material first — the built-in composition grid is disabled and the header action reads Clone to edit. Material catalog covers what is in the catalog and Compare two grades shows the comparison flow.
Saving a material whose chemistry is identical to its base grade is refused, so the library holds real recipes rather than renamed built-ins.
Settings#
Workspace settings sit at /ws/<slug>/settings, with a Back to chat link
and up to four tabs:
- General — everyone
- Members — organization admins only
- Usage — everyone
- Feature Flags — organization admins only
Feature flags#
An organization admin can turn capabilities on or off for the whole workspace:
simulator.phases (Heat Treatment / Phases), simulator.cct (CCT Diagrams),
simulator.rsw (Resistance Spot Welding), simulator.vgleeble (Virtual
Gleeble), feature.material_kb (Material Knowledge Base), feature.flow_stress
(Flow Stress), feature.team_collab (Team Collaboration) and feature.invites
(Workspace Invites).
All four simulators and the material knowledge base are seeded enabled for every workspace type; team collaboration and invites are seeded on for organization workspaces. Flag resolution is fail-closed — a locked platform default wins over any workspace override, and an unknown flag resolves to disabled.
When a simulator is disabled, it disappears from the simulator tab strip and its in-chat configuration card is replaced by a notice telling you it is disabled for this workspace and to ask your admin. The agent behaves the same way: it acknowledges the capability exists and points at the workspace admin instead of pretending the request is impossible.
Usage#
The Usage page shows three meters — Simulation runs, Messages and
Storage. Simulation runs and Storage are measured against the
limits.max_runs_per_month and limits.storage_mb flags; Messages is a plain
count with no limit attached. The seeded defaults are 100 runs and 500 MB for a
personal workspace and 500 runs and 5000 MB for an organization workspace.
Treat these as informational. They are displayed counters; hard enforcement and a monthly reset are documented as future work, not as a guarantee you can plan capacity around.
What a workspace does not change#
Membership decides who may write, not what the physics will do. The material rules, the confirmation gate on custom chemistry, the 20-grade RSW coverage and the V-Gleeble table requirements apply identically in every workspace — see Known limits and Capability matrix. Runs created in a workspace are stored and versioned exactly as described in Sessions, runs and artifacts.
