@clawnify/agent-control-ui 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +143 -0
- package/bin/agent-control-ui.mjs +164 -0
- package/dist/assets/index-C79LDykv.css +1 -0
- package/dist/assets/index-D1t_dgx4.js +307 -0
- package/dist/index.html +27 -0
- package/package.json +65 -0
- package/packaging/README.md +36 -0
- package/packaging/launchd/com.clawnify.agent-control-ui.plist +52 -0
- package/packaging/systemd/agent-control-ui.service +41 -0
package/dist/index.html
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<meta name="color-scheme" content="dark light" />
|
|
8
|
+
<title>Agent Control UI</title>
|
|
9
|
+
<script>
|
|
10
|
+
// Apply saved theme (or system fallback) before React mounts so the
|
|
11
|
+
// first paint matches.
|
|
12
|
+
try {
|
|
13
|
+
var saved = localStorage.getItem("agent-control-ui-theme") || "system";
|
|
14
|
+
var dark =
|
|
15
|
+
saved === "dark" ||
|
|
16
|
+
(saved === "system" &&
|
|
17
|
+
window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
18
|
+
if (dark) document.documentElement.classList.add("dark");
|
|
19
|
+
} catch {}
|
|
20
|
+
</script>
|
|
21
|
+
<script type="module" crossorigin src="/assets/index-D1t_dgx4.js"></script>
|
|
22
|
+
<link rel="stylesheet" crossorigin href="/assets/index-C79LDykv.css">
|
|
23
|
+
</head>
|
|
24
|
+
<body class="h-screen overflow-hidden">
|
|
25
|
+
<div id="root" class="h-full"></div>
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@clawnify/agent-control-ui",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "A designer's take on the OpenClaw agent Control UI.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/clawnify/agent-control-ui.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/clawnify/agent-control-ui#readme",
|
|
12
|
+
"bugs": "https://github.com/clawnify/agent-control-ui/issues",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"openclaw",
|
|
15
|
+
"agent",
|
|
16
|
+
"control-ui",
|
|
17
|
+
"chat",
|
|
18
|
+
"ai"
|
|
19
|
+
],
|
|
20
|
+
"bin": {
|
|
21
|
+
"agent-control-ui": "bin/agent-control-ui.mjs"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"bin",
|
|
25
|
+
"dist",
|
|
26
|
+
"packaging",
|
|
27
|
+
"README.md",
|
|
28
|
+
"LICENSE"
|
|
29
|
+
],
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@radix-ui/react-dialog": "^1.1.15",
|
|
32
|
+
"@radix-ui/react-popover": "^1.1.15",
|
|
33
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
34
|
+
"@tailwindcss/vite": "^4.3.0",
|
|
35
|
+
"class-variance-authority": "^0.7.1",
|
|
36
|
+
"clsx": "^2.1.1",
|
|
37
|
+
"lucide-react": "^1.16.0",
|
|
38
|
+
"react": "^19.0.0",
|
|
39
|
+
"react-dom": "^19.0.0",
|
|
40
|
+
"react-markdown": "^10.1.0",
|
|
41
|
+
"remark-gfm": "^4.0.1",
|
|
42
|
+
"tailwind-merge": "^3.6.0",
|
|
43
|
+
"tailwindcss": "^4.3.0",
|
|
44
|
+
"tw-animate-css": "^1.4.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@tailwindcss/typography": "^0.5.19",
|
|
48
|
+
"@types/node": "^25.8.0",
|
|
49
|
+
"@types/react": "^19.0.0",
|
|
50
|
+
"@types/react-dom": "^19.0.0",
|
|
51
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
52
|
+
"typescript": "^5.7.2",
|
|
53
|
+
"vite": "^6.0.0"
|
|
54
|
+
},
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=20"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"dev": "vite",
|
|
60
|
+
"build": "tsc -b && vite build",
|
|
61
|
+
"preview": "vite preview",
|
|
62
|
+
"typecheck": "tsc -b --noEmit",
|
|
63
|
+
"start": "node bin/agent-control-ui.mjs"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Packaging
|
|
2
|
+
|
|
3
|
+
Templates for running `@clawnify/agent-control-ui` as a long-running local
|
|
4
|
+
service.
|
|
5
|
+
|
|
6
|
+
## systemd (Linux VPS, Raspberry Pi, etc.)
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
sudo cp systemd/agent-control-ui.service /etc/systemd/system/
|
|
10
|
+
sudo systemctl daemon-reload
|
|
11
|
+
sudo systemctl enable --now agent-control-ui.service
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Pair it with the OpenClaw gateway service so both come up on boot:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
sudo systemctl enable --now openclaw-gateway agent-control-ui
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Edit `agent-control-ui.service` to set `User=`, `Group=`, and `ExecStart=`
|
|
21
|
+
to match your host (default assumes the `openclaw` user from a typical
|
|
22
|
+
OpenClaw install).
|
|
23
|
+
|
|
24
|
+
## launchd (macOS / Mac mini)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cp launchd/com.clawnify.agent-control-ui.plist ~/Library/LaunchAgents/
|
|
28
|
+
launchctl load ~/Library/LaunchAgents/com.clawnify.agent-control-ui.plist
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The path to `npx` differs by Mac CPU:
|
|
32
|
+
|
|
33
|
+
- Apple silicon: `/opt/homebrew/bin/npx`
|
|
34
|
+
- Intel: `/usr/local/bin/npx`
|
|
35
|
+
|
|
36
|
+
Logs go to `/tmp/agent-control-ui.{out,err}.log`.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
Launchd agent for @clawnify/agent-control-ui — auto-starts the local
|
|
4
|
+
static server on a Mac mini or any macOS host running OpenClaw.
|
|
5
|
+
|
|
6
|
+
Install:
|
|
7
|
+
cp packaging/launchd/com.clawnify.agent-control-ui.plist ~/Library/LaunchAgents/
|
|
8
|
+
launchctl load ~/Library/LaunchAgents/com.clawnify.agent-control-ui.plist
|
|
9
|
+
|
|
10
|
+
Stop / remove:
|
|
11
|
+
launchctl unload ~/Library/LaunchAgents/com.clawnify.agent-control-ui.plist
|
|
12
|
+
|
|
13
|
+
Logs:
|
|
14
|
+
tail -f /tmp/agent-control-ui.{out,err}.log
|
|
15
|
+
|
|
16
|
+
Adjust the ProgramArguments path if `npx` lives somewhere other than
|
|
17
|
+
/opt/homebrew/bin (Apple silicon) — /usr/local/bin on Intel Macs.
|
|
18
|
+
-->
|
|
19
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
20
|
+
<plist version="1.0">
|
|
21
|
+
<dict>
|
|
22
|
+
<key>Label</key>
|
|
23
|
+
<string>com.clawnify.agent-control-ui</string>
|
|
24
|
+
|
|
25
|
+
<key>ProgramArguments</key>
|
|
26
|
+
<array>
|
|
27
|
+
<string>/opt/homebrew/bin/npx</string>
|
|
28
|
+
<string>--yes</string>
|
|
29
|
+
<string>@clawnify/agent-control-ui</string>
|
|
30
|
+
</array>
|
|
31
|
+
|
|
32
|
+
<key>EnvironmentVariables</key>
|
|
33
|
+
<dict>
|
|
34
|
+
<key>PORT</key>
|
|
35
|
+
<string>5174</string>
|
|
36
|
+
<key>HOST</key>
|
|
37
|
+
<string>127.0.0.1</string>
|
|
38
|
+
</dict>
|
|
39
|
+
|
|
40
|
+
<key>RunAtLoad</key>
|
|
41
|
+
<true/>
|
|
42
|
+
|
|
43
|
+
<key>KeepAlive</key>
|
|
44
|
+
<true/>
|
|
45
|
+
|
|
46
|
+
<key>StandardOutPath</key>
|
|
47
|
+
<string>/tmp/agent-control-ui.out.log</string>
|
|
48
|
+
|
|
49
|
+
<key>StandardErrorPath</key>
|
|
50
|
+
<string>/tmp/agent-control-ui.err.log</string>
|
|
51
|
+
</dict>
|
|
52
|
+
</plist>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Systemd unit for @clawnify/agent-control-ui — runs the local static
|
|
2
|
+
# server on boot.
|
|
3
|
+
#
|
|
4
|
+
# Install:
|
|
5
|
+
# sudo cp packaging/systemd/agent-control-ui.service /etc/systemd/system/
|
|
6
|
+
# sudo systemctl daemon-reload
|
|
7
|
+
# sudo systemctl enable --now agent-control-ui.service
|
|
8
|
+
#
|
|
9
|
+
# Status:
|
|
10
|
+
# systemctl status agent-control-ui
|
|
11
|
+
# journalctl -u agent-control-ui -f
|
|
12
|
+
#
|
|
13
|
+
# Pair with the existing openclaw-gateway service:
|
|
14
|
+
# sudo systemctl enable --now openclaw-gateway agent-control-ui
|
|
15
|
+
#
|
|
16
|
+
# Tweak User=, Group=, ExecStart= path, and Environment= to match your setup.
|
|
17
|
+
|
|
18
|
+
[Unit]
|
|
19
|
+
Description=OpenClaw Agent Control UI — local web client for the gateway
|
|
20
|
+
After=network.target
|
|
21
|
+
# Optional: only start after the gateway is up.
|
|
22
|
+
# Wants=openclaw-gateway.service
|
|
23
|
+
# After=openclaw-gateway.service
|
|
24
|
+
|
|
25
|
+
[Service]
|
|
26
|
+
Type=simple
|
|
27
|
+
User=openclaw
|
|
28
|
+
Group=openclaw
|
|
29
|
+
ExecStart=/usr/bin/npx --yes @clawnify/agent-control-ui
|
|
30
|
+
Environment=PORT=5174
|
|
31
|
+
Environment=HOST=127.0.0.1
|
|
32
|
+
Restart=on-failure
|
|
33
|
+
RestartSec=5
|
|
34
|
+
# Hardening
|
|
35
|
+
NoNewPrivileges=true
|
|
36
|
+
ProtectSystem=strict
|
|
37
|
+
ProtectHome=true
|
|
38
|
+
PrivateTmp=true
|
|
39
|
+
|
|
40
|
+
[Install]
|
|
41
|
+
WantedBy=multi-user.target
|