Tenants
Multi-tenant isolation and configuration
Tenants
A Tenant represents an organization using Agent Studio. All resources (agents, workflows, tools, calls) belong to exactly one tenant.
Tenant Model
class Tenant:
id: UUID
slug: str # URL-friendly identifier (e.g., "taphealth")
name: str # Display name (e.g., "Tap Health")
plan: TenantPlan # FREE, STARTER, PRO, ENTERPRISE
settings: dict # JSONB configuration
is_active: boolSettings Configuration
{
"webhook_url": "https://api.taphealth.com/webhooks",
"default_language": "en",
"supported_languages": ["en", "hi", "ta"],
"feature_flags": {
"async_feedback": true,
"cgm_support": false
},
"api_config": {
"base_url": "https://api.taphealth.com",
"timeout": 30,
"retry_count": 2
},
"endpoints": {
"meal.log": { "path": "/api/meals", "method": "POST" },
"user.profile": { "path": "/api/users/{user_id}", "method": "GET" }
}
}Key Settings
Endpoints
Named API endpoints that tools can reference. Keeps tool definitions portable.
Languages
Supported languages for the tenant. Agents can have language-specific prompts and voices.
Feature Flags
Enable/disable tenant-specific features.
API Config
Default configuration for external API calls.
Data Isolation
All tenant data is completely isolated:
- Agents, workflows, tools are scoped to tenant
- Provider keys (BYOK) are encrypted per-tenant
- Call history and transcripts are isolated
- API keys are tenant-specific
Hierarchy
TENANT
├── Provider Keys (BYOK)
├── Tools (reusable)
├── Agents
├── Workflows
├── API Keys
└── Calls (history)