Each end user has their own layer
Inside one project, shared pieces stay at the project layer — including API keys, auth configs, toolkits / tools (catalog + custom project tools), and MCP servers. Everything personal sits under an external user:Examples
Example 1 — SaaS: each customer builds in their own layer
You ship a product where every customer should have their own support agent, their own docs, and their own Slack.1
One project
Create a project, for example Acme Support. Configure Slack auth config once at project level.
2
Add end users
Add end user →
customer_alice, then customer_bob (or create them automatically when they first connect via your app with x-username).3
Build Alice’s layer
Switch End user to customer_alice. Connect Alice’s Slack. Ingest Alice’s FAQ into Knowledge. Create agent Alice Support, attach that knowledge and Slack tools, save, test in Chat.
4
Build Bob’s layer
Switch to customer_bob. Connect Bob’s Slack (different workspace). Create Bob Ops with Bob’s knowledge and tables. Alice’s agent and docs do not appear in this list.
5
Run from your backend
Your API always sends
x-api-key for the project plus x-username: customer_alice or customer_bob. Each customer only ever uses their own connections and data. See Multi-tenant basics.Example 2 — You test “as the customer” in the dashboard
You are developing; you want to see exactly what customershop_42 sees.
1
Create or pick the end user
Add end user with label
shop_42 (same string you will use as x-username).2
Switch to them
End user switcher → shop_42.
3
Build in their layer
Create an agent, connect Gmail/Slack for that shop, add a Knowledge collection with their policies, attach under Data access, chat to verify.
4
Switch back
Select Default user (or another username) when you return to your own experiments. Lists change with the switcher — that is expected.
Example 3 — Agency: one project, many client layers
An agency keeps one Flowra project per practice area, and one end user per client.
Switch End user before you edit a client’s agent or connect their OAuth. Never connect Contoso’s Slack while
client_northwind is selected.
Example 4 — Channel or widget creates the layer for you
You do not always pre-create usernames.- Attach a messaging channel or widget to an agent.
- Someone messages Telegram / visits the embed.
- Flowra creates an external user (source Channel or Widget).
- That person’s threads (and later connections/data you add under them) stay in their layer.
Example 5 — Same tools, different data (support vs ops)
Project shares the Gmail/Slack auth configs. Two end users:role_support— agent with Knowledge = refund policy; table = ticketsrole_ops— agent with Knowledge = runbooks; table = incidents
Where to find it
In the sidebar, under the project switcher, open End user. Search, pick Default user, pick another row, or Add end user. Full list and management: External Users (resource usage per user when the UI shows it).Default user vs named users
When you switch, Chat threads reload, and Workflows / Connection / Knowledge / Database follow that user’s scope. If something “disappears,” check project and end user.
How users get into the list
Allowed characters for manual labels: English letters, numbers, and
. _ @ - (no spaces or emoji). Use the same label as x-username on the API.
Practical tips
- Build agents and connect OAuth while the correct end user is selected.
- Each end user can have their own agents with their own Knowledge/Tables — that is the point of the layer.
- Deactivated users cannot stay selected; the UI falls back to default. The project default user cannot be deactivated.
- Deep API rules: Multi-tenancy. Hands-on API: Multi-tenant basics.
Related
- Nested project vs end-user map: Projects and API keys
- Toolkits and tools · Skills
- Workflows in the dashboard
- Knowledge · Database
- Connections
- Entry points and channels