Commit dc1a4f86 authored by Lisa's avatar Lisa

license: switch node agent bundle sources to GPLv3 headers

parent b8c862e4
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Deploying the Windows Installer
## Quick Deploy
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
MIT License
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (c) 2026 Lisa (Hermes AI) / OpenClaw Project
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
This project is licensed under the GNU General Public License version 3
or (at your option) any later version.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
You should have received a copy of the GNU General Public License along
with this program. If not, see <https://www.gnu.org/licenses/>.
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......@@ -204,7 +207,50 @@ All messages are JSON over WebSocket.
### Capability Registration
Node registers `browser_control` in capabilities during registration:
## Camera Control
**Optional capability** — phase-1 Linux support uses `ffmpeg` + V4L2 (`/dev/video*`). The node only advertises `camera_control` in its `tools` list when `enable_camera_control` is true *and* a usable camera backend/device is present at runtime.
### Actions
- `list_cameras` — enumerate detected camera devices and probe metadata
- `get_camera_status` — current camera backend readiness and discovered devices
- `capture_frame` — grab a single still frame from a selected/default device
- `capture_video` — record a short video clip from a selected/default device
### Gateway → Node: Camera Control
```json
{
"type": "camera_control",
"id": "camera-a1b2c3d4",
"action": "capture_frame",
"params": {
"device": "/dev/video0",
"format": "png",
"width": 1280,
"height": 720
}
}
```
### Node → Gateway: Camera Control Result
```json
{
"type": "camera_control_result",
"id": "camera-a1b2c3d4",
"action": "capture_frame",
"success": true,
"device": "/dev/video0",
"format": "png",
"path": "/tmp/hermes-camera-1714392000.png",
"size_bytes": 123456,
"data_base64": "..."
}
```
Node registers optional tools in its `tools` list during registration and exposes structured readiness metadata under `capabilities`. Existing siblings include `browser_control`, `computer_control`, `desktop_observe`, `audio_control`, and `camera_control`.
```json
{
......@@ -230,7 +276,8 @@ Node registers `browser_control` in capabilities during registration:
"token": "node-sissy-secret-token-abc123",
"sexec_path": "/home/openclaw/.openclaw/skills/sexec/sexec.sh",
"reconnect_interval": 5,
"heartbeat_interval": 30
"heartbeat_interval": 30,
"enable_camera_control": false
}
```
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Agent
**Version:** 2.0
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Windows Installer — Complete Setup Summary
## What Was Built
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
#!/usr/bin/env python3
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
#!/usr/bin/env python3
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......@@ -40,6 +46,24 @@ tar czf hermes-node-agent-linux.tar.gz hermes-node-agent/
mv hermes-node-agent-linux.tar.gz "$OLDPWD/dist/"
cd "$OLDPWD"
# Re-embed the packaged payload into the self-contained Linux installer wrapper
python3 <<'PY'
import base64, pathlib, re
src = pathlib.Path('dist/hermes-node-agent-linux.tar.gz').read_bytes()
b64 = base64.b64encode(src).decode('ascii')
installer_path = pathlib.Path('package-hermes-node-agent/deploy/install-node.sh')
text = installer_path.read_text()
pattern = r"(cat <<'TARBALL_DATA' \| base64 -d \| tar xzf -\n)(.*?)(\nTARBALL_DATA)"
new_text, count = re.subn(pattern, lambda m: m.group(1) + b64 + m.group(3), text, flags=re.S)
if count != 1:
raise SystemExit(f'Expected exactly one TARBALL_DATA block in {installer_path}, found {count}')
pathlib.Path('deploy/linux/install-node.sh').write_text(new_text)
print('✅ Re-embedded packaged payload into deploy/linux/install-node.sh')
PY
# Keep the root installer copy in sync with the packaged source of truth
cp package-hermes-node-agent/install.sh install.sh
# Cleanup
rm -rf "$BUILD_DIR"
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Browser Agent Chrome Extension
This extension enables browser automation through the Hermes Node Agent.
......
// Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
// SPDX-License-Identifier: GPL-3.0-or-later
// Copyleft: this program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Hermes Browser Agent — native messaging host bridge
const NATIVE_HOST = 'hermes.node.agent';
const WS_RETRY = 3000;
......
// Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
// SPDX-License-Identifier: GPL-3.0-or-later
// Copyleft: this program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Hermes Browser Agent Content Script — no-op placeholder
// Main functionality lives in background.js routing to native host
// This file ensures content context is available when needed
......
// Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
// SPDX-License-Identifier: GPL-3.0-or-later
// Copyleft: this program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
const statusEl = document.getElementById('status');
setTimeout(() => {
chrome.runtime.sendMessage({type:'ping'}, resp => {
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Deployment Scripts for Hermes Node Agent
These scripts build installers for deploying Hermes Node Agent on target machines.
......
This diff is collapsed.
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Complete Windows installer build: PyInstaller + NSIS
# Works on Linux using Wine Windows Python environment
#
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Build Windows offline installer for Hermes Node Agent
# Requires: makensis (NSIS compiler), wget/curl, python3 + pip
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
This diff is collapsed.
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......@@ -155,6 +161,14 @@ p = Path(r'''$CONFIG_DIR/config.json''')
data = json.loads(p.read_text())
print(str(bool(data.get('enable_audio_control', False))).lower())
PY
)
EXISTING_ENABLE_CAMERA_CONTROL=$(python3 - <<PY
import json
from pathlib import Path
p = Path(r'''$CONFIG_DIR/config.json''')
data = json.loads(p.read_text())
print(str(bool(data.get('enable_camera_control', False))).lower())
PY
)
echo " Existing config found: $CONFIG_DIR/config.json"
fi
......@@ -204,6 +218,15 @@ case "$ENABLE_AUDIO_INPUT" in
*) ENABLE_AUDIO_CONTROL=false ;;
esac
DEFAULT_CAMERA_CHOICE="n"
[ "$EXISTING_ENABLE_CAMERA_CONTROL" = "true" ] && DEFAULT_CAMERA_CHOICE="y"
read -r -p "Enable camera_control? (y/N) [$DEFAULT_CAMERA_CHOICE]: " ENABLE_CAMERA_INPUT
ENABLE_CAMERA_INPUT=${ENABLE_CAMERA_INPUT:-$DEFAULT_CAMERA_CHOICE}
case "$ENABLE_CAMERA_INPUT" in
y|Y|yes|YES) ENABLE_CAMERA_CONTROL=true ;;
*) ENABLE_CAMERA_CONTROL=false ;;
esac
CAPABILITIES='["exec"]'
if [ "$ENABLE_BROWSER" = true ]; then
CAPABILITIES=$(python3 - <<'PY' "$CAPABILITIES"
......@@ -245,6 +268,16 @@ print(json.dumps(caps))
PY
)
fi
if [ "$ENABLE_CAMERA_CONTROL" = true ]; then
CAPABILITIES=$(python3 - <<'PY' "$CAPABILITIES"
import json, sys
caps = json.loads(sys.argv[1])
if 'camera_control' not in caps:
caps.append('camera_control')
print(json.dumps(caps))
PY
)
fi
cat > "$CONFIG_DIR/config.json" << EOF
{
......@@ -258,6 +291,7 @@ cat > "$CONFIG_DIR/config.json" << EOF
"enable_computer_control": $ENABLE_COMPUTER_CONTROL,
"enable_desktop_observe": $ENABLE_DESKTOP_OBSERVE,
"enable_audio_control": $ENABLE_AUDIO_CONTROL,
"enable_camera_control": $ENABLE_CAMERA_CONTROL,
"permissions": {
"deny": ["sudo", "su", "doas", "dd if=", "mkfs", "fdisk", "wipe"],
"ask": ["rm -rf", "dd if=", "> /dev/", "chmod", "chown", "mv /", ":/usr/", ":/etc/", ":/bin/", ":/sbin/"],
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......@@ -204,7 +207,50 @@ All messages are JSON over WebSocket.
### Capability Registration
Node registers `browser_control` in capabilities during registration:
## Camera Control
**Optional capability** — phase-1 Linux support uses `ffmpeg` + V4L2 (`/dev/video*`). The node only advertises `camera_control` in its `tools` list when `enable_camera_control` is true *and* a usable camera backend/device is present at runtime.
### Actions
- `list_cameras` — enumerate detected camera devices and probe metadata
- `get_camera_status` — current camera backend readiness and discovered devices
- `capture_frame` — grab a single still frame from a selected/default device
- `capture_video` — record a short video clip from a selected/default device
### Gateway → Node: Camera Control
```json
{
"type": "camera_control",
"id": "camera-a1b2c3d4",
"action": "capture_frame",
"params": {
"device": "/dev/video0",
"format": "png",
"width": 1280,
"height": 720
}
}
```
### Node → Gateway: Camera Control Result
```json
{
"type": "camera_control_result",
"id": "camera-a1b2c3d4",
"action": "capture_frame",
"success": true,
"device": "/dev/video0",
"format": "png",
"path": "/tmp/hermes-camera-1714392000.png",
"size_bytes": 123456,
"data_base64": "..."
}
```
Node registers optional tools in its `tools` list during registration and exposes structured readiness metadata under `capabilities`. Existing siblings include `browser_control`, `computer_control`, `desktop_observe`, `audio_control`, and `camera_control`.
```json
{
......@@ -230,7 +276,8 @@ Node registers `browser_control` in capabilities during registration:
"token": "node-sissy-secret-token-abc123",
"sexec_path": "/home/openclaw/.openclaw/skills/sexec/sexec.sh",
"reconnect_interval": 5,
"heartbeat_interval": 30
"heartbeat_interval": 30,
"enable_camera_control": false
}
```
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Agent
**Version:** 2.0
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
#!/usr/bin/env python3
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......@@ -155,6 +161,14 @@ p = Path(r'''$CONFIG_DIR/config.json''')
data = json.loads(p.read_text())
print(str(bool(data.get('enable_audio_control', False))).lower())
PY
)
EXISTING_ENABLE_CAMERA_CONTROL=$(python3 - <<PY
import json
from pathlib import Path
p = Path(r'''$CONFIG_DIR/config.json''')
data = json.loads(p.read_text())
print(str(bool(data.get('enable_camera_control', False))).lower())
PY
)
echo " Existing config found: $CONFIG_DIR/config.json"
fi
......@@ -204,6 +218,15 @@ case "$ENABLE_AUDIO_INPUT" in
*) ENABLE_AUDIO_CONTROL=false ;;
esac
DEFAULT_CAMERA_CHOICE="n"
[ "$EXISTING_ENABLE_CAMERA_CONTROL" = "true" ] && DEFAULT_CAMERA_CHOICE="y"
read -r -p "Enable camera_control? (y/N) [$DEFAULT_CAMERA_CHOICE]: " ENABLE_CAMERA_INPUT
ENABLE_CAMERA_INPUT=${ENABLE_CAMERA_INPUT:-$DEFAULT_CAMERA_CHOICE}
case "$ENABLE_CAMERA_INPUT" in
y|Y|yes|YES) ENABLE_CAMERA_CONTROL=true ;;
*) ENABLE_CAMERA_CONTROL=false ;;
esac
CAPABILITIES='["exec"]'
if [ "$ENABLE_BROWSER" = true ]; then
CAPABILITIES=$(python3 - <<'PY' "$CAPABILITIES"
......@@ -245,6 +268,16 @@ print(json.dumps(caps))
PY
)
fi
if [ "$ENABLE_CAMERA_CONTROL" = true ]; then
CAPABILITIES=$(python3 - <<'PY' "$CAPABILITIES"
import json, sys
caps = json.loads(sys.argv[1])
if 'camera_control' not in caps:
caps.append('camera_control')
print(json.dumps(caps))
PY
)
fi
cat > "$CONFIG_DIR/config.json" << EOF
{
......@@ -258,6 +291,7 @@ cat > "$CONFIG_DIR/config.json" << EOF
"enable_computer_control": $ENABLE_COMPUTER_CONTROL,
"enable_desktop_observe": $ENABLE_DESKTOP_OBSERVE,
"enable_audio_control": $ENABLE_AUDIO_CONTROL,
"enable_camera_control": $ENABLE_CAMERA_CONTROL,
"permissions": {
"deny": ["sudo", "su", "doas", "dd if=", "mkfs", "fdisk", "wipe"],
"ask": ["rm -rf", "dd if=", "> /dev/", "chmod", "chown", "mv /", ":/usr/", ":/etc/", ":/bin/", ":/sbin/"],
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
This diff is collapsed.
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Agent Installer — Linux (self-contained)
set -e
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Release script: builds Windows installer and publishes to website
#
# This script:
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Upload built Windows installer to website (lisa.nexlab.net)
#
# Prerequisites:
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes sexec - secure command execution wrapper
# This is a placeholder. Actual sexec implementation goes here.
if command -v sudo >/dev/null 2>&1; then
......
#!/usr/bin/env python3
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
<!-- Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net> -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<!-- Copyleft: GNU GPLv3 or later applies to this file. -->
# Windows Installer Build — PyInstaller + NSIS
## Overview
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Complete Windows installer build: PyInstaller + NSIS
# Works on Linux using Wine Windows Python environment
#
......
#!/bin/bash
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Build Windows executables using PyInstaller via Wine
set -e
cd "$(cd "$(dirname "$0")" && pwd)"
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Hermes Node Protocol
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# -*- mode: python ; coding: utf-8 -*-
......
# Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyleft: this program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# -*- mode: python ; coding: utf-8 -*-
......
This diff is collapsed.
; Copyright (C) 2026 Stefy Lanza <stefy@nexlab.net>
; SPDX-License-Identifier: GPL-3.0-or-later
; Copyleft: this program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
; Hermes Node Agent Windows Installer — NSIS
; User-owned config: $APPDATA\HermesNode\config.json
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment