Enterprise Features

Matrix of enterprise capabilities across template-agent, template-ui, and template-mcp-server.

This matrix maps enterprise features to the repository that implements them. Use it when planning security, observability, and compliance for a full-stack deployment.

Feature matrix

Featuretemplate-agenttemplate-uitemplate-mcp-server
SSO / OIDCENABLE_AUTH, SSO_* envAUTH_ENABLED, SSO_*, sessionsENABLE_AUTH, SSO_*, SESSION_SECRET
Langfuse tracingLANGFUSE_* env
OpenTelemetryOTEL env, metrics endpointsOTEL Fastify plugin— (structlog JSON logging)
User feedback API/feedback routesFeedback UI buttons
MCP SSO pass-throughForwards user Bearer tokenBearer introspection on tools/call
MCP OAuthPer-user OAuth client flow, Redis tokensMCP connect UIOAuth authorization server (/auth/*), Postgres tokens
MCP DCRRegisters OAuth client to MCPMCP status panelPOST /auth/register
HITL interruptsGraph interrupt pointsInterruptBanner UI
GuardrailsMiddleware in agent runtime
Audit loggingAudit middleware + emitter
PII scrubbingDetector/scrubber middleware
OPA complianceconfig/compliance/policy.rego
Rate limitingsettings.yaml security section
Session managementThread/checkpoint isolationRedis + COOKIE_SIGNPostgreSQL OAuth token storage (when auth enabled)
Token budget/threads/{id}/token-usage
PersonalizationMemory/rules API (evolving)Settings UI (memory, rules)
OpenShift overlaysdeployment/overlays/openshift/deployment/overlays/openshift/deployment/openshift/
HPA / PDBOpenShift overlay

Authentication flows

Agent SSO

When ENABLE_AUTH=true on template-agent, the LangGraph API expects authenticated requests. template-ui forwards the user session when configured as the BFF.

UI SSO

template-ui uses OAuth2/OIDC with cookie-based sessions. Production requires COOKIE_SIGN (32+ characters) and aligned SSO_CALLBACK_URL with your Route hostname.

MCP authentication

Agent side — defined per server in config/agent/mcp.json:

auth_modeCredential flow
ssoAgent forwards user’s SSO Bearer token to MCP
oauthUser connects via UI; agent stores tokens encrypted in Redis
dcrAgent registers an OAuth client with MCP (POST /auth/register)

Requires MCP_TOKEN_ENCRYPTION_KEY for OAuth/DCR on the agent in production.

MCP server side — when ENABLE_AUTH=True on template-mcp-server:

ModeUSE_EXTERNAL_BROWSER_AUTHNotes
No authany (ENABLE_AUTH=False)Default in .env.example; all endpoints open
Local dev authTrueBrowser OAuth; token cached in memory
Production authFalseFull OAuth server; tokens in PostgreSQL

tools/list is unauthenticated so agents can discover tools; tools/call requires a valid Bearer token when auth is enabled. See Authentication in template-mcp-server.

Observability stack

SignalAgentUI
TracesLangfuse + OTELOTEL via Fastify
MetricsOTEL exporters
FeedbackLangfuse + PostgresUI → agent /feedback
DebugServer logs, skills evalsDebug panel (dev)

Local trace inspection: make container in template-agent can start Jaeger alongside the agent.

Compliance

template-agent: Guardrails middleware, audit event emission (scrubbed), PII detection middleware. Configure in runtime/agent.yaml.

template-ui: OPA policies in config/compliance/ deny requests based on Rego rules. See config/compliance/README.md in the repository.

Security checklist (production)

  • TLS on all Routes (template-agent, template-ui, MCP)
  • Secrets in OpenShift Secrets, not ConfigMaps
  • AGENT_PUBLIC_BASE_URL set for MCP OAuth callbacks
  • MCP_TOKEN_ENCRYPTION_KEY rotated with MCP_TOKEN_ENCRYPTION_KEY_PREVIOUS during rotation
  • ENABLE_AUTH / AUTH_ENABLED aligned across UI and agent
  • OPA policies reviewed if production.yaml UI config is used
  • Network policies restrict agent ↔ MCP ↔ database traffic