Whatever message this page gives is out now! Go check it out!
Conversation history | Stored in the in-memory environment of the ColdFusion server running within the customer’s on-premise setup. This data may be transmitted to Adobe servers for certain processing operations. Optionally persisted to your own Redis, Memcached, or EHCache. If chat memory is not enabled, nothing is stored. |
RAG content (document chunks + vector embeddings) | Your configured vector store, either in ColdFusion's own memory, or an external service you own and control. |
AI provider credentials and settings | Configuration files on your ColdFusion server. API keys are encrypted at rest using industry-standard encryption before being saved. |
Monitoring data | Your ColdFusion Performance Monitoring Toolset (PMT) server. |
| Provider | Models |
|---|---|
| OpenAI | GPT-4o, GPT-4, and any OpenAI-compatible model |
| Anthropic | Claude 3.x and newer |
| Azure OpenAI | Your Azure-hosted OpenAI deployment |
| Google AI | Gemini 1.5, 2.0, and compatible models |
| Mistral AI | Mistral Large and other Mistral models |
| Ollama | Any model in the Ollama library (Llama 3, Gemma, Phi, etc.); runs locally on your server |
| Mechanism | Isolation type | Use case |
|---|---|---|
Separate vector store backends — give each tenant its own collection, namespace, index, or database (collectionName, namespace, tenantName, separate credentials) | Hard isolation at the storage layer; no cross-tenant query is possible | Strict regulatory boundaries, separate organizations |
Metadata + metadataFilter — tag every chunk at ingest time with metadata and pass a matching metadataFilter at retrieval | Soft isolation; one shared store, retrieval scoped per query | Multi-user apps within one organization, departmental scoping |
Separate Agent() / SimpleRAG() instances per tenant — each instance carries its own metadataFilter baked in at build time | Useful when filters cannot vary per request | Per-tenant pre-built services held in application scope |
| Configuration | Behavior |
|---|---|
chatMemory not enabled | Nothing is stored. No sharing risk. |
chatMemory enabled, perUser: false (default) | All users sharing this Agent() / SimpleRAG instance share one conversation history. Internally a single global memory ID is used. |
chatMemory enabled, perUser: true | Each userId gets its own memory. You must pass userId to agent.chat(message, userId). |
perUser: true:perUser: true is set but no userId is provided, ColdFusion falls back to the HTTP session ID, and finally to the literal string "anonymous" if there is no session. Two unauthenticated users can collide on the "anonymous" bucket. Always pass an explicit, stable userId for authenticated users.userId is also used as the memory key for persistent stores (Redis, Memcached, EHCache). Choose a value that uniquely identifies the user for the entire memory lifetime.perUser: true on chat memory isolates conversation history only — it does not change vector retrieval. To prevent RAG content sharing across tenants, apply metadata filtering or use separate stores as described in the previous question.chatMemory.perUser = true whenever the same Agent() / SimpleRAG serves more than one user.userId to chat().metadataFilter (or use separate stores) for every retrieval that should be scoped.| Operation | Metrics captured |
|---|---|
| AI service calls | Operation type, which template and line number triggered it, timing, status, errors |
| LLM calls | Provider, model, token usage (input + output + total), response time, finish reason |
| RAG pipeline | Timing for each phase — document loading, splitting, embedding, ingestion, retrieval, content injection |
| Document journey | How each document moved through the RAG pipeline |
| Embedding calls | Timing and status |
| MCP calls | Timing and outcome for MCP client and server tool calls |
| Tool executions | Each function tool called during a chat turn |
| Guardrail evaluations | Pass/fail and timing for each input and output guardrail |
try/catch and handle however your application requires. Nothing is shown to end users unless your code shows it.