Skip to content
Loom Documentation

Agency Accounts

An agency is a team whose children are client workspaces. One subscription, one credit pool, isolated projects.

How it resolves

Every client team has a billingRoot() — itself, or its parent agency. Credits, plan limits and features all resolve through it, so:

  • A client workspace inherits the agency's plan
  • Generations in a client workspace spend the agency's credits
  • The agency owner reaches every client without being enrolled as a member of each one

That last point is what makes the layer usable at scale. Managing fifty client workspaces through fifty membership rows is not a workflow.

Turning it on

Agency features are plan-gated (features.agency). With a qualifying plan:

Workspace → Enable agency features, then New client workspace per client.

If you supply a client contact email and that person already has an account, they get admin access to their own workspace and nothing else.

Roles

Role Can
Owner Everything, including billing and deletion
Admin Members, projects, domains, API keys
Member Create and edit projects, generate, publish
Viewer Read only

Billing always belongs to the paying team. A client workspace owner manages nothing financial — the agency does.

Limits

limits.sub_teams caps client workspaces per plan, on top of a hard ceiling in config('loom.teams.max_sub_teams_hard_cap') that protects the host regardless.