Skip to main content

Configuration (Admin)

Configuration is visible to admin accounts only. Access it via the gear icon at the bottom of the sidebar (fa-gear, Configuration). Admin-only menus are grouped in the same area.

IconMenuContent
fa-usersUser ManagementAccount creation, roles, passwords
fa-chart-columnStatisticsUsage, activity, deployment, audit logs
fa-gearConfigurationSeven tabs below

Configuration is organized by tabs at the top. The entire configuration is saved by a single [Save] button at the bottom of the screen (when saved, a checkmark appears next to it ✓ 저장됨). However, theme, language, logo, and product name on the General tab apply immediately and do not require separate saving.

Secrets are managed via environment variables

When API keys or tokens are injected as server environment variables, the corresponding input field is locked and displays a 환경변수로 관리 중 badge with the message "Injected from environment variable (cannot be changed here)." To change a value, edit .env on the server and restart. See Secret Management for the procedure.


General (fa-sliders)

What it affects — The Studio screen you see and branding visible to all users.

  • Theme — Light / Dark. Applies immediately and is saved only in this browser.
  • Language — Korean / English. Similarly a personal setting.
  • Branding (White Label) — Changes made here apply to all users.
    • Logo — png/svg/jpg/webp · up to 512 KB. Applied to the sidebar, login screen, and gallery. Use Restore Default to revert.
    • Product Display Name — If left blank, displayed as PlantPulse Studio.
tip

A square-shaped transparent background PNG/SVG logo looks cleanest (displayed at 24px in the sidebar).


AI Provider (fa-microchip-ai)

What it affects — Chat responses and the entire app creation process. Nothing works if this is empty.

Choose from three providers; each stores model, Base URL, and key separately. Switching providers preserves previous settings.

ProviderModel Input ExampleBase URL
Anthropic (Claude)claude-fable-5 · claude-opus-4-8 · claude-sonnet-5None required
OpenAIgpt-4o · gpt-4.1 · o3Optional (default https://api.openai.com/v1)
OpenAI-CompatibleModel name provided by your serverRequired — e.g. http://vllm-host:8000/v1
  • API Key — If already saved, a 설정됨 badge appears; leaving it blank preserves the existing key.
  • Test Connection (fa-plug-circle-check) — Tests the values currently entered on this screen against the provider in real time. You can press it before saving, and saving is not required. A green checkmark indicates success; a red mark shows the failure reason.
If you added a key but chat won't work, start here

In earlier versions, this button existed only on the Platform tab, so the AI tab required saving first to test via chat. Now it confirms before saving — catching address typos, expired keys, and downed gateways immediately.

Recommended

In air-gapped networks, choose OpenAI-Compatible and point it to an in-house vLLM or Ollama gateway to operate without external communication.


Agent Behavior (fa-robot)

What it affects — How the agent builds apps and the consistency of results.

  • Default Prompt (Operator Instructions) — Appended to the system prompt of all conversations (max 4000 characters). Write internal rules, preferred libraries, and screen style guidelines. Example: "Place the company logo at the top of every screen. Standardize chart colors to navy tones."
  • Builder Engine내장 엔진 (기본) / OpenHands 사이드카 (추천). Affects app builds only, not chat (queries). If a sidecar is deployed, OpenHands handles complex edits better.
  • Vision Self-Validation — At the end of each turn, the AI reviews a screenshot to self-correct layout issues. Quality improves but token consumption increases.
  • Max Tool Steps per Turn — 4–48, default 24. Upper limit on how many times the agent can read and edit files in one request. If "max steps exceeded" appears frequently on complex apps, raise it to around 32.
  • Max Response Tokens — 1,000–200,000, default 128000. Too low truncates long code mid-stream.

Build Standards

Fixes the generated app's tech stack and layout to prevent the agent from deviating arbitrarily. The standard stack (React + Vite · TypeScript · ECharts wrapper · TanStack Query · AppShell/Grid/Section · HashRouter) is shown read-only.

  • Dependency Lock — Prevents new npm package installation. Recommended to enable (installation fails in air-gapped networks, breaking the build).
  • Layout Convention Enforcement — Validates that all screens use the common AppShell and self-corrects violations.
  • Allowed Exception Packages — Comma-separated (e.g. leaflet, framer-motion). These bypass the lock and are allowed to install.
  • App Default Layout (New Apps) — Product name, header color (e.g. #0e2a4e), max width (px, default 1280), footer text. Applies only to newly created apps; existing apps are not retroactively updated.

Runtime (Server Global) (fa-server)

What it affects — Server resources and app access addresses. Common to all users.

  • Concurrent App Limit — 1–32, default 8. Number of dev sessions that can run simultaneously. Set based on server memory (one dev server per session).
  • Auto-Stop on Idle (minutes) — 0–1440, default 30. Stops a session after that duration of inactivity to reclaim resources. 0 = no auto-stop. Work is preserved when stopped; it resumes when reopened.
App Origin setting has been removed

Versions before 2026-08-23 had an App Origin field on this tab to specify the public URL for preview and deployed apps. Now apps are served from the same domain under /container/, so there is nothing to configure.

If you were looking for this field based on older documentation, see Domain and Reverse Proxy.

App Image Registry

The target registry for building and pushing deployed versions as container images. The Image Push button in the Builder deployment drawer uses this setting; if empty, that button shows "Not configured."

  • Registry URL (e.g. registry.kopens.io) · Namespace (e.g. plantpulse-apps) · Username · Access Token
  • If a token is already saved, 저장됨 — 변경 시에만 입력 is displayed.

Platform Integration (fa-plug)

What it affects — Real data. Without this key, you cannot query sites, equipment, or tags, so apps are generated with dummy data.

  • Platform API Key — Paste the X-API-Key issued by the Platform. If already present, shown as 설정됨; if injected via environment variable, locked with 환경변수로 관리 중.
  • Test Connection — Verifies the key is valid before saving. Success shows 연결됨; failure displays the reason as-is.

Platform connection status is always visible in the status bar at the bottom of the screen (Connected / Response Error / Disconnected).


Git Integration (fa-code-branch)

What it affects — Whether to store created app source code in a customer repository.

  • GitLab / GitHub selection — Choosing GitHub locks the server URL to https://github.com.
  • Server URL (e.g. https://dev.kopens.io) · Namespace (Group/Organization) (e.g. kopens/apps)
  • Username (optional) — If left blank, uses the default oauth2 for authentication.
  • Access Tokenglpat-… / ghp_…. Leaving blank when already saved preserves the existing token.
  • Auto-Push on Deployment — Pushes to the remote Git project whenever an app is deployed. Enable if your organization requires version control.

MCP (fa-diagram-project)

What it affects — The range of tools available to the agent.

Exposes tools from MCP servers to the agent. Beyond the built-in Platform server, you can add external MCP servers (Streamable HTTP); newly discovered tools are automatically reflected (enabled by default).

  • Server List — Each row shows status LED, name, address, 도구 n개, and an active checkbox. Built-in servers have a 내장 badge. Click a row to expand that server's tool list below.
  • Add MCP Server — Enter ID, name, URL, auth header, and token.
  • Per-Tool Exposure — Each tool has three separate toggles: Active / Chat / Builder. Useful when you want a tool in chat only, not builds.
  • Rediscover Tools — If you added tools to an external server but don't see them listed, press this. If "No tools discovered" appears, check server connectivity.
  • Conflicts — If two servers have tools with the same name, the first registered wins and the later one is not exposed.
note

External MCP server addresses must end with a slash (e.g. https://host/mcp/). Missing it causes connection failure.


User Management

Access via the sidebar fa-users. The table shows ID, Name, Role, Source, Created Date.

Roles are three types:

RolePermissions
AdminEverything — configuration, user management, statistics
BuilderCreate, edit, deploy apps; manage watchers and skills
ViewerRead-only — cannot create apps ("Viewer role cannot create apps")

Accounts with a source of 환경변수 were created by server configuration and cannot be edited or deleted from the UI. Only 스튜디오 accounts permit:

  • Add User — Enter ID, password, name, role
  • Change Role · Reset Password (6 characters minimum) · Delete
  • Click the picture in the list to change the avatar

Statistics

Access via the sidebar fa-chart-column. Choose period: 7 days / 30 days / 90 days.

Five KPIs at the top: Total Apps, Deployed Apps, Conversations, Active Skills, Plant Scale (site count, tag count).

TabContent
AI UsageAgent turns, input/output tokens; by day, user, project; builder engine comparison
ActivityDaily activity (by action), most active users, recent major events
AppsNew app trends, deployment status, top deployed apps, template popularity
ChatDaily question count, users with most questions
DeploymentDeployment attempts, successes, failures; daily success/failure rate; recent deployment history
Audit LogTime, user, action, target, details (searchable)
Monthly inspection checklist

If tokens spike in AI Usage, the watcher interval may be too short or 'Vision Self-Validation' was enabled during large builds. Check Deployment failure count alongside Troubleshooting.