# Tenancy and identity

URL: /products/agent/tenancy-and-identity · Id: `page:products/agent/tenancy-and-identity`

> How each customer's agent stays inside that customer's records, name and accounts, and how a customer and a builder reach it.

Each customer's [Agent](/business/nouns/agent) lives in that customer's [Tenant](/business/nouns/tenant): its records, [Memory](/business/nouns/memory), accounts and approvals stay inside it. The [Startup](/business/nouns/startup) builds the agent; the [Customer](/business/nouns/customer) owns what it does.

## One Tenant, one agent
[`Tenant.provision`](/business/nouns/tenant/provision) creates the Tenant when the Customer accepts, and [`Agent.mint`](/business/nouns/agent/mint) creates the agent inside it. The agent addresses that Tenant's records and no others, so Harbor Residential's agent cannot list Riverside Property's leases.

| Belongs to the Tenant | Why it matters |
| --- | --- |
| Records the agent reads and writes | Another Customer's agent never sees them |
| Memory | What the agent learns about one portfolio stays with it |
| [Integrations](/business/nouns/integration) at Customer scope | The agent signs in to the Customer's own email and calendar |
| [Approvals](/business/nouns/approval) | The Customer's people answer them, never the Startup's |
| The [Mailbox](/business/nouns/mailbox) | Replies return to the same agent and the same Tenant |

[Onboarding a customer](/products/agent/onboarding-a-customer) walks the first hour of a new Tenant.

## Whose name it writes in
The agent writes in the Customer's name, from an address on the Startup's [Domain](/business/nouns/domain): `renewals@harbor.leaseline.app`. Its first message in each conversation says it is an AI agent and which business it acts for, worded per market by [AI disclosure](/systems/legal-and-corporate/floor/ai-disclosure).

The address is a Mailbox with its `tenant` set, so its history belongs to that Tenant and moves with no other Customer's mail.

## Whose accounts it uses
The agent reaches outside accounts through Integrations the Customer connects at its own scope. [`Integration.connect`](/business/nouns/integration/connect) asks the Customer's admin to approve each grant, and the token goes to [Secrets](/business/nouns/secret), where no [Worker](/business/nouns/worker) reads it.

The Customer's credentials never mix with the Startup's or with another Customer's. Revoking an Integration stops the agent's calls through it at once, and every record it brought in stays.

## Two planes
A customer and a builder reach the same agent through two different front doors.

| | As your customer | As the builder |
| --- | --- | --- |
| Host | `api.leaseline.app` | `api.sb/leaseline.app` |
| Package | `leaseline` | `startup-builder` |
| Key | `leaseline_sk_live_…`, issued in the [Portal](/business/nouns/portal) | The builder's own key |
| Reaches | One Tenant: its agent, [Tasks](/business/nouns/task), [Actions](/business/nouns/action) and Approvals | Every Tenant, the product, its [Offers](/business/nouns/offer) and [Versions](/business/nouns/version) |

A customer's code and agents never see [api.sb](/code/platform/api-sb) or the `startup-builder` package. [Your customers' API keys](/products/api/customer-keys) covers the customer's keys.

## Who answers for it
The Startup answers for the product: its [Role](/business/nouns/role), its eval cases and every Version. The Customer answers for what it points the agent at, within [acceptable use](/systems/trust-and-governance/acceptable-use). [Approvals per customer](/products/agent/approvals-per-customer) shows who says yes to what.