Edge Fleet
The field device list, seven tabs per device (Overview, Models, Records, Inference results, Files, Commands, Policy), model deployment and confirmation, device registration and Offline blocking.
Required permission: View
This screen manages the devices (Edge) installed in factories and on site. A device connects to the platform with the Edge SDK, periodically sends a heartbeat (a sign that it is alive, with CPU and memory usage), uploads collected data, inference results and files, and fetches and runs the commands the platform sends.
Every member can view; restart, Offline, sending commands, removing a cached model and viewing logs need operate (OPERATOR, ADMIN); deploying a model, switching and reapplying need deploy (OPERATOR, ADMIN); rolling a deployment back needs rollback (ADMIN); and registering and deleting devices, editing locations, tokens and saving the policy need settings (ADMIN).
Device list
| # | Area | Description |
|---|---|---|
| ① | Search | Find by device name or location. |
| ② | Status filter | All · Pending · Healthy · Unhealthy · Uninstalled (전체 · 연결 대기 · 정상 · 비정상 · 미설치). |
| ③ | Register device (디바이스 등록) | Registers a new device and issues a token (settings). |
| ④ | Status (상태) | Device status. A device blocked at the server also gets a red Blocked (Offline) (Offline 차단됨). |
| ⑤ | Backlog | Number of items piled up on the device and not sent yet. If any items were dropped for exceeding the retention limit in the last 24 hours, a red −N is attached. Older agents that do not report this show —. |
| ⑥ | Sync (동기화) | The device's transfer state — Idle · Sending · Paused · Offline · Auth failed (대기 · 전송 중 · 일시정지 · 오프라인 · 인증 실패). Hover to see the last transfer error. |
The other columns are device, location, last heartbeat (없음 (none) if no heartbeat has ever arrived) and CPU, GPU and MEM (usage from the last heartbeat). Click the device or last heartbeat header to sort. Click a row to open the device detail.
Register a device
- Press Register device (디바이스 등록).
- Enter the device ID (디바이스 ID) (required) and location (위치) (optional), and choose the token scopes (스코프) (what the token is allowed to do) — telemetry (heartbeats, collected records), inference (inference results), container (pulling images), model (model lookup), file (uploading files piled up while offline). All are on by default; at least one is required.
Register a device — ID, location and token scopes; the token is shown only once - When you press Register (등록), the device token is shown only once. Copy it into the device's configuration. Once you close the window you cannot see it again. If you lose it, you must rotate the token.
Device detail — Overview
| # | Area | Description |
|---|---|---|
| ① | Title | Device ID, status, Blocked (Offline) (Offline 차단됨) for a blocked device, Live (실시간) (changes show up at once) or Polling 10s (폴링 10초) (refetches every 10 seconds), and N pending commands (대기 명령 N) if there are commands not yet fetched. |
| ② | Actions | Restart (재시작) (operate; queues a restart command after a confirmation), Offline (Offline) (operate, blocks at the server; while blocked it turns into a red Release offline (Offline 해제)), Delete (삭제) (settings; enabled only after live tokens are revoked. Heartbeats, records, inference results and command history are deleted with it; uploaded files stay in their datasets and in collected data). |
| ③ | Tabs | Overview (개요) · Model (모델) · Records (레코드) · Inference results (추론 결과) · Files (파일) · Commands (명령) · Policy (정책). The selected tab stays in the address (?tab=). |
| ④ | Device info (디바이스 정보) | OS, SDK and agent versions, location (Edit location (위치 편집), settings), last heartbeat, policy revision (the policy version number). It reads N (적용됨) (applied) when the device reports the same revision, and N (장치는 M — 적용 대기) (device on M, pending) when it differs. |
| ⑤ | Resources | CPU, GPU, MEM and DISK usage (refreshed every 30 seconds). |
| ⑥ | Backlog (쌓인 데이터) | Pending count and size, oldest item, dropped in 24 hours, sync state, last transfer. The last transfer error, if any, is shown in red. |
| ⑦ | Token management (토큰 관리) | Visible to settings only. Rotate (회전) (invalidates the current token at once and shows a new one only once), Revoke (회수) (discards the token; the device fails authentication at once), view and edit scopes (only while a token is active; the token itself is kept). Rotate and revoke ask for confirmation. |
The overview also has these cards:
- Local models (로컬 모델): a summary of the models and versions the device reported. The running version is marked Running (실행 중), a version on the device that could not be loaded Load failed (로드 실패), and a model the device program runs outside the SDK External (외부). The badge next to the title says whether the running model matches the deployment. Deploying, switching and rolling back happen on the Models tab, reached through Manage on the Models tab (모델 탭에서 관리).
- Collectors (수집기): collectors configured on the device and their state. A failing collector shows Error (오류); hover for the reason.
- Containers (컨테이너): images installed on the device. When the registry address can be parsed, it links to the container registry.
- Logs (recent heartbeats) (로그(최근 하트비트)) (
operate): heartbeat payloads, newest first. Load more (더 보기) loads older ones.
Device detail — Models
The tab for seeing which model was deployed to the device, confirming that the device actually runs it, and deploying, rolling back or tidying the cache.
| # | Area | Description |
|---|---|---|
| ① | Deployment status (배포 현황) | The match badge (table below), the desired model (the newest deployment) with its progress, the running model (as the device reports it), the confirmation time (when the device's heartbeat first reported the desired model active) and the last report time. When the newest deployment failed, its error is shown in red. |
| ② | Actions | Deploy model (모델 배포) (deploy; pick a model and version from the model registry), Reapply (다시 적용) while Drift (불일치) (deploy; deploys the desired model again), Revert (되돌리기) (rollback; a new deployment of the model the device was running when the newest deployment was requested). All three ask for confirmation. |
| ③ | Models on the device (장비 보유 모델) | Every model the device reported. Columns are model, framework, task, state (Running (실행 중), Cached (보관), Loading (올리는 중), Load failed (로드 실패); Details (자세히) shows the error of a failed load), source (Cache (캐시) for a version the SDK pulled, External (외부) for a model the device program runs itself). A cached version that is not running has Switch to this version (이 버전으로 전환) (deploy; a deployment of that version) and a bin icon (operate; a command that removes it from the device cache, disabled for the running and the desired version). |
| ④ | Deployment history (배포 이력) | Deployments made to this device. Columns are model, kind (Deploy (배포), Rollback (되돌리기), Reapply (다시 적용)), state, requester, requested and confirmed times, and progress. Details (자세히) under progress opens the step timeline (queued → delivered → applied → confirmed), the previous model, what the device reported and a link to the Commands tab. The select above filters by state. |
Match badge:
| Badge | Value | Meaning |
|---|---|---|
| No deployment (배포 없음) | none | Nothing was ever deployed to this device |
| Applying (적용 중) | pending | The newest deployment is on its way |
| In sync (일치) | in_sync | Confirmed, and the last heartbeat still reports that model running |
| Drift (불일치) | drift | Confirmed, but the device now runs something else (switched on the device, or a different version came up after a restart). Reapply (다시 적용) restores it |
| Failed (실패) | failed | The newest deployment failed. Check the error and deploy again |
State of one deployment:
| Badge | Value | Meaning |
|---|---|---|
| Queued (대기 중) | queued | The command is in the queue; the device has not fetched it |
| Delivered (전달됨) | delivered | The device fetched the command |
| Applied (적용됨) | applied | The device reported that it pulled and activated the version |
| Confirmed (확인됨) | confirmed | The device's heartbeat reported that version running. Nobody clicks a confirm button |
| Failed (실패) | failed | The device reported a failure (pull failed, load failed) or the command expired |
| Superseded (대체됨) | superseded | A newer deployment to the same device cancelled this one |
Other tabs
Records (레코드) — structured records the device uploaded (time, kind, priority, payload). The payload is shortened to one line; Details (자세히) expands the full JSON. New records keep arriving; turn off Follow latest (최신 고정) (the button then reads 최신 고정 꺼짐 (follow off)) to freeze the list. While frozen, a button shows how many records arrived; press it to return to the latest. Load more (더 보기) at the bottom loads older records and freezes the list. Filter by kind with the select box at the top; its choices are the kinds seen in the loaded records.
Inference results (추론 결과) — time, model, latency (ms) and result (JSON) of inferences run on the device. Click the model to open that version in the model registry. Follow latest (최신 고정) and Load more (더 보기) work as on the records tab.
Files (파일) — files that piled up while offline and were then uploaded. The columns are file (name, plus the kind the collector assigned), size, chunks (chunks received / total), state (with the reason when failed), where the file is kept, and last update. A file uploaded with a dataset links to Open dataset (데이터셋 열기), one without to View in collected data (수집 데이터에서 보기). Filter by transfer state with the select box at the top. The Collected data screen shows every device's files in one place.
Commands (명령) — commands sent to the device and their results. The device usually sits behind NAT, so the server cannot connect to it first. A command goes into a queue, and the device fetches it the next time it asks. The table columns are command, state, queued and delivered times, and result. The result is a one-line summary (the error text if it failed); Details (자세히) shows the full arguments and result. Saving the policy queues a set_policy command automatically, which also appears here.
| # | Area | Description |
|---|---|---|
| ① | Command type | Ping (핑) (check that it is alive), Restart (재시작) (restart the agent; asks for confirmation), Resync (재동기화) (put items that were folded as failed back into the send queue), Pull model (모델 내려받기) (pick a model name, then a version, from the model registry to download and activate; if the model feature is off or the list cannot be loaded, type the name and version). |
| ② | Send command (명령 보내기) | Puts the command in the queue (operate). For pull model it enables only once both name and version are set. |
Filter the command table by state with the select box above it.
Policy (정책) — the device's behavior settings. Only ADMIN (settings) changes them. For other roles the fields are read-only, with the note "정책은 테넌트 ADMIN 만 바꿀 수 있습니다." (only a tenant ADMIN can change the policy). Pressing ① Save policy (정책 저장) increments the policy revision (its version number), and the device notices the change in its next heartbeat response and fetches the new policy. A set_policy command is queued as well, so the device does not have to wait for a heartbeat.
| Item | Default | Description |
|---|---|---|
| Heartbeat interval (s) (하트비트 주기 (초)) | 30 | Must be well below the server's offline threshold (180 seconds). |
| Retention period (days) (보존 기간 (일)) | 30 | How long the device keeps queued data. 0 means no limit. |
| Retention size (GiB) (보존 용량 (GiB)) | 50 | The most queued data the device keeps. When exceeded, items with the lowest priority and oldest age are dropped first. |
| Transfer rate limit (B/s) (전송 속도 상한 (B/s)) | 0 | 0 means unlimited. |
| CPU pause threshold (%) (CPU 일시정지 임계 (%)) | 85 | Transfers pause when CPU exceeds this value. 0 disables the check. |
| Allowed transfer windows (전송 허용 시간대) | (empty) | Empty means always. Example: 22:00-06:00 (separate several with commas). |
The server setting edge_default_policy can change these defaults. Below the fields, the rest of the policy that this screen does not edit (command poll interval, minimum free disk, upload batch size, upload chunk size, concurrent transfers, urgent priority threshold) is shown read-only.
Statuses and badges
Device status:
| Badge | Value | Meaning |
|---|---|---|
| Pending (연결 대기) | PENDING | Registered, but no heartbeat has ever arrived |
| Healthy (정상) | ACTIVE | A heartbeat arrived within the last 180 seconds |
| Unhealthy (비정상) | UNHEALTHY | The last heartbeat is older than 180 seconds. A WARNING alert is then created; when heartbeats arrive again, the device returns to Healthy and the alert clears by itself. |
| Uninstalled (미설치) | UNINSTALLED | Marked as a device whose installation was removed. Currently no screen or API sets this state |
Command status:
| Badge | Value | Meaning |
|---|---|---|
| Queued (대기 중) | queued | Waiting for the device to fetch it |
| Delivered (전달됨) | delivered | The device fetched it |
| Completed (완료) | acked | The device reported success |
| Failed (실패) | failed | The device reported failure |
| Expired (만료) | expired | Not fetched within 24 hours (a device that was off for a long time) |
File transfer status: Transferring · Assembling · Completed · Failed (전송 중 · 조립 중 · 완료 · 실패). A file that stays in transferring or assembling for 7 days turns into failed.
By default the server deletes records and inference results 90 days after their record time, finished commands after 90 days, and finished file transfer entries after 30 days. Files that went into a dataset or collected data stay when their transfer entry is deleted.
Offline blocking
To cut a device off for a while (maintenance, suspicious behavior), press Offline (Offline) on the overview.