Apps
Control who can use your app
To control who can use your app in Claude, ChatGPT or another AI client, set its audience. Bonnard refuses a connection from anyone outside it, whichever AI client they use.
You choose the audience when you create an app, and change it on the app’s Overview tab.
Audience options
| Audience | Who can connect |
|---|---|
| Internal | Members of your workspace, whatever their role, signed in with their Bonnard account. No customer can. |
| All customers | Users of every customer on the Customers page, including customers you add later. |
| Specific customers | Users of the customers you select. A customer you add later is left out until you select it. |
New apps on a No tenancy database start on Internal, so you can try one before any customer sees it.
On the production URL, members of your workspace sign in to Internal apps only. They test the others on the staging URL. An admin’s personal API key also works on an All customers app on a No tenancy database.
On a database with tenancy, each customer also needs a tenant (the value that marks its data in your database), set as its Tenant binding on Customers. Without one, its users get no data. The Audience card warns when a customer in the audience has none.
Change the audience
- In the console at
app.bonnard.ai, open Apps, then your app. - On the Overview tab, choose an option in the Audience card.
- For Specific customers, select each customer under Customers. Select all picks every current customer, and Clear empties the list.
- Select Save audience.
The change reaches both URLs at once, published or not. Anyone it leaves out is refused from their next call.
With no customers yet, the card shows No customers yet and an Add customer button.
Which audiences each database allows
The database’s tenancy decides which options the Audience card offers.
| Database tenancy | Audiences offered | New apps start on |
|---|---|---|
| No tenancy, any engine | Internal, All customers, Specific customers | Internal |
| Multi-tenant (RLS): PostgreSQL, Redshift, SQL Server | All customers, Specific customers | All customers |
| Schema per tenant: PostgreSQL, Redshift. Database per tenant: ClickHouse, DuckDB / MotherDuck, MySQL / MariaDB, SQL Server | All customers | All customers |
| Dataset per tenant: BigQuery | Customer access, set per customer | Customer access |
| PostHog | Internal | Internal |
On a database with tenancy, every query runs as one customer, so Internal is not offered. Where one option is left, the audience is locked to it.
BigQuery with Dataset per tenant
Here a customer gets data only once you map it to a dataset. In the Audience card, under Per-customer dataset mapping:
- Select + Add customer and pick a customer with a tenant binding.
- Enter its dataset and service account, then select Save audience.
- Select Check credentials to test the saved service accounts.
Import mappings CSV saves many rows at once and checks them. Bonnard publishes the app only once at least one customer is mapped. Setting up the datasets: BigQuery.
When someone is not in the audience
The app refuses the connection with This MCP server is not available to you. Ask the server owner to add you to its audience.
Each refusal shows as a denied call in Observability.
The App access column on Customers lists the published apps whose audience includes each customer.
Related
- Install in AI clients: add an app to Claude, ChatGPT or another client.
- Publish and staging: the two URLs, and who can use each.