Skip to content

Admin — Settings

The Settings page is the canonical read-out of the tenant’s configuration and the underlying deployment. Most of it is read-only — configuration lives in Terraform and the admin app reflects what’s actually deployed, rather than offering a separate configuration store that could drift from the real state.

Route: /settings
File: apps/admin/src/routes/_authed/_tenant/settings.tsx

The page is a stack of four cards: Organization, Configuration, Deployment, and Resources & URLs.

FieldNotes
NameTenant display name
SlugURL-safe identifier
PlanSubscription tier (if applicable)
Issue prefixPrefix for tenant-scoped sequential ids
Issue counterMonotonic counter used for thread numbers and similar sequential ids
Created atWhen the tenant was first provisioned

All of these are read-only. Renaming a tenant or changing its slug is a Terraform + CLI operation, not a UI operation.

This section is conditional — it only renders if the tenant row’s settings field is populated. When present, it carries tenant-wide defaults:

FieldNotes
Default modelFalls back to this when an agent template doesn’t specify its own
Monthly budgetTenant-wide spend cap for month-to-date
Auto-close threadsAfter N minutes of inactivity, threads auto-close (prevents forever-open threads from accumulating)
Max agentsHard cap on the number of agents the tenant can have
Feature flagsJSON object with any tenant-level feature flags (e.g. enable_hindsight, enable_voice_dictation)

Like Organization, this is read-only. Changes go through Terraform.

The Deployment card is where operators check “what’s actually deployed and is it healthy?”

FieldNotes
Stagedev, staging, or prod
SourceTerraform module version or internal deployment marker
RegionAWS region
Account IDAWS account id
AgentCore statusManaged / Disabled / Self-hosted — with a status badge
Managed memoryEnabled / Disabled
HindsightEnabled / Disabled — the optional long-term memory add-on

The last card is a list of copyable rows for the infrastructure endpoints the operator uses day-to-day:

  • S3 bucket — tenant’s primary bucket (skill catalog, knowledge sources, audit log)
  • Database endpoint — Aurora cluster endpoint
  • ECR URL — Elastic Container Registry where the agent container image lives
  • Admin URL — the admin app itself (self-link, useful for sharing)
  • Docs URL — this docs site
  • API endpoint — the HTTP GraphQL / REST endpoint
  • AppSync URL — the HTTPS AppSync endpoint for GraphQL mutations
  • WebSocket URL — the AppSync realtime URL for subscriptions
  • Hindsight endpoint — only shown when Hindsight is enabled

Every row has a copy button that yanks the value to the clipboard. The rows are not secret values; they’re resource identifiers the operator regularly pastes into CLI tools, AWS consoles, or downstream configuration.

QueryPurpose
TenantDetailQuery($id)Tenant identity + settings
DeploymentStatusQueryDeployment metadata and service health

Both queries run on page mount and are cached by urql. Refreshing the page re-fetches.

  • tenants — Aurora table with name, slug, plan, issue prefix, issue counter, created at
  • tenant_settings — related table with default model, budget, auto-close, max agents, feature flags
  • deployment_metadata — cached or dynamically computed view of the CloudFormation stack exports
FieldEditable in admin?
Tenant nameNo — Terraform
SlugNo — Terraform
PlanNo — billing system
Issue counterNo — backend-managed
Default modelNo — Terraform or tenant-config API
Monthly budgetNo — Terraform
Auto-close threadsNo — Terraform
Max agentsNo — Terraform
Feature flagsNo — Terraform
Deployment stage / regionNo — Terraform + redeploy
Resource URLsNo — derived from deployment

The deliberately heavy use of “No — Terraform” is the design philosophy: tenant configuration is code, code is reviewed, and the admin app reflects the reviewed state. Ad-hoc runtime configuration drift is actively avoided.

Check the tenant’s current deployment state

Section titled “Check the tenant’s current deployment state”
  1. Open /settings
  2. Read the Deployment card
  3. Verify stage, region, and that AgentCore status is “managed (always on)”
  4. Note the Terraform module version under Source — useful if something isn’t working after a redeploy
  1. Open /settings
  2. Scroll to Resources & URLs
  3. Click the copy button next to API endpoint
  4. Paste into the developer’s request

Diagnose “why is memory empty for everyone?”

Section titled “Diagnose “why is memory empty for everyone?””
  1. Open /settings → Deployment card
  2. Check Managed memory: Enabled
  3. Check Hindsight: Enabled (if that’s the expected backend)
  4. If either is Disabled, the tenant config doesn’t match expectations and a Terraform update + redeploy is needed
  • Everything is read-only. There are no toggles, no save buttons, no inline edits. If you want to change a setting, you change Terraform.
  • Deployment status can lag. The underlying query reads cached metadata, not live CloudFormation, so recent changes may not appear until the cache refreshes.
  • No tenant rename UI. Rename is a Terraform + database migration.
  • No per-tenant logs link. The Resources card lists storage endpoints but doesn’t link directly to CloudWatch log groups or metrics.
  • Humans — tenant member management (the mutable counterpart to this page)
  • Deploy Configuration — the Terraform reference for every field on this page
  • CLI — the tool used to change Terraform-backed settings and redeploy
  • Architecture — how the tenant fits into the three-tier deployment model