TinyMCE AI on-premises reference
Environment variable reference
Alphabetized. Required-ness is marked relative to a minimum working deployment.
| Variable | Required | Default | Description |
|---|---|---|---|
|
Recommended |
- |
Comma-separated list of Cross-Origin Resource Sharing (CORS)-allowed editor origins. Required for cross-origin editor deployments. |
|
Yes |
- |
Database name ( |
|
Yes |
- |
|
|
Yes |
- |
Database hostname or IP. |
|
Yes |
- |
Database password. |
|
No |
3306 (MySQL) / 5432 (PostgreSQL) |
Database port. |
|
PostgreSQL only |
|
PostgreSQL schema name. Pre-create or set to |
|
No |
- |
Path to CA cert for database Transport Layer Security (TLS). |
|
No |
- |
Path to client cert. |
|
No |
- |
Path to client key. |
|
Yes |
- |
Database user. |
|
No |
|
Emit JSON request logs to stdout. |
|
Yes |
- |
Management Panel login secret. Not used to sign user JSON Web Tokens (JWTs). |
|
No |
Self-hosted Langfuse URL. |
|
|
No |
- |
Verbose Langfuse logging. |
|
If using Langfuse |
- |
Langfuse public key. |
|
If using Langfuse |
- |
Langfuse secret key. |
|
Yes |
- |
AI service license key (long string from Tiny). |
|
No |
|
Primary OpenTelemetry switch. |
|
No |
180000 |
Per-request large language model (LLM) timeout in ms. Raise for large self-hosted models. |
|
No |
- |
JSON object; Model Context Protocol (MCP) server configuration. See Advanced scenarios. |
|
Sometimes |
- |
JSON array; required for Azure / Bedrock / Vertex / openai-compatible. See LLM providers. |
|
No |
- |
Verbose OpenTelemetry Protocol (OTLP) diagnostic logging. |
|
If using OTEL |
- |
OTLP traces endpoint URL. |
|
No |
|
OTLP sampling rate (0.0 to 1.0). |
|
Yes |
- |
JSON object; LLM provider configuration. See LLM providers. |
|
No |
- |
Comma-separated |
|
No |
1 |
Redis database number. |
|
Yes |
- |
Redis hostname. |
|
No |
- |
Set to |
|
No |
- |
Redis password. |
|
No |
6379 |
Redis port. |
|
No |
- |
Path to CA cert for Redis TLS. |
|
No |
- |
Path to Redis client cert. |
|
No |
|
Enable Redis TLS. |
|
No |
- |
Path to Redis client key. |
|
No |
- |
Redis username (ACL). |
|
If using S3 |
- |
S3 access key. |
|
If using Azure Blob |
- |
Azure storage account key. |
|
If using Azure Blob |
- |
Azure storage account name. |
|
If using S3 |
- |
S3 bucket name. |
|
If using Azure Blob |
- |
Azure container name. |
|
Yes |
- |
|
|
No |
- |
Custom endpoint (S3-compatible or Azure-compatible). |
|
If using filesystem |
- |
Mount point for filesystem storage. Must be writable by the container user. |
|
If using S3 |
- |
S3 region. |
|
If using S3 |
- |
S3 secret access key. |
|
No |
|
Enable web scraping endpoint forwarding. |
|
If web resources enabled |
- |
Scraper URL. |
|
No |
- |
Scraper request timeout in ms. |
|
No |
|
Enable web search forwarding. |
|
If web search enabled |
- |
Search URL. |
|
No |
- |
JSON object; extra headers sent to the search endpoint. |
|
No |
- |
Search request timeout in ms. |
API endpoint reference
| Method | Path | Auth | Description |
|---|---|---|---|
GET |
|
None |
Liveness probe. Returns |
GET |
|
None |
ReDoc-rendered API documentation. |
GET |
|
None |
OpenAPI 3 JSON spec. |
GET |
|
Management secret |
Management Panel UI. Sign in with |
GET |
|
JWT |
List available models for the current token. The compatibility version literal |
POST |
|
JWT |
Create a conversation. Body must include client-supplied |
GET |
|
JWT |
List conversations for the current |
GET |
|
JWT |
Read one conversation. |
POST |
|
JWT |
Send a message. Returns Server-Sent Events (SSE) stream. |
DELETE |
|
JWT |
Delete a conversation. |
POST |
|
JWT |
Run a quick action. Body shape: |
POST |
|
JWT |
Run a review. |
Environment management (create, read, update, delete) is handled through the Management Panel UI at /panel/.
|
Server-Sent Events reference
The message endpoint returns Content-Type: text/event-stream. Events use named types:
| Event | Payload shape | Meaning |
|---|---|---|
|
|
Sent once at the start of each message. |
|
|
Incremental text fragment. The editor concatenates these. |
|
|
Emitted when the model invokes an MCP tool. |
|
|
Emitted when an MCP tool returns. |
|
|
Provider error. HTTP status remains 200; the error is in-stream. |
|
|
Sent once at the end of the stream. |
Healthy stream example:
event: message-metadata
data: {"messageId":"abc123"}
event: text-delta
data: {"textDelta":"Hello "}
event: text-delta
data: {"textDelta":"there!"}
event: done
data: {}
Error stream example:
event: message-metadata
data: {"messageId":"abc123"}
event: error
data: {"message":"Incorrect API key provided","cause":{"providerStatusCode":401}}
Browser client parsing notes:
-
Each event is two lines:
event: <name>anddata: <json>, separated from the next event by a blank line. -
datais always valid JSON. -
Unknown
eventtypes carry informational payloads and can be ignored for forward compatibility. -
text-deltais the only event that contributes to the visible response body.
Error code reference
Error codes returned in HTTP 4xx responses and inside SSE event: error payloads.
| Code | Origin | Likely cause | Fix |
|---|---|---|---|
|
JWT verifier |
Wrong API Secret, or used |
Re-sign with HS256 using the correct API Secret |
|
JWT verifier |
|
Re-copy env ID from |
|
JWT verifier |
Token >60 s past |
Issue tokens with shorter lifetime and refresh sooner |
|
AI runtime |
Same as |
Recreate env through Panel UI |
|
Permission checker |
|
Add the missing permission string |
|
Input validator |
Field validation failed (most commonly the 100,000 char prompt cap) |
Fix the request body. See error message |
|
AI runtime |
Same as |
Recreate through Panel UI |
|
Conversation runtime |
Stream-abort left stale state |
Start a new conversation |
|
Conversation runtime |
Follow-up to |
Start a new conversation |
|
Bedrock / Vertex adapter |
Inline credentials missing |
Inline |
|
Bedrock |
Missing model access or IAM permissions |
Enable Bedrock model access; attach the IAM policy from LLM providers |
|
Bedrock |
Anthropic on Bedrock without Marketplace subscription |
Subscribe through AWS Marketplace |
|
Bedrock |
Wrong model ID format (regional instead of cross-region) |
Use the inference profile ID for Claude 4.x |
|
Azure |
|
Set |
|
Vertex |
Mangled |
Build |
|
Vertex |
|
|
|
Vertex |
Account-bound API key blocked by org policy |
Grant policy exception |
|
OpenAI / Anthropic / Google |
Bad API key |
Update |
|
AI service startup |
Truncated or whitespace-padded license key |
Re-paste as a single line |
Known limits
| Limit | Value | Notes |
|---|---|---|
Maximum prompt length |
100,000 characters |
Hard limit enforced by the service. Requests exceeding this return |
Conversation create |
Client-supplied |
The plugin auto-generates |
Stream-abort recovery |
Stop button leaves stale state |
The next message returns |
Built-in rate limiting |
None |
Front the service with nginx |
File support (OpenAI-compatible providers) |
Images only ( |
PDFs, text, and Office files are not forwarded to OpenAI-compatible providers. Use a non-OpenAI-compatible provider for non-image file attachments. |
MCP tool availability |
Conversations only |
MCP tools are not available in reviews or quick actions. |
MCP authentication |
Single shared token per server |
The |
PostgreSQL default schema |
|
Pre-create with |
|
Only accepts |
Values such as |
Environment creation through raw API |
Not supported |
Always create environments through the Management Panel UI. |
Bedrock credentials |
Inline only |
The SDK default credential chain (IAM Roles for Service Accounts (IRSA), instance roles, |
Vertex credentials |
Inline only |
Application Default Credentials, |
Azure |
Must equal deployment name |
There is no separate |
OpenAI-compatible |
Must include |
Omitting it produces a "Not Found" SSE error. |