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.
| Icon | Menu | Content |
|---|---|---|
fa-users | User Management | Account creation, roles, passwords |
fa-chart-column | Statistics | Usage, activity, deployment, audit logs |
fa-gear | Configuration | Seven 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.
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.
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.
| Provider | Model Input Example | Base URL |
|---|---|---|
| Anthropic (Claude) | claude-fable-5 · claude-opus-4-8 · claude-sonnet-5 | None required |
| OpenAI | gpt-4o · gpt-4.1 · o3 | Optional (default https://api.openai.com/v1) |
| OpenAI-Compatible | Model name provided by your server | Required — 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.
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.
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
AppShelland 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.
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-Keyissued 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
oauth2for authentication. - Access Token —
glpat-…/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.
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:
| Role | Permissions |
|---|---|
| Admin | Everything — configuration, user management, statistics |
| Builder | Create, edit, deploy apps; manage watchers and skills |
| Viewer | Read-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).
| Tab | Content |
|---|---|
| AI Usage | Agent turns, input/output tokens; by day, user, project; builder engine comparison |
| Activity | Daily activity (by action), most active users, recent major events |
| Apps | New app trends, deployment status, top deployed apps, template popularity |
| Chat | Daily question count, users with most questions |
| Deployment | Deployment attempts, successes, failures; daily success/failure rate; recent deployment history |
| Audit Log | Time, user, action, target, details (searchable) |
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.