OpenMake LLM
OpenMake LLM v1.5.6

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.

OpenMake LLM login page with email, Google, and guest login options
Login page: sign in with email, Google, or continue as a guest.

💡Navigation

Use the table of contents on the left (visible on desktop) to jump to any section. On mobile, simply scroll through the content — each section is clearly labeled.
OpenMake LLM main chat interface
The main chat interface with sidebar, agent cards, and input toolbar.

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 ForHow To Open ItRoute
HistoryRecent conversations → See all/history
Deep ResearchComposer Deep Research toggle, or the History tab bar/research
Skill LibraryCustom Agents → second tab/skill-library
SettingsProfile menu at the bottom of the sidebar/settings
UsageProfile menu/usage
API Docs / API AccessProfile menu → Developer, then its two tabs/developer · /api-access
External MCP serversSettings → Connectors tab/mcp-servers → redirect
MemorySettings → Memory tab/memory → redirect
External provider keysSettings → Model & Response tab/api-keys → redirect
MCP tool catalogSettings → Connectors, or Admin dashboard quick link/mcp-catalog
Every admin screenAdmin → tab bar (10 tabs)/admin/*

ℹ️Hub Tabs

Four groups of pages share a tab bar under the page title, so related screens are one click apart: History (History · Deep Research), Agents (Custom Agents · Skill Library), Developer (API Docs · API Access), and Admin (ten tabs, shown to administrators only).

💬 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

  1. Open the application — the Chat page loads by default at the root URL (/).
  2. Use the configured model route. By default, chat falls back from OMK_CHAT_MODEL to LLM_DEFAULT_MODEL.
  3. Type your message in the input box at the bottom of the screen.
  4. Press Enter to send. Use Shift+Enter to add a new line without sending.
  5. The AI response streams in real-time. Click the Stop button to abort generation mid-stream.
OpenMake LLM chat interface showing agent cards and input toolbar
Chat interface: select an agent card to start, or type a message in the input box below.

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.

ToggleKindWhat It Does
DiscussionInterceptRuns the multi-perspective discussion engine and streams its progress.
ThinkingNormalRenders the reasoning as a live timeline above the answer, restored when you reopen the conversation.
Deep ResearchInterceptRuns the research pipeline — fan-out search, source fetch, claim verification, cited synthesis.
WebModifierAllows web search during the answer.
AgentNormalHands the message to the autonomous agent-task runner instead of answering inline.
ImageInterceptRoutes to the local FLUX.2-klein image node instead of the chat model.
ArtifactModifierAsks for a self-contained, renderable artifact.
StructuredNormalRequests a structured, schema-shaped response.

⚠️Intercept Modes Override the Modifiers

Discussion, Deep Research, and Image take a dedicated backend pipeline, so the Web and Artifacts modifiers do not apply while one of them is on. The composer says so: an amber indicator appears and the two modifiers are labelled (not applied). Turn the intercept mode off if you actually wanted web search.

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.

SettingWhat It Does
ManualEvery tool call waits for your approval.
AutoOnly high-risk tools ask — shell, Python, browser, and deletions. Everything else runs.
SkipAll tools run without asking.

ℹ️Quality Controls Run Regardless

Whatever you pick, the same safeguards apply: an always-on MCP tool loop capped at five tool turns, doom-loop detection, tool-result compaction, and a context-fit safety net that trims the request before it can overflow the 262K window.

💡Local Model Tip

Configure 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

In the web interface the detected role shapes the answer format — how the reply is structured — while the system prompt itself is assembled from the agent persona, skills, memory, and your custom instructions. The full role prompt shown below is applied when you call the OpenAI-compatible API at /api/v1/chat/completions directly. Either way you do not select it; the message does.
Chat composer where the prompt mode is applied
Prompt modes are applied automatically from your message; the composer chips show the active tools and mode.

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

These 100 agents are not browsable and there is no picker — no sidebar entry, no route, no agent cards to click. Routing is automatic and happens per message. The one place you can read what each specialist knows is the Skill Library, where every agent is published as a skill. The agents you do choose explicitly are Custom Agents, which is a different feature entirely.
Technology / IT · 11Technology / IT · 11
Legal · 5Legal · 5
Science / Research · 7Science / Research · 7
Business / Management · 9Business / Management · 9

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.

DomainAgentsExamples
🖥️ Technology / IT11Software Engineer · Data Scientist · Cybersecurity Specialist
💰 Finance / Economics9Financial Analyst · Investment Banker · Risk Manager
🏢 Business / Management9Business Strategist · Marketing Manager · Product Manager
🏥 Healthcare7Physician · Pharmacist · Nurse
🎨 Creative7UI/UX Designer · Graphic Designer · Content Writer
⚙️ Engineering7Mechanical Engineer · Electrical Engineer · Civil Engineer
🔬 Science / Research7Research Scientist · Physicist · Chemist
🌟 Specialist7Ethicist · Futurist · Systems Thinker
⚖️ Legal5Corporate Lawyer · Criminal Defense Lawyer · Patent Attorney
📚 Education4Educator · Curriculum Designer · EdTech Specialist
📺 Media4Journalist · PR Specialist · Social Media Manager
🤝 Social / Welfare4Sociologist · Social Policy Researcher · Demographer
🏛️ Government / Public4Policy Analyst · Urban Planner · Administrator
🏠 Real Estate3Real Estate Analyst · Asset Manager · Architecture Consultant
⚡ Energy / Environment3Energy Analyst · Sustainability Consultant · Renewable Energy Engineer
🚚 Logistics / Transport3Logistics Manager · Transport Analyst · Warehouse Manager
🏨 Hospitality / Tourism3Hospitality Manager · Event Planner · Tourism Consultant
🌾 Agriculture / Food3Agricultural 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.

  1. Cache — if you have asked the same question before, the previous routing decision is reused straight away.
  2. 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.
  3. 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.
  4. 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

The keyword router is itself two passes. First it matches your message against 18 sets of topic regex patterns and gives every agent in a matched topic a category boost. Then it scores keywords with TF-IDF, expands them through a synonym table, and applies per-category weights. The winner is the primary agent; its confidence is what tier 2 above compares against the threshold.

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

The 100 built-in specialists are routed to for you and cannot be edited. Custom Agents — the next section — are the ones you create, name, and give your own system prompt, and those you select deliberately. Use a custom agent when you want a fixed persona; leave it alone and the router will keep matching a specialist per message.

🤖 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.

OpenMake LLM chat interface using the configured model route
Chat runs against the configured local-llm route; strategy options adapt per request.
CapabilityRuntimeStrategyBest For
ChatOMK_CHAT_MODEL → LLM_DEFAULT_MODELPrompt mode + session contextGeneral chat, writing, Q&A
Codingqwen3.6-35b-a3bCode prompt modeProgramming, debugging, code review
Reasoningqwen3.6-35b-a3bThinking mode + reasoning adapterMath, logic, and deep analysis
Visionqwen3.6-35b-a3bImage input pathImage analysis, OCR, visual tasks
Tool Looplocal-llm + MCPAlways-on, up to 5 tool turnsWeb search, scraping, and dev tools
Agent TaskOMK_AGENT_MODEL → LLM_DEFAULT_MODELDocker sandbox, human-in-the-loopAutonomous multi-turn goals
Image Generationflux2-kleingenerate_image tool / Image modeLocal image generation
Embeddingsbge-m3Multilingual embedding nodeSearch and retrieval-oriented workflows
External Models<provider>:<model> on your own keyProvider gate resolves the prefixGPT, Claude, Gemini, and open models

ℹ️How Routing Works

There is one execution path. Special modes (Image, Discussion, Deep Research) branch early; everything else passes a provider gate that resolves the model ID, gets a system prompt assembled from agent persona, skills, memory, and custom instructions, then runs through a shared dispatch with an always-on MCP tool loop. A lightweight regex classifier records intent for observability only — the LLM-based classifier was retired.

🌐 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.

Settings — Model and Response tab showing registered external provider keys and role-based model assignment
Settings → Model & Response. Registered provider keys sit above role assignment; key values are stored encrypted and never shown in full.
ProviderEndpointKeyNotable Models
OpenRouteropenrouter.ai/api/v1sk-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/v1noneWhatever is pulled on that server; the model list is read from the host itself
Ollama Cloudollama.com/v1API keydeepseek-v3.1:671b-cloud, gpt-oss:120b-cloud, qwen3-coder:480b-cloud
NVIDIA NIMintegrate.api.nvidia.com/v1nvapi-Llama 4 Maverick 17B, Qwen3 Next 80B A3B, Mistral Nemotron
  1. Open Settings and select the Model & Response tab.
  2. Under API Keys, choose Add Key and pick a provider from the catalog.
  3. Paste the key. Override the base URL only if you self-host that provider.
  4. The key is validated against the provider's /models endpoint on save, then stored AES-256-GCM encrypted.
  5. 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

An external model can only be selected while its provider key is registered and active. If the call fails — an expired key, a rate limit, a provider outage — the request falls back to the local default model rather than erroring out. Per-user role mappings and explicit in-chat selection stay BYOK-only so that a user's spend is always tied to their own key.

🔧 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.

MCP catalog page listing installable Model Context Protocol servers
MCP catalog: browse and install external MCP servers, each of which runs Docker-isolated.
Settings Connectors tab showing installed MCP connectors
Settings → Connectors: manage the MCP servers installed for your account.

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

  1. All 22 built-in tools are available to every user — subscription and tool-tier gating were removed.
  2. Tools are automatically invoked by the AI when relevant during a conversation, up to 5 tool turns per request.
  3. Install additional servers from the MCP catalog in Settings → Connectors.
  4. A catalog-level tool allowlist keeps chat auto-exposure focused, so a large server does not dump every schema into the prompt.
  5. REST execution and the explicit tool picker still reach the full tool set.

📂 Chat Attachments

Login Required

File 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.

Chat composer with the attachment control
Attachment workflows: attach files or images from the composer instead of a separate documents module.

How to Use

  1. Open Chat and use the attachment or image upload control.
  2. Attach the file or image you want to analyze.
  3. Describe the task, such as extraction, summary, translation, or visual inspection.
  4. Use MCP tools or Deep Research when the analysis also needs external sources.
  5. Manage resulting conversations from History and data controls from Settings.

💡Attachment Scope

The current source does not expose a standalone Documents or RAG page. File-oriented workflows should be described as chat attachment analysis unless your deployment adds a custom module.

📜 History

Login Required

The History page displays all your past conversation sessions. You can search, resume, or delete conversations.

Conversation history page with session list and search
History page: browse, search, and resume past conversations.

How to Use

  1. Open History from Recent conversations → See all in the sidebar, or from the tab bar on the Deep Research page.
  2. Browse your past sessions listed by date and topic.
  3. Click on any session to view the full conversation.
  4. Click "Continue" to resume a conversation where you left off — full context is restored.
  5. Use the search bar to filter sessions by keyword.
  6. Click the trash icon to delete a session permanently.

🔬 Deep Research

Login Required

Deep 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.

Chat interface with Deep Research mode activated
Deep Research mode activated in Chat: enter a topic and the AI will automatically conduct in-depth research.

How to Use

  1. 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.
  2. Enter your research topic in the input field (e.g., "Comparison of RAG vs Fine-tuning for LLM applications").
  3. Select research depth: Quick (fast overview), Standard (balanced), or Deep (comprehensive).
  4. Click "Start Research" to begin.
  5. Watch the real-time progress: topic decomposition → web search → source collection → synthesis.
  6. The progress bar shows completion percentage. Each sub-step is displayed as it happens.
  7. Once complete, view the full research report with citations and sources.
  8. Previous research sessions are listed below for reference.

⚠️Research Time

Deep research can take several minutes depending on complexity. The Quick depth typically completes in under a minute, while Deep may take 3-5 minutes.

🛠️ Agent Tasks

Login Required

An 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.

Agent task management page with recurring schedules, templates, and completed runs
Agent Tasks page: recurring schedules and templates on top, with each run showing turn count, progress, elapsed time, approval mode, and tokens used.

How to Use

  1. Switch the composer to Agent mode and describe the goal, or open Agent Tasks from the sidebar and create one directly.
  2. 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.
  3. Watch the run: each step shows the tool call, its result, and the running token count.
  4. Approve or reject high-risk steps when the agent pauses — python_execute, shell writes, and similar actions require human-in-the-loop confirmation.
  5. Collect deliverables: the agent can produce Excel (.xlsx) and PDF files, including Korean/CJK fonts.
  6. 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 Required

Create 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.

Custom Agents page for creating and managing user-defined AI agents
Custom Agents page: create, edit, and test your own AI agents with custom prompts.

Creating an Agent

  1. Open Custom Agents from the sidebar.
  2. Create a new agent to open the form.
  3. Fill in the five fields the form actually has: name, description, icon, model, and system prompt.
  4. The system prompt is what defines the agent — this page has no temperature slider, no tool panel, and no test button.
  5. Save. The agent is stored against your account and becomes selectable in chat.
  6. 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.
  7. Agents proposed by the model arrive as drafts: review them on this page and approve or reject each one.

💡Skills Integration

Skills are reusable knowledge blocks. When you attach a skill to an agent, its content is automatically injected into the system prompt during conversations. This lets you share domain expertise across multiple agents.

📦 Skill Library

Login Required

The 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.

Skill Library page for managing reusable knowledge blocks
Skill Library page: create, browse, and manage reusable knowledge blocks for agents.

How to Use

  1. Open Custom Agents from the sidebar, then switch to the Skill Library tab — it is not a sidebar entry of its own.
  2. Browse the library. Every one of the 100 built-in specialists is published here as a skill, alongside anything you add.
  3. Create a skill by hand with a name, description, and the knowledge content itself.
  4. Or let the model draft one for you, upload a file, or import from a Git repository.
  5. Assign a skill to yourself from the skill entry — assignment happens here, not in the agent editor.
  6. Export a skill to share it, and review model-generated drafts before they go live.

📄 Artifacts

Login Required

Artifacts 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.

Artifacts gallery listing saved artifacts
Artifacts page: browse everything you have created, reopen it in the side panel, or publish a share link.

How to Use

  1. Ask for something self-contained, or turn on Artifact mode in the composer.
  2. The artifact opens in a resizable side panel; the conversation stays on the left.
  3. Run Python or JavaScript inside the artifact when code execution is enabled — execution happens in a Docker sandbox with a concurrency cap.
  4. Open the Artifacts page from the sidebar to browse everything you have created.
  5. Publish an artifact to get a share link served from a separate origin under a strict CSP.

ℹ️API Clients

The OpenAI-compatible API returns artifacts as a 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.

OpenMake LLM settings page with appearance, AI model, and MCP tools configuration
Settings page: configure theme, language, AI model, MCP tools, and data 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

Role-to-model assignment screen
Role → model assignment: pick a model per functional role, using local models or your own external keys.

🧠 Memory & Data Controls

Login Required

Cross-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.

Memory page listing saved cross-conversation memories
Memory page: review, add, and forget the facts the assistant carries between conversations.

How to Use

  1. Open Settings from the profile menu at the bottom of the sidebar, then the Memory tab (/memory redirects there).
  2. Add a memory, or delete individual entries — a full forget deactivates all of them at once.
  3. Turn the per-session memory toggle off when you want a conversation to ignore stored memories.
  4. Export account data from Settings when you need a local copy.
  5. Use History to resume or remove individual chat sessions.

ℹ️Current Scope

Memory is exposed over REST at /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 Required

The API Usage page shows your consumption statistics: request counts, token usage, error rates, and daily/weekly trends visualized in charts.

API Usage page with request counts, token usage, and trend charts
API Usage page: view request counts, token consumption, and usage trends.

What You Can See

  1. Summary stats for your own account: tokens this month, request count, average latency, and errors.
  2. Cost and volume at a glance: today cost, today tokens, week tokens, and a projected weekly cost.
  3. Daily token usage — a 14-day daily token chart.
  4. System token monitoring — daily tokens over 7 days plus an hourly breakdown.
  5. 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.

Developer portal with API documentation
Interactive API documentation with endpoint references, code examples, and authentication methods.

Authentication Methods

MethodHeaderUse Case
API KeyX-API-Key: omk_live_...Server-to-server integration
Bearer TokenAuthorization: Bearer <jwt>Authenticated user sessions
Cookieauth_token=<jwt>Browser-based (automatic)

Key API Endpoints

EndpointMethodDescription
/api/chatPOSTSend a chat message and receive a response
/api/chat/streamPOSTStream a chat response in real-time (SSE)
/api/v1/modelsGETList the API-key model exposed by LLM_DEFAULT_MODEL
/api/v1/usageGETGet API usage statistics
/api/researchPOSTStart a deep research session
/api/modelsGETList local catalog models and authenticated external provider models
/api/agents/skillsGETList available skills

ℹ️Interactive Documentation

Full interactive API documentation with request/response examples is available at /api-docs (Swagger UI).

🔐 API Keys

Login Required

The 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.

API Keys management page for generating and managing API keys
API Keys page: generate, manage, and rotate API keys for programmatic access.

How to Use

  1. Open the profile menu at the bottom of the sidebar → Developer, then switch to the API Access tab (/api-access).
  2. Click "Generate New Key" to create a new API key.
  3. Give the key a descriptive name (e.g., "My App Production Key").
  4. Copy the generated key immediately — it is only shown once.
  5. Use the key in your API requests via the X-API-Key header.
  6. To rotate a key (generate a new one and invalidate the old), click "Rotate".
  7. 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

Admin

The User Management page is an admin-only dashboard for managing all platform users. View user activity, manage roles, and access user data.

User Management admin dashboard
User Management page: view all users, manage roles, and access user activity.

How to Use

  1. Open Admin from the sidebar — the Dashboard tab is user management.
  2. View all registered users with their email, role, and last activity.
  3. Click on a user to view their detailed profile and conversation history.
  4. Change a user's role — the roles are user, admin, and guest; subscription tiers were removed.
  5. Export user data for compliance or analysis.
  6. View per-user usage statistics and chat history.

📈 Analytics Dashboard

Admin

The Analytics Dashboard provides comprehensive insights into platform usage, performance, and user behavior. Data auto-refreshes every 60 seconds.

Analytics Dashboard with system health, cost analysis, and performance metrics
Analytics Dashboard: system health scores, cost analysis, feedback stats, and agent performance.

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

Admin

The 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.

Admin Metrics monitoring dashboard with system health and charts
Admin Metrics page: system health, token monitoring, cost tracking, and usage charts.

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

Dashboard data refreshes automatically every 30 seconds. Token monitoring data includes per-key quota consumption and estimated costs.

🖥️ Runtime Monitoring

Login Required

Runtime monitoring lets admins inspect node metadata, API metrics, model routing health, audits, and agent activity for the self-hosted deployment.

Runtime monitoring view showing node status and health
Monitoring views: inspect runtime health, node metadata, latency, and loaded model information.

How to Use

  1. Open Admin from the sidebar, then the MCP Monitoring tab.
  2. Review node status, latency, model metadata, and API usage trends.
  3. Use metrics and audit views to trace slow requests, tool calls, and agent activity.
  4. Check external provider and local gateway health before changing model routing.
  5. Runtime hosts are changed in server configuration, not in the UI — after changing them, verify health here.

💡Operational Tip

Keep the local gateway health endpoint and OpenMake metrics visible during model changes. It makes route, latency, and provider issues easier to diagnose.

🎓 Agent Learning

Login Required

The Agent Learning page shows AI quality metrics based on user feedback. Monitor agent performance, identify failure patterns, and track improvement over time.

Analytics dashboard showing feedback statistics and agent performance metrics
Agent performance and feedback analysis in Analytics: monitor quality scores, response metrics, and user feedback patterns.

What You Can See

  1. Agent quality scores per workflow and agent type.
  2. Failure pattern analysis — common error categories and their frequency.
  3. Improvement suggestions generated from feedback data.
  4. Feedback statistics: average rating, positive/negative ratio, response count.

📋 Audit Log

Admin

The Audit Log page provides a complete record of system activities for security and compliance monitoring.

Audit Log page with filterable system activity records
Audit Log page: track authentication events, API calls, admin actions, and system errors.

How to Use

  1. Open Admin from the sidebar, then the Audit Log tab.
  2. Filter logs by event type (login, API call, settings change, etc.).
  3. Filter by date range to narrow down the time period.
  4. Filter by user to see activity from a specific account.
  5. Browse entries with pagination — each entry shows timestamp, user, event type, and details.
  6. Audit logs capture: authentication events, API calls, admin actions, system errors, and configuration changes.

🔔 Alerts

Admin

The Alerts page displays system notifications and warnings that require administrator attention. Alerts are categorized by severity.

Alerts page showing system notifications categorized by severity
Alerts page: view and manage system alerts by severity — Info, Warning, Critical.

Alert Types

SeverityExamplesAction Needed
ℹ️ InfoSystem startup, node connected, model loadedNo action required — informational
⚠️ WarningQuota approaching limit, high latency, node degradedMonitor and plan capacity
🚨 CriticalAPI key exhausted, all nodes down, database connection lostImmediate action required
  1. Open Admin from the sidebar, then the Alerts tab.
  2. View all active alerts with their severity, timestamp, and description.
  3. Filter alerts by severity level (Info, Warning, Critical).
  4. Click on an alert for detailed information and resolution steps.

🔗 External MCP Servers

Admin

The 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.

Admin MCP catalog management page
Admin → MCP catalog: register, edit, and govern the external MCP servers offered to users.

How to Use

  1. Open Admin from the sidebar, then the MCP Catalog Admin tab.
  2. Click "Add MCP Server" to register a new external server.
  3. Enter the server URL and authentication details.
  4. Once connected, the server's tools become available in the MCP Tools page.
  5. View each server's available tools and their descriptions.
  6. Remove servers by clicking the delete icon.

🎭 Role Model Management

Admin

Admin → 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.

Admin role model management page assigning a model to each functional role
Admin → Role models: one model per role, with an unassigned role falling back to the server default.

💬 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

An external model can be assigned to a role only while its provider key is registered and active. If the call fails the request falls back to the local default model rather than erroring — the page states this directly above the selectors.

🗓️ Task Schedules

Admin

Admin → 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.

Admin task schedules page listing recurring agent tasks across all users
Admin → Task schedules: owner, goal, CRON trigger, state, next and last run, last result, and consecutive failures.

What Each Column Tells You

ColumnMeaning
OwnerThe user the schedule belongs to; the task runs with their permissions and their model mappings.
GoalThe goal text the agent is given on every run.
TriggerA CRON expression or a fixed interval — 0 7 * * * means 07:00 every day.
StateActive or paused. A paused schedule keeps its history but does not fire.
Next run / Last runWhen it fires next, and when it last did.
Last resultThe outcome of the most recent run, such as completed or failed.
Consecutive failuresHow 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.

Chat interface where keyboard shortcuts are used
The composer is where most of the shortcuts apply.
ShortcutWhereAction
EnterComposerSend the message
Shift + EnterComposerNew line without sending
↑ / ↓Composer suggestionsMove through the suggestion list
EscapeComposer mode sheetClose the mode sheet
EscapeAny detail panelClose the open panel on Agent Tasks, Custom Agents, or Skill Library
Ctrl/Cmd + EnterAgent task steering boxSend 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.