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​

The advisor starts with discovery: every 10 minutes, and on demand, it finds the apps running in the vCluster and builds a profile for each. It then classifies 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.

With that context it writes proactive advice that explains why each recommendation matters for this kind of app, and holds a streaming conversation per app where you can ask about performance, reliability, scaling or cost. It can also validate a change, predicting its impact before you apply it, and shows live metrics: current 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.

Each piece of 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.