Scan Report
15 /100
pixel-agents
Real-time pixel art ops dashboard for OpenClaw deployments
Legitimate OpenClaw monitoring dashboard with documented shell execution for build/deploy and remote service management via SSH. No hidden malicious behavior detected.
Safe to install
Accept for use. If remote agents use SSH password authentication, consider switching to key-based auth for better security.
Findings 2 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Plaintext SSH passwords in remote agent config Credential Theft | server/configLoader.ts:26 |
| Low | execSync for systemctl commands Priv Escalation | server/services.ts:47 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | READ | READ | ✓ Aligned | Reads ~/.openclaw/agents and config files |
| Network | READ | READ | ✓ Aligned | Curl check to gateway URL |
| Shell | WRITE | WRITE | ✓ Aligned | npm install/build, systemctl, sshpass/ssh |
| Environment | NONE | READ | ✓ Aligned | Reads ENV_VAR placeholders in config |
| Skill Invoke | NONE | NONE | — | No skill invocation detected |
| Clipboard | NONE | NONE | — | No clipboard access |
| Browser | NONE | NONE | — | No browser automation |
| Database | NONE | NONE | — | No direct database access |
10 findings
Medium External URL 外部 URL
https://openclaw.ai README.md:3 Medium External URL 外部 URL
https://opencollective.com/babel package-lock.json:91 Medium External URL 外部 URL
https://opencollective.com/express package-lock.json:1425 Medium External URL 外部 URL
https://opencollective.com/browserslist package-lock.json:1436 Medium External URL 外部 URL
https://tidelift.com/funding/github/npm/browserslist package-lock.json:1440 Medium External URL 外部 URL
https://tidelift.com/funding/github/npm/caniuse-lite package-lock.json:1512 Medium External URL 外部 URL
https://paulmillr.com/funding/ package-lock.json:1563 Medium Wallet Address 加密货币钱包地址
347pnakNevPmiHhNmZ2HbFA76w package-lock.json:2257 Medium External URL 外部 URL
https://opencollective.com/postcss/ package-lock.json:2378 Medium External URL 外部 URL
https://tidelift.com/funding/github/npm/postcss package-lock.json:2382 File Tree
81 files · 701.4 KB · 23240 lines TypeScript 66f · 16453L
JSON 7f · 6129L
Markdown 4f · 294L
Shell 1f · 222L
CSS 1f · 67L
JavaScript 1f · 62L
HTML 1f · 13L
├─
▾
bin
│ └─
pixel-agents.cjs
JavaScript
├─
▾
public
│ └─
▾
assets
│ ├─
ASSET-LICENSE.md
Markdown
│ └─
default-layout.json
JSON
├─
▾
server
│ ├─
assetLoader.ts
TypeScript
│ ├─
config.ts
TypeScript
│ ├─
configLoader.ts
TypeScript
│ ├─
hardware.ts
TypeScript
│ ├─
index.ts
TypeScript
│ ├─
openclawParser.ts
TypeScript
│ ├─
services.ts
TypeScript
│ ├─
sessionWatcher.ts
TypeScript
│ ├─
setupWizard.ts
TypeScript
│ ├─
spawner.ts
TypeScript
│ └─
version.ts
TypeScript
├─
▾
skill
│ ├─
▾
scripts
│ │ └─
setup.sh
Shell
│ └─
SKILL.md
Markdown
├─
▾
src
│ ├─
▾
components
│ │ ├─
ActivityBubble.tsx
TypeScript
│ │ ├─
ActivityTicker.tsx
TypeScript
│ │ ├─
AgentLabels.tsx
TypeScript
│ │ ├─
BottomToolbar.tsx
TypeScript
│ │ ├─
BreakerPanel.tsx
TypeScript
│ │ ├─
ConversationHeat.tsx
TypeScript
│ │ ├─
DayNightCycle.tsx
TypeScript
│ │ ├─
DebugView.tsx
TypeScript
│ │ ├─
FireAlarm.tsx
TypeScript
│ │ ├─
HamRadio.tsx
TypeScript
│ │ ├─
NickDesk.tsx
TypeScript
│ │ ├─
OfficeDoor.tsx
TypeScript
│ │ ├─
ServerRack.tsx
TypeScript
│ │ ├─
SessionInfoPanel.tsx
TypeScript
│ │ ├─
SettingsModal.tsx
TypeScript
│ │ ├─
SpawnButton.tsx
TypeScript
│ │ ├─
SpawnChat.tsx
TypeScript
│ │ └─
ZoomControls.tsx
TypeScript
│ ├─
▾
hooks
│ │ ├─
useEditorActions.ts
TypeScript
│ │ ├─
useEditorKeyboard.ts
TypeScript
│ │ ├─
useExtensionMessages.ts
TypeScript
│ │ ├─
useOpenClawEvents.ts
TypeScript
│ │ └─
useSpawnedSessions.ts
TypeScript
│ ├─
▾
office
│ │ ├─
▾
components
│ │ │ ├─
index.ts
TypeScript
│ │ │ ├─
OfficeCanvas.tsx
TypeScript
│ │ │ └─
ToolOverlay.tsx
TypeScript
│ │ ├─
▾
editor
│ │ │ ├─
editorActions.ts
TypeScript
│ │ │ ├─
editorState.ts
TypeScript
│ │ │ ├─
EditorToolbar.tsx
TypeScript
│ │ │ └─
index.ts
TypeScript
│ │ ├─
▾
engine
│ │ │ ├─
characters.ts
TypeScript
│ │ │ ├─
gameLoop.ts
TypeScript
│ │ │ ├─
index.ts
TypeScript
│ │ │ ├─
matrixEffect.ts
TypeScript
│ │ │ ├─
officeState.ts
TypeScript
│ │ │ └─
renderer.ts
TypeScript
│ │ ├─
▾
layout
│ │ │ ├─
furnitureCatalog.ts
TypeScript
│ │ │ ├─
index.ts
TypeScript
│ │ │ ├─
layoutSerializer.ts
TypeScript
│ │ │ └─
tileMap.ts
TypeScript
│ │ ├─
▾
sprites
│ │ │ ├─
index.ts
TypeScript
│ │ │ ├─
spriteCache.ts
TypeScript
│ │ │ └─
spriteData.ts
TypeScript
│ │ ├─
colorize.ts
TypeScript
│ │ ├─
floorTiles.ts
TypeScript
│ │ ├─
toolUtils.ts
TypeScript
│ │ ├─
types.ts
TypeScript
│ │ └─
wallTiles.ts
TypeScript
│ ├─
apiBase.ts
TypeScript
│ ├─
App.tsx
TypeScript
│ ├─
constants.ts
TypeScript
│ ├─
index.css
CSS
│ ├─
main.tsx
TypeScript
│ ├─
notificationSound.ts
TypeScript
│ └─
vscodeApi.ts
TypeScript
├─
dashboard.config.example.json
JSON
├─
index.html
HTML
├─
package-lock.json
JSON
├─
package.json
JSON
├─
README.md
Markdown
├─
SKILL.md
Markdown
├─
tsconfig.app.json
JSON
├─
tsconfig.json
JSON
├─
tsconfig.node.json
JSON
└─
vite.config.ts
TypeScript
Dependencies 5 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
express | ^5.1.0 | npm | No | Acceptable stability risk |
react | ^19.2.0 | npm | No | Latest major version |
ws | ^8.18.0 | npm | No | Well-maintained websocket library |
tsx | ^4.19.0 | npm | No | TypeScript execution |
chokidar | ^4.0.0 | npm | No | File watching |
Security Positives
✓ No base64-encoded payloads or obfuscated code found
✓ No data exfiltration or C2 communication patterns detected
✓ No credential harvesting beyond documented remote agent SSH access
✓ No suspicious network connections to unknown IPs
✓ No reverse shell, RCE, or malicious payload delivery
✓ Dependencies are well-known, mainstream packages
✓ SSH commands are scoped to systemctl for specific services only
✓ Config supports environment variable substitution for secrets
✓ No hidden functionality in HTML comments or other concealment