Skip to main content

Workspaces & Tenants

AppBlocks Cloud is built for one vendor serving many customers. You design the solution once, in a workspace. Each of your customers gets a tenant inside that workspace — a ready-made copy of everything you built, where all they have to do is plug in their own devices, fill in their own settings and invite their own people.

The two sides​

The vendor (your team)The tenant (your customer)
Works inThe workspace, with no tenant selectedTheir own tenant
BuildsThe application, dashboards, SCADA screens, workflowsNothing — the design is already there
DefinesWhich settings every customer must supply (tenant variable templates)The values of those settings (tenant variables)
OwnsWorkspace variables shared by everyone — API keys, endpointsTheir devices and device groups
InvitesEngineers and support staff into the workspaceTheir own staff into the tenant
SeesEvery tenantOnly their own devices, events, dashboards and SCADA screens

Put simply: the workspace is the product, a tenant is one installation of it.

How one design serves every tenant​

Nothing is copied when you create a tenant. Dashboards, SCADA screens and workflows exist once, at workspace level, and resolve to the right tenant at the moment they run:

  • Dashboards and SCADA screens run in the context of the tenant selected in the sidebar. Device and event queries return only that tenant's devices, and {{tenant.variables.KEY}} resolves to that tenant's value. Northside Bakery and Harbor Cold Storage open the same dashboard and each sees their own plant.
  • Workflows started by a tenant's device run with that tenant's variables, and their device blocks (Find Devices, device actions) reach only that tenant's devices. One alarm workflow covers every customer, and an event at one customer can never act on another customer's equipment.
  • Workspace variables ({{workspace.variables.KEY}}) are the same for every tenant.

So when you fix a dashboard or improve a workflow, every customer gets the change at once.

Outside tenant view

With no tenant selected, dashboards show only devices that belong to no tenant — handy for a test bench of your own devices. Workflows that a tenant's device did not start (a schedule, a manual run, a device with no tenant) get no tenant variables, and their device blocks reach every device in the workspace.

Setting up a customer​

The walkthrough below follows a vendor, Acme Machines, onboarding a bakery as a new customer. It assumes the application, dashboards and workflows are already built in the workspace.

Vendor: declare the per-customer settings​

Anything that differs between customers — a site name, who gets the alarm emails, a temperature limit — becomes a tenant variable template. Open Settings → Tenants and click Add Variable Template:

Adding the SITE_NAME tenant variable template

Each template has a key, a description the customer will read, and an optional default. Keys are sanitized on save: anything outside A-Z, a-z, 0-9 and _ is stripped. Reference the key in your dashboards and workflows as {{tenant.variables.SITE_NAME}} instead of typing a value.

Templates are declared once and apply to every tenant. Only the workspace owner and admins can edit them.

Vendor: create the tenant​

On the same page, click Create Tenant and name it after the customer:

Tenant Management with three variable templates and two tenants

Tenants can be created, renamed and deleted by the workspace owner, admins and operators.

Vendor: invite the customer​

Click Users next to the tenant, then Invite User. Enter the customer's email and pick a role — usually Admin for the person who will run the installation:

A pending tenant admin invitation for Northside Bakery

The invitation is emailed and is valid for 7 days. The link is also shown in the table, so you can copy it and send it yourself. Inviting the customer into the tenant only — never into the workspace — is what gives them their narrow, customer-facing view.

Customer: accept the invitation​

The customer opens the link and either creates an account or signs in with an existing one:

The Accept Invitation page for a tenant admin

Customer: fill in their settings​

On sign-in the customer lands directly in their tenant. Under Settings → Tenant Settings they see every key the vendor declared and fill in their own values:

Tenant Settings as seen by the customer's tenant admin

Note the sidebar: no Designer, no Workflows, no Data Sources, no workspace settings. The customer configures, they don't design.

Customer: add their devices​

Under Devices the tenant admin adds their own devices with + New Device, and can organise them into device groups running the vendor's application. They see only their own devices — the other customers' devices, and the vendor's own test devices, are invisible to them:

The Devices page showing only the customer's three devices

From here the vendor's dashboards, SCADA screens and workflows work for this customer with no further setup. The customer can invite their own staff from Settings → Tenant Settings, as tenant admins or read-only tenant members.

Personal space​

When no workspace is selected the switcher shows Default Workspace. This is not a real workspace — it is your personal space, and everything in it belongs to your account alone. It cannot be shared, has no members, no roles and no tenants.

Move to a workspace as soon as a second person needs access. Content is not transferred automatically between your personal space and a workspace, so it is worth choosing before you build much.

Workspaces​

What lives in a workspace​

  • Applications and project versions (firmware snapshots)
  • Devices and device groups
  • Dashboards, SCADA screens and data sources
  • Workflows and their runs
  • Workspace variables and tenant variable templates
  • Audit logs, invites and members

Creating and switching​

The workspace switcher sits at the top of the sidebar:

  • Create Workspace — name it and you become its owner
  • Switch Workspace — pick another workspace, or Default Workspace to return to your personal space

The selected workspace scopes the whole application. Devices, dashboards and workflows you see in the sidebar are the ones belonging to it.

Workspace settings​

With a workspace selected, the sidebar gains a Workspace Settings group:

PageContents
GeneralWorkspace name and logo, and the Danger Zone for deleting the workspace
MembersMembers and their roles, plus pending invitations — see Roles & Permissions
VariablesWorkspace variables
Import / ExportExport the workspace as a reusable bundle, or import one
Audit LogsWho did what, and when

Deleting a workspace requires typing its name to confirm, and removes every tenant, device, group, dashboard, SCADA screen, workflow, project, firmware and audit log inside it. There is no undo.

Tenants​

A tenant holds:

  • its devices and device groups
  • its variable values, one per tenant variable template
  • its users, each a tenant admin or tenant member

Everything else — applications, dashboards, SCADA screens, workflows — is shared from the workspace, as described in How one design serves every tenant. Tenants are managed under Settings → Tenants, available to the workspace owner, admins and operators.

Selecting a tenant​

Once a workspace has at least one tenant, a tenant switcher appears in the sidebar below the workspace switcher. Use Switch Tenant to scope the interface to one tenant and Exit Tenant View to return to the whole workspace:

The Switch Tenant dialog

Workspace owners, admins and operators can switch between every tenant. Everyone else is placed in their tenant automatically and cannot leave it.

Tenant assignment is set at creation

A device or device group is assigned to whichever tenant is selected at the moment you create it, and that assignment cannot be changed afterwards. Select the tenant before adding devices on a customer's behalf.

Variables​

Variables are what let one design serve many customers. Instead of hard-coding a broker address or a site name into a dashboard or workflow, you reference a variable and let the workspace or the tenant supply the value.

Defined byValue set bySame for every tenant?Reference
Workspace variableOwner / adminOwner / adminYes{{workspace.variables.KEY}}
Tenant variableOwner / admin, as a templateEach tenantNo{{tenant.variables.KEY}}

Workspace variables​

Workspace Settings → Variables. Use them for API keys, endpoints and configuration strings that are the same for every customer. Values are masked in the table and can be revealed individually. Reading them requires workspace membership; only the owner and admins can add, edit or remove them. When a workspace is exported, values are replaced with placeholders so secrets never travel inside a bundle.

Tenant variables​

Declared as templates under Settings → Tenants, filled in per tenant under Settings → Tenant Settings — see Setting up a customer. Tenant admins edit their own values, as can workspace owners, admins and operators.

Audit logs​

Workspace Settings → Audit Logs records who did what. Entries cover firmware assignments, variable writes, table changes, commands, group setting pushes and workflow changes, each with the acting user's email, the affected devices and a timestamp.

Scope follows the tenant switcher: with a tenant selected you see that tenant's entries, and without one you see the workspace entries that belong to no tenant. Audit logs are readable by the workspace owner and admins.

Exporting and importing a workspace​

Workspace Settings → Import / Export exports the workspace as a bundle — applications, firmware snapshots, dashboards, workflows and tenant variable templates, with variable values replaced by placeholders. A bundle can be imported as a new workspace, added as copies to an existing one, or used to update a workspace that was imported from an earlier bundle of the same source. That's how you keep a design workspace apart from production and ship releases between them — see Deploying to Many Sites.

An imported workspace records the bundle id and version it came from, shown at the top of the page.

Putting it together​

A typical machine builder ends up with:

  1. One workspace for the company, owned by the engineering lead.
  2. Engineers as members — they build the application, the dashboards and the workflows at workspace level, with no tenant selected.
  3. A support person as operator — they onboard each new customer as a tenant and install their devices, without being able to change the design.
  4. Tenant variable templates for anything that differs per customer — site name, contact email, thresholds.
  5. One tenant per customer, each with the customer's admin invited into the tenant only. They fill in their variables, add their devices and invite their staff — and see their own installation and nothing else.

See Also​