
User Manual
Welcome to the OpenMake LLM User Manual. This guide covers every feature of the platform with detailed, step-by-step instructions so you can get the most out of your self-hosted AI assistant.
OpenMake LLM is a privacy-first, self-hosted AI platform centered on a local vLLM/LiteLLM gateway: autonomous agent tasks in a Docker sandbox, 22 built-in MCP tools, deep research, artifacts, vision, cross-conversation memory, bring-your-own-key external providers, and 100 specialized agents across 18 industry domains.

💡Navigation
Live Demo
https://chat.openmake.cc
GitHub
https://github.com/openmake/openmake_llm
API DocsLogin Required
https://chat.openmake.cc/api-docs

🧭 Finding Your Way
The sidebar holds only five entries so that your recent conversations stay the focus. Everything else is still there — reached through a hub tab, the profile menu at the bottom of the sidebar, or a toggle in the composer. Read this section first and the rest of the manual will be easy to follow.
The sidebar
💬 Chat
The main workspace at /. Recent conversations are listed underneath, with See all leading to the full history.
✨ Agent Tasks
Autonomous runs at /agent-tasks — start one, watch it work, approve risky steps.
🤖 Custom Agents
Your own agents at /custom-agents. The Skill Library sits beside it as the second tab.
🗂️ Artifacts
Everything the model rendered or published, at /artifacts.
🛡️ Admin
Visible to administrators only. One entry at /admin that fans out into ten tabs.
Where everything else lives
If you are looking for something that used to be its own sidebar entry, this is where it moved. The old URLs still work — three of them redirect into a settings tab.
| Looking For | How To Open It | Route |
|---|---|---|
| History | Recent conversations → See all | /history |
| Deep Research | Composer Deep Research toggle, or the History tab bar | /research |
| Skill Library | Custom Agents → second tab | /skill-library |
| Settings | Profile menu at the bottom of the sidebar | /settings |
| Usage | Profile menu | /usage |
| API Docs / API Access | Profile menu → Developer, then its two tabs | /developer · /api-access |
| External MCP servers | Settings → Connectors tab | /mcp-servers → redirect |
| Memory | Settings → Memory tab | /memory → redirect |
| External provider keys | Settings → Model & Response tab | /api-keys → redirect |
| MCP tool catalog | Settings → Connectors, or Admin dashboard quick link | /mcp-catalog |
| Every admin screen | Admin → tab bar (10 tabs) | /admin/* |
ℹ️Hub Tabs
💬 Chat
The Chat page is the main interface of OpenMake LLM, and the page you land on at the root URL. Send messages, attach images, and reach everything the composer offers: eight mode toggles, the tool picker, the model selector, and the tool-approval control.
Getting Started
- Open the application — the Chat page loads by default at the root URL (/).
- Use the configured model route. By default, chat falls back from OMK_CHAT_MODEL to LLM_DEFAULT_MODEL.
- Type your message in the input box at the bottom of the screen.
- Press Enter to send. Use Shift+Enter to add a new line without sending.
- The AI response streams in real-time. Click the Stop button to abort generation mid-stream.

The eight mode toggles
Open the mode sheet from the composer to switch these on. They fall into two kinds, and the difference matters \u2014 see the warning below the table.
| Toggle | Kind | What It Does |
|---|---|---|
| Discussion | Intercept | Runs the multi-perspective discussion engine and streams its progress. |
| Thinking | Normal | Renders the reasoning as a live timeline above the answer, restored when you reopen the conversation. |
| Deep Research | Intercept | Runs the research pipeline — fan-out search, source fetch, claim verification, cited synthesis. |
| Web | Modifier | Allows web search during the answer. |
| Agent | Normal | Hands the message to the autonomous agent-task runner instead of answering inline. |
| Image | Intercept | Routes to the local FLUX.2-klein image node instead of the chat model. |
| Artifact | Modifier | Asks for a self-contained, renderable artifact. |
| Structured | Normal | Requests a structured, schema-shaped response. |
⚠️Intercept Modes Override the Modifiers
The rest of the composer
\ud83d\udd27 Tools
Opens the tool picker so you can narrow which MCP tools this conversation may call.
\ud83e\udd16 Model
Pick a specific model for this conversation, or leave it on Auto to use the role mapping.
\ud83d\udee1\ufe0f Approval
Decides how much you get asked before a tool runs \u2014 see the approval table below.
\ud83d\uddbc\ufe0f Attachments
Attach images and files for analysis and OCR, by button or drag-and-drop.
\ud83d\udc4d Feedback
Rate responses with thumbs up or down; the ratings feed the Agent Learning dashboard.
\ud83d\udd04 Session Continuity
Reopen any past conversation from Recent conversations or the History page with its context intact.
Tool approval
The Approval control in the composer decides when a tool call pauses for you. It applies to the current conversation.
| Setting | What It Does |
|---|---|
| Manual | Every tool call waits for your approval. |
| Auto | Only high-risk tools ask — shell, Python, browser, and deletions. Everything else runs. |
| Skip | All tools run without asking. |
ℹ️Quality Controls Run Regardless
💡Local Model Tip
LLM_BASE_URL and LLM_DEFAULT_MODEL first. Role variables — OMK_CHAT_MODEL, OMK_AGENT_MODEL, OMK_JUDGE_MODEL, OMK_RESEARCH_MODEL, OMK_SPAWN_MODEL, OMK_REVIEW_MODEL, OMK_ROUTER_MODEL, OMK_SUMMARY_MODEL — override individual workflows, and per-user or admin-global mappings take precedence over them.✨ Prompt Modes
Twelve role prompts sit behind the chat, each tuned for a different kind of request. Detection is entirely automatic — there is no prompt-mode picker anywhere in the interface, and nothing to configure.
ℹ️What the Detected Role Actually Changes
/api/v1/chat/completions directly. Either way you do not select it; the message does.
Basic Modes
\ud83d\udcac Assistant
General conversation, Q&A, and information retrieval. Friendly, easy-to-understand explanations.
\ud83e\udde0 Reasoning
Complex problem-solving, math, and logical analysis with step-by-step chain-of-thought.
Development Modes
\ud83d\udcbb Coder
Programming, debugging, and API development. Production-level code with error handling.
\ud83d\udd0d Reviewer
Code quality analysis and security review. Issues classified as Critical/Major/Minor.
\ud83c\udfd7\ufe0f Generator
Project scaffolding with complete directory structures and boilerplate files.
\ud83d\udd12 Security
Security vulnerability analysis following OWASP standards and threat modeling.
Content Modes
\u270d\ufe0f Writer
Blog posts, emails, and reports. Narrative structure with reader empathy.
\ud83d\udcd6 Explainer
Explains complex concepts simply using analogies and examples.
\ud83c\udf10 Translator
Multi-language translation preserving original nuance and cultural context.
Analysis & Agent Modes
\ud83d\udd2c Researcher
Research and data investigation backed by the built-in web search, fact check, and scraping tools.
\ud83d\udcca Consultant
Business strategy, risk analysis, and actionable roadmaps.
\ud83e\udd16 Agent
Autonomous tool execution using ReAct pattern (Thought → Action → Observation).
💡Auto-Detection
Detection is weighted keyword scoring, not an extra model call. Each role owns a set of regex patterns with weights; the highest total wins, and anything scoring below 2 falls back to Assistant. So "translate this" lands on Translator, "review this code" on Reviewer, and "why does X happen" on Reasoning. Ties break on priority, where Security ranks highest and Assistant lowest, and a security signal of 3 or more always wins outright.
🎯 Built-In Specialists (100)
OpenMake LLM ships with 100 specialist agents across 18 industry domains, plus a general agent that catches everything else. You never pick one. Every message is routed to the best-matching specialist automatically, and that specialist's expertise is folded into the system prompt before the model answers.
⚠️There Is No Agents Page
The 18 Domains
Domain names and specialist names are Korean in the catalog, which is what you will see in the Skill Library. Counts are exact.
| Domain | Agents | Examples |
|---|---|---|
| 🖥️ Technology / IT | 11 | Software Engineer · Data Scientist · Cybersecurity Specialist |
| 💰 Finance / Economics | 9 | Financial Analyst · Investment Banker · Risk Manager |
| 🏢 Business / Management | 9 | Business Strategist · Marketing Manager · Product Manager |
| 🏥 Healthcare | 7 | Physician · Pharmacist · Nurse |
| 🎨 Creative | 7 | UI/UX Designer · Graphic Designer · Content Writer |
| ⚙️ Engineering | 7 | Mechanical Engineer · Electrical Engineer · Civil Engineer |
| 🔬 Science / Research | 7 | Research Scientist · Physicist · Chemist |
| 🌟 Specialist | 7 | Ethicist · Futurist · Systems Thinker |
| ⚖️ Legal | 5 | Corporate Lawyer · Criminal Defense Lawyer · Patent Attorney |
| 📚 Education | 4 | Educator · Curriculum Designer · EdTech Specialist |
| 📺 Media | 4 | Journalist · PR Specialist · Social Media Manager |
| 🤝 Social / Welfare | 4 | Sociologist · Social Policy Researcher · Demographer |
| 🏛️ Government / Public | 4 | Policy Analyst · Urban Planner · Administrator |
| 🏠 Real Estate | 3 | Real Estate Analyst · Asset Manager · Architecture Consultant |
| ⚡ Energy / Environment | 3 | Energy Analyst · Sustainability Consultant · Renewable Energy Engineer |
| 🚚 Logistics / Transport | 3 | Logistics Manager · Transport Analyst · Warehouse Manager |
| 🏨 Hospitality / Tourism | 3 | Hospitality Manager · Event Planner · Tourism Consultant |
| 🌾 Agriculture / Food | 3 | Agricultural Scientist · Food Scientist · Agricultural Consultant |
How a Specialist Gets Picked
Four tiers, tried in order. The cheap ones come first so most messages never pay for an extra model call.
- Cache — if you have asked the same question before, the previous routing decision is reused straight away.
- Keyword pre-classification — a keyword router scores every agent, and if its confidence clears the threshold that agent is taken and the LLM step is skipped entirely.
- Short-message shortcut — a short message with no domain keyword at all goes straight to the general agent, which is what handles small talk and arithmetic.
- LLM routing — only if none of the above resolved it. If that call fails, the keyword result from tier 2 is reused rather than routing again.
ℹ️Inside the Keyword Router
Seeing What a Specialist Knows
On every server start the platform generates a professional skill document for each of the 100 agents and upserts it into the skill table as system-skill-{agentId}, published so anyone can read it. That means the Skill Library is the browsable view of this catalog — open it to see exactly what guidance a given specialist carries. The seeding is idempotent, so adding an agent to the catalog is enough for it to appear after a restart.
💡Built-In Agents vs Custom Agents
🤖 Model Runtime
OpenMake LLM uses a local OpenAI-compatible gateway for the current runtime. Chat, router, vision, embedding, and image workflows are selected from the configured local-llm catalog. Four external providers can be added on your own key — see External Providers below.

| Capability | Runtime | Strategy | Best For |
|---|---|---|---|
| Chat | OMK_CHAT_MODEL → LLM_DEFAULT_MODEL | Prompt mode + session context | General chat, writing, Q&A |
| Coding | qwen3.6-35b-a3b | Code prompt mode | Programming, debugging, code review |
| Reasoning | qwen3.6-35b-a3b | Thinking mode + reasoning adapter | Math, logic, and deep analysis |
| Vision | qwen3.6-35b-a3b | Image input path | Image analysis, OCR, visual tasks |
| Tool Loop | local-llm + MCP | Always-on, up to 5 tool turns | Web search, scraping, and dev tools |
| Agent Task | OMK_AGENT_MODEL → LLM_DEFAULT_MODEL | Docker sandbox, human-in-the-loop | Autonomous multi-turn goals |
| Image Generation | flux2-klein | generate_image tool / Image mode | Local image generation |
| Embeddings | bge-m3 | Multilingual embedding node | Search and retrieval-oriented workflows |
| External Models | <provider>:<model> on your own key | Provider gate resolves the prefix | GPT, Claude, Gemini, and open models |
ℹ️How Routing Works
🌐 External Providers
The local catalog needs no key, but four external providers ship in the catalog and can be added with your own credentials. Every one of them is reached over an OpenAI-compatible endpoint, so a registered model behaves like a local one: it appears in the model chooser, it can be assigned to a role, and its usage is metered.

| Provider | Endpoint | Key | Notable Models |
|---|---|---|---|
| OpenRouter | openrouter.ai/api/v1 | sk-or- | 300+ routed models — GPT-5, Claude Opus 4.5 / Sonnet 4.6, Gemini 2.5 Pro, Llama 3.3 70B, DeepSeek R1 |
| Ollama (Local) | <your-host>:11434/v1 | none | Whatever is pulled on that server; the model list is read from the host itself |
| Ollama Cloud | ollama.com/v1 | API key | deepseek-v3.1:671b-cloud, gpt-oss:120b-cloud, qwen3-coder:480b-cloud |
| NVIDIA NIM | integrate.api.nvidia.com/v1 | nvapi- | Llama 4 Maverick 17B, Qwen3 Next 80B A3B, Mistral Nemotron |
- Open Settings and select the Model & Response tab.
- Under API Keys, choose Add Key and pick a provider from the catalog.
- Paste the key. Override the base URL only if you self-host that provider.
- The key is validated against the provider's /models endpoint on save, then stored AES-256-GCM encrypted.
- The provider's models now appear in the model chooser as <provider>:<model> and in role assignment.
🔑 One Key Per Provider
Each user registers at most one key per provider, enforced by a unique constraint. Keys are never returned in full — only a masked prefix is displayed.
🏢 Server-Wide Keys
An operator can register a server-level key so that global role mappings can use an external model. A daily token cap is required at registration; a monthly cap is optional.
🛡️ SSRF-Guarded Base URLs
Custom base URLs pass the outbound URL guard. Private, loopback, and link-local addresses are refused unless the operator adds them to SSRF_ALLOWED_HOSTS.
💰 Separate Cost Accounting
External calls are priced per provider and model from a built-in rate table, and are logged apart from local usage so you can see exactly what a key is spending.
ℹ️External Models Fall Back to Local
🔧 MCP Tools
The MCP Tools page shows all available Model Context Protocol tools. These are capabilities the AI can use during conversations — web search, code execution, file analysis, and more.


The 22 Built-in Tools
\ud83d\udd0d Search & Research
web_search, fact_check, extract_webpage, research_topic \u2014 Google Custom Search when configured.
\ud83d\udd78\ufe0f Web Scraping
web_scrape, web_map, web_crawl \u2014 always active, no API key required.
\ud83d\udc41\ufe0f Vision & Images
vision_ocr, analyze_image, generate_image \u2014 OCR, image understanding, and local FLUX.2 generation.
\ud83e\udd16 Agent Task Control
agent_task_get, agent_task_list \u2014 inspect autonomous runs from inside a conversation.
\ud83d\udce6 Skills & Agents
create_skill, load_skill, and Git ingest for skills, custom agents, and MCP servers.
\ud83d\udee1\ufe0f Review & Planning
security_review, code_review, create_plan \u2014 structured analysis passes.
\ud83d\udd0c MCP Meta
mcp_call, mcp_list_tools \u2014 reach any installed external MCP server.
\ud83d\udc33 External Servers
Each external MCP server runs in Docker with --cap-drop ALL, non-root, memory caps, and a network policy.
How to Use
- All 22 built-in tools are available to every user — subscription and tool-tier gating were removed.
- Tools are automatically invoked by the AI when relevant during a conversation, up to 5 tool turns per request.
- Install additional servers from the MCP catalog in Settings → Connectors.
- A catalog-level tool allowlist keeps chat auto-exposure focused, so a large server does not dump every schema into the prompt.
- REST execution and the explicit tool picker still reach the full tool set.
📂 Chat Attachments
Login RequiredFile analysis is handled inside chat workflows in the current UI. Upload images or supported files from chat, then let the configured model route analyze the content with the active tools.

How to Use
- Open Chat and use the attachment or image upload control.
- Attach the file or image you want to analyze.
- Describe the task, such as extraction, summary, translation, or visual inspection.
- Use MCP tools or Deep Research when the analysis also needs external sources.
- Manage resulting conversations from History and data controls from Settings.
💡Attachment Scope
📜 History
Login RequiredThe History page displays all your past conversation sessions. You can search, resume, or delete conversations.

How to Use
- Open History from Recent conversations → See all in the sidebar, or from the tab bar on the Deep Research page.
- Browse your past sessions listed by date and topic.
- Click on any session to view the full conversation.
- Click "Continue" to resume a conversation where you left off — full context is restored.
- Use the search bar to filter sessions by keyword.
- Click the trash icon to delete a session permanently.
🔬 Deep Research
Login RequiredDeep Research is an autonomous multi-step research agent. Enter a topic and the AI will decompose it into sub-questions, search the web, collect sources, and generate a comprehensive research report.

How to Use
- Turn on the Deep Research toggle in the composer, or open the Deep Research page from the History tab bar — it is not a sidebar entry.
- Enter your research topic in the input field (e.g., "Comparison of RAG vs Fine-tuning for LLM applications").
- Select research depth: Quick (fast overview), Standard (balanced), or Deep (comprehensive).
- Click "Start Research" to begin.
- Watch the real-time progress: topic decomposition → web search → source collection → synthesis.
- The progress bar shows completion percentage. Each sub-step is displayed as it happens.
- Once complete, view the full research report with citations and sources.
- Previous research sessions are listed below for reference.
⚠️Research Time
🛠️ Agent Tasks
Login RequiredAn Agent Task is an autonomous run: the agent pursues a goal across multiple tool-calling turns inside a persistent Docker sandbox with shell, Python, browser, file, and planning tools. Progress, token accounting, and every step are recorded live.

How to Use
- Switch the composer to Agent mode and describe the goal, or open Agent Tasks from the sidebar and create one directly.
- Attach files or images — originals and extracted text are both written into the sandbox workspace under uploads/, and images are injected through the vision channel.
- Watch the run: each step shows the tool call, its result, and the running token count.
- Approve or reject high-risk steps when the agent pauses — python_execute, shell writes, and similar actions require human-in-the-loop confirmation.
- Collect deliverables: the agent can produce Excel (.xlsx) and PDF files, including Korean/CJK fonts.
- Save a finished task as a reusable template, or put it on a recurring schedule.
🐳 Persistent Sandbox
Each task gets a Docker workspace that survives across turns, with --cap-drop ALL, non-root, memory and swap caps, and symlink-escape guards.
🚫 Honest Failure
If the goal is not met, a goal judge marks the run failed(goal_incomplete) instead of falsely reporting done.
🔁 Templates & Schedules
Reuse a proven task definition, or run it on a recurring schedule; admins can review all scheduled tasks.
🧰 Procedural Skills
A successful run can be captured as a replayable skill for later reuse.
🤖 Custom Agents
Login RequiredCreate and manage your own custom AI agents with specific system prompts, model-routing behavior, and tool configurations. Attach skills to agents for automatic prompt injection.

Creating an Agent
- Open Custom Agents from the sidebar.
- Create a new agent to open the form.
- Fill in the five fields the form actually has: name, description, icon, model, and system prompt.
- The system prompt is what defines the agent — this page has no temperature slider, no tool panel, and no test button.
- Save. The agent is stored against your account and becomes selectable in chat.
- Alternatively import an agent straight from a Git repository — give the repo URL, branch or tag, file path, and an access token for private repos.
- Agents proposed by the model arrive as drafts: review them on this page and approve or reject each one.
💡Skills Integration
📦 Skill Library
Login RequiredThe Skill Library is where you create, manage, and share reusable knowledge blocks (skills) that can be attached to custom agents. Skills enrich agent prompts with domain expertise.

How to Use
- Open Custom Agents from the sidebar, then switch to the Skill Library tab — it is not a sidebar entry of its own.
- Browse the library. Every one of the 100 built-in specialists is published here as a skill, alongside anything you add.
- Create a skill by hand with a name, description, and the knowledge content itself.
- Or let the model draft one for you, upload a file, or import from a Git repository.
- Assign a skill to yourself from the skill entry — assignment happens here, not in the agent editor.
- Export a skill to share it, and review model-generated drafts before they go live.
📄 Artifacts
Login RequiredArtifacts are standalone outputs — pages, components, documents, diagrams — rendered beside the conversation in a sandboxed iframe and persisted so you can reopen or share them later.

How to Use
- Ask for something self-contained, or turn on Artifact mode in the composer.
- The artifact opens in a resizable side panel; the conversation stays on the left.
- Run Python or JavaScript inside the artifact when code execution is enabled — execution happens in a Docker sandbox with a concurrency cap.
- Open the Artifacts page from the sidebar to browse everything you have created.
- Publish an artifact to get a share link served from a separate origin under a strict CSP.
ℹ️API Clients
message.artifacts extension. Setting publish_artifacts: true makes the server mint share links for API-key clients that cannot publish on their own.⚙️ Settings
The Settings page gives you control over the application appearance, AI behavior, tools, and account management.

Available Settings
⚙️ General (General)
Interface language — Auto-detect, Korean, English, 日本語, 简体中文 — and a toggle for whether conversation bodies are stored in the server database
🤖 Model & Response (Model & Response)
Default model, response style, thinking level, custom instructions, per-role model assignment, and your own external provider keys (AES-256-GCM encrypted at rest)
🎨 Interface (Interface)
Theme and layout preferences for the workspace
🔔 Notifications (Alerts)
Enable or disable push notifications
🧠 Memory (Memory)
Review, add, and forget the cross-conversation memories the assistant carries between chats
🔌 Connectors (Connectors)
Install external MCP servers from the catalog; each runs Docker-isolated. All 22 built-in tools are open to every user
🔒 Privacy & Security (Privacy · Security)
Export all your data, delete chat history, change password, and review session settings

🧠 Memory & Data Controls
Login RequiredCross-conversation memory lets the assistant carry facts between chats. Memories are stored per user and prepended to the system prompt, with a per-session privacy toggle to exclude them. Data controls cover conversation history, export, and deletion.

How to Use
- Open Settings from the profile menu at the bottom of the sidebar, then the Memory tab (/memory redirects there).
- Add a memory, or delete individual entries — a full forget deactivates all of them at once.
- Turn the per-session memory toggle off when you want a conversation to ignore stored memories.
- Export account data from Settings when you need a local copy.
- Use History to resume or remove individual chat sessions.
ℹ️Current Scope
/api/users/me/memories (list, add, delete one, forget all). The older RAG/embedding-backed MemoryService was retired \u2014 today's memory is explicit, user-visible, and injected as plain system-prompt text.📈 API Usage
Login RequiredThe API Usage page shows your consumption statistics: request counts, token usage, error rates, and daily/weekly trends visualized in charts.

What You Can See
- Summary stats for your own account: tokens this month, request count, average latency, and errors.
- Cost and volume at a glance: today cost, today tokens, week tokens, and a projected weekly cost.
- Daily token usage — a 14-day daily token chart.
- System token monitoring — daily tokens over 7 days plus an hourly breakdown.
- Usage share by model — which models consumed the tokens. The split is by model, not by workflow.
💻 API Documentation
The Developer Portal provides comprehensive API documentation for external integrations. It includes authentication methods, endpoint references, code examples, and rate limiting information.

Authentication Methods
| Method | Header | Use Case |
|---|---|---|
| API Key | X-API-Key: omk_live_... | Server-to-server integration |
| Bearer Token | Authorization: Bearer <jwt> | Authenticated user sessions |
| Cookie | auth_token=<jwt> | Browser-based (automatic) |
Key API Endpoints
| Endpoint | Method | Description |
|---|---|---|
| /api/chat | POST | Send a chat message and receive a response |
| /api/chat/stream | POST | Stream a chat response in real-time (SSE) |
| /api/v1/models | GET | List the API-key model exposed by LLM_DEFAULT_MODEL |
| /api/v1/usage | GET | Get API usage statistics |
| /api/research | POST | Start a deep research session |
| /api/models | GET | List local catalog models and authenticated external provider models |
| /api/agents/skills | GET | List available skills |
ℹ️Interactive Documentation
/api-docs (Swagger UI).🔐 API Keys
Login RequiredThe API Keys page lets you create and manage API keys for programmatic access to the OpenMake LLM API. Use these keys to integrate the platform into your own applications.

How to Use
- Open the profile menu at the bottom of the sidebar → Developer, then switch to the API Access tab (/api-access).
- Click "Generate New Key" to create a new API key.
- Give the key a descriptive name (e.g., "My App Production Key").
- Copy the generated key immediately — it is only shown once.
- Use the key in your API requests via the X-API-Key header.
- To rotate a key (generate a new one and invalidate the old), click "Rotate".
- Delete keys you no longer need by clicking the trash icon.
Quick Start Example
curl -X POST http://localhost:52416/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer omk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{"model": "qwen3.6-35b-a3b", "messages": [{"role": "user", "content": "Hello!"}]}'👥 User Management
AdminThe User Management page is an admin-only dashboard for managing all platform users. View user activity, manage roles, and access user data.

How to Use
- Open Admin from the sidebar — the Dashboard tab is user management.
- View all registered users with their email, role, and last activity.
- Click on a user to view their detailed profile and conversation history.
- Change a user's role — the roles are user, admin, and guest; subscription tiers were removed.
- Export user data for compliance or analysis.
- View per-user usage statistics and chat history.
📈 Analytics Dashboard
AdminThe Analytics Dashboard provides comprehensive insights into platform usage, performance, and user behavior. Data auto-refreshes every 60 seconds.

Dashboard Panels
\u2764\ufe0f Summary Cards
Total conversations, Active users, Tokens consumed, and average response time for the selected period.
\ud83d\udcb0 Cost Analysis
Daily cost, weekly cost, and a projected monthly figure.
\ud83d\udcc8 Daily Conversations
Conversation volume per day over a 7, 30, or 90 day window.
\ud83c\udfc6 Agent Performance
How the routed specialists performed over that period.
\u23f0 User Behavior
Average session length, queries per session, peak hours top 3, and the top 5 most frequent queries.
\ud83e\udde9 Model profile usage share
Which model profiles are carrying the traffic.
📊 Admin Metrics
AdminThe Admin Metrics page is a comprehensive monitoring dashboard showing system health, API token usage, quota status, cost tracking, and usage charts powered by Chart.js.

Dashboard Sections
\ud83d\udcbb System Metrics
Server uptime, memory usage, active WebSocket connections, CPU utilization.
\ud83d\udcb3 Token Monitoring
API token consumption per key and remaining quota. Keys are rotated on demand from API Access \u2014 there is no automatic rotation schedule.
\ud83d\udcb0 Usage Tracking
Token usage and estimated local runtime cost by workflow.
\ud83d\udcc9 Usage Charts
Hourly and daily usage trends visualized with interactive Chart.js graphs.
ℹ️Auto-Refresh
🖥️ Runtime Monitoring
Login RequiredRuntime monitoring lets admins inspect node metadata, API metrics, model routing health, audits, and agent activity for the self-hosted deployment.

How to Use
- Open Admin from the sidebar, then the MCP Monitoring tab.
- Review node status, latency, model metadata, and API usage trends.
- Use metrics and audit views to trace slow requests, tool calls, and agent activity.
- Check external provider and local gateway health before changing model routing.
- Runtime hosts are changed in server configuration, not in the UI — after changing them, verify health here.
💡Operational Tip
🎓 Agent Learning
Login RequiredThe Agent Learning page shows AI quality metrics based on user feedback. Monitor agent performance, identify failure patterns, and track improvement over time.

What You Can See
- Agent quality scores per workflow and agent type.
- Failure pattern analysis — common error categories and their frequency.
- Improvement suggestions generated from feedback data.
- Feedback statistics: average rating, positive/negative ratio, response count.
📋 Audit Log
AdminThe Audit Log page provides a complete record of system activities for security and compliance monitoring.

How to Use
- Open Admin from the sidebar, then the Audit Log tab.
- Filter logs by event type (login, API call, settings change, etc.).
- Filter by date range to narrow down the time period.
- Filter by user to see activity from a specific account.
- Browse entries with pagination — each entry shows timestamp, user, event type, and details.
- Audit logs capture: authentication events, API calls, admin actions, system errors, and configuration changes.
🔔 Alerts
AdminThe Alerts page displays system notifications and warnings that require administrator attention. Alerts are categorized by severity.

Alert Types
| Severity | Examples | Action Needed |
|---|---|---|
| ℹ️ Info | System startup, node connected, model loaded | No action required — informational |
| ⚠️ Warning | Quota approaching limit, high latency, node degraded | Monitor and plan capacity |
| 🚨 Critical | API key exhausted, all nodes down, database connection lost | Immediate action required |
- Open Admin from the sidebar, then the Alerts tab.
- View all active alerts with their severity, timestamp, and description.
- Filter alerts by severity level (Info, Warning, Critical).
- Click on an alert for detailed information and resolution steps.
🔗 External MCP Servers
AdminThe External Integration page lets administrators manage connections to external MCP (Model Context Protocol) servers. Register third-party tool servers to extend the platform's capabilities.

How to Use
- Open Admin from the sidebar, then the MCP Catalog Admin tab.
- Click "Add MCP Server" to register a new external server.
- Enter the server URL and authentication details.
- Once connected, the server's tools become available in the MCP Tools page.
- View each server's available tools and their descriptions.
- Remove servers by clicking the delete icon.
🎭 Role Model Management
AdminAdmin → Model Roles Admin sets the server-wide default model for each of the eight functional roles. A user mapping wins over this, this wins over the environment variables, and the local default catches everything that is still unassigned — so nothing breaks when a role is left blank.

💬 Chat · Router · Summary
The everyday roles — answering, deciding where a request goes, and condensing long conversations.
✨ Agent · Spawn
The model that drives an agent task, and the one used for sub-agents it branches off.
⚖️ Judge · Review
Goal judging for agent tasks and review passes, where a stronger model often pays for itself.
🔬 Research
The research pipeline and its report generation.
ℹ️External Models Need an Active Key
🗓️ Task Schedules
AdminAdmin → Task Schedules lists the recurring agent tasks of every user on the server in one table. Users create their own schedules from the Agent Tasks page; this view is for oversight — spotting a schedule that keeps failing, or one that is running more often than intended.

What Each Column Tells You
| Column | Meaning |
|---|---|
| Owner | The user the schedule belongs to; the task runs with their permissions and their model mappings. |
| Goal | The goal text the agent is given on every run. |
| Trigger | A CRON expression or a fixed interval — 0 7 * * * means 07:00 every day. |
| State | Active or paused. A paused schedule keeps its history but does not fire. |
| Next run / Last run | When it fires next, and when it last did. |
| Last result | The outcome of the most recent run, such as completed or failed. |
| Consecutive failures | How many runs have failed in a row. A climbing number is the signal to open the task and look. |
⌨️ Keyboard Shortcuts
Every keyboard shortcut the web application actually binds. They are contextual — each one works inside a specific control rather than globally.

| Shortcut | Where | Action |
|---|---|---|
| Enter | Composer | Send the message |
| Shift + Enter | Composer | New line without sending |
| ↑ / ↓ | Composer suggestions | Move through the suggestion list |
| Escape | Composer mode sheet | Close the mode sheet |
| Escape | Any detail panel | Close the open panel on Agent Tasks, Custom Agents, or Skill Library |
| Ctrl/Cmd + Enter | Agent task steering box | Send a steering message to a running task |
OpenMake LLM v1.5.6 — written against the openmake_llm source and the running instance, and checked against the navigation as it stands after the 2026-07-17 sidebar consolidation.