Skip to main content
Version: 2.0

App Advisor

Service: app-advisor-srv · Port: 8105

The App Advisor is an AI advisor that understands what your application does and gives advice that fits it. A checkout service, an ML training job and a nightly data pipeline have very different needs; the Advisor knows the difference.

Every tenant gets their own App Advisor, running inside their vCluster and deployed by advisor-controller. It only ever sees that tenant's apps.

What it does​

CapabilityDescription
DiscoveryFinds the apps running in the vCluster and builds a profile for each — every 10 minutes and on demand.
Domain classificationRecognizes each app's domain — ecommerce, api_service, ml_training, data_pipeline, auth, analytics and more — from its image, labels and configuration. You can override the classification.
Proactive adviceWrites recommendations that explain why they matter for this kind of app.
ConversationsA streaming Q&A session per app — ask about performance, reliability, scaling or cost.
Change validationGiven a proposed change, predicts its impact before you apply it.
Live metricsCurrent request rate, latency, error rate, CPU, memory, replicas and restarts.

How advice is generated​

  1. Profile — discovery records each app's workload shape: replicas, resources, probes, volumes, autoscaling and traffic.
  2. Classify — the app's domain is detected (or taken from your override).
  3. Evaluate — the profile and live metrics are checked against best practices for that domain.
  4. Explain — Claude writes each piece of advice with its reasoning, impact and the change to make.

Advice has a status — open, dismissed or implemented — so you can track what you've acted on.

Security​

Every /api/v1/* route requires a valid token, and every request is checked against the tenant that owns the vCluster. The dashboard's AI Chat forwards the user's own token; agent-runtime uses a service token carrying the tenant it's working for. AI calls use the tenant's AI credential.

REST API​

MethodPathDescription
GET/api/v1/discovered-appsApps discovered in this vCluster.
POST/api/v1/discoverRun discovery now.
GET/api/v1/profilesAll app profiles.
GET · PUT/api/v1/apps/{app_id}/profileRead or override an app's profile (for example its domain).
GET/api/v1/apps/{app_id}/adviceAdvice for an app (?status=).
POST/api/v1/apps/{app_id}/advice/generateGenerate fresh advice.
POST/api/v1/apps/{app_id}/advice/{advice_id}/dismiss · /implementUpdate an advice item's status.
GET · POST/api/v1/apps/{app_id}/sessionsList or start conversations.
POST/api/v1/apps/{app_id}/sessions/{session_id}/queryAsk a question (streams the answer).
POST/api/v1/apps/{app_id}/validateValidate a proposed change.
GET/api/v1/apps/{app_id}/liveLive metrics.
GET/healthzHealth check.

Configuration​

advisor-controller configures each instance; you rarely need to change these.

VariableDefaultDescription
TENANT_ID—The tenant this instance serves.
DISCOVERY_INTERVAL10mHow often to rediscover apps.
AUTH_JWT_ACCESS_SECRET—Validates tokens.
AUTH_SERVICE_BASE_URL / AI_CREDENTIAL_INTERNAL_API_KEY—AI credential resolution.
APM_GATEWAY_BASE_URLhttp://apm-gateway:8101Source of request metrics.
PORT8105HTTP port.