Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
H
hermes-node-agent
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lisa
hermes-node-agent
Commits
24f4201b
Commit
24f4201b
authored
May 01, 2026
by
Lisa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix: installer with real embedded tarball + fixed config paths
parent
fefa15b4
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
157 additions
and
121 deletions
+157
-121
install-node.sh
deploy/linux/install-node.sh
+58
-121
install-linux.sh
release/install-linux.sh
+99
-0
No files found.
deploy/linux/install-node.sh
View file @
24f4201b
#!/bin/bash
# Hermes Node Agent Installer — Linux Version
# Copyright (c) 2026 Stefy (nextime) Lanza <stefy@nexlab.net>
# All rights reserved.
#
# This software is released under the MIT License with a copyleft clause.
# See the LICENSE file for full terms.
#
# INSTALLER DESCRIPTION:
# Self-contained installer for Linux. Embedded: node agent code, init.d script.
# External: pip install websockets (online required).
# No git clone, no network downloads of our files.
# Hermes Node Agent Installer — Linux (self-contained)
set
-e
echo
"=== Hermes Node Agent Installer (Linux) ==="
echo
""
# Check if running as root (for service setup)
if
[
"
$EUID
"
-eq
0
]
;
then
RUN_AS_ROOT
=
true
else
RUN_AS_ROOT
=
false
echo
"⚠️ Not running as root — skipping service installation."
echo
" To install as a service, run: sudo
$0
"
echo
""
echo
"WARNING: Not running as root — skipping service install."
fi
# Check for Python 3
if
!
command
-v
python3 &> /dev/null
;
then
echo
"❌ ERROR: Python 3 is required but not found."
echo
" Install Python 3 first, then re-run this installer."
echo
"ERROR: Python 3 required."
exit
1
fi
echo
"✓ Python:
$(
python3
--version
)
"
# Check for pip (will use it to install websockets)
if
!
command
-v
pip3 &> /dev/null
&&
!
command
-v
pip &> /dev/null
;
then
echo
"❌ ERROR: pip is required but not found."
echo
" Install with: apt install python3-pip (Debian/Ubuntu) or equivalent"
exit
1
fi
PIP_CMD
=
"pip3"
command
-v
pip3 &> /dev/null
||
PIP_CMD
=
"pip"
PIP_CMD
=
""
if
command
-v
pip3 &> /dev/null
;
then
PIP_CMD
=
"pip3"
;
elif
command
-v
pip &> /dev/null
;
then
PIP_CMD
=
"pip"
;
fi
if
[
-z
"
$PIP_CMD
"
]
;
then
echo
"ERROR: pip not found."
;
exit
1
;
fi
# Install websockets library (only network call)
echo
"[1/5] Installing Python dependencies (websockets)..."
if
!
$PIP_CMD
install
--quiet
websockets 2>/dev/null
;
then
echo
"⚠️ Could not install via pip (may need network). Trying with user flag..."
if
!
$PIP_CMD
install
--user
--quiet
websockets 2>/dev/null
;
then
echo
"❌ Failed to install websockets. Try manually:
$PIP_CMD
install websockets"
exit
1
fi
fi
echo
"✓ websockets library installed"
echo
"[1/5] Installing websockets...?"
python3
-c
"import websockets"
2>/dev/null
||
$PIP_CMD
install
--quiet
websockets
echo
"✓ websockets installed"
# Determine install locations
if
[
"
$RUN_AS_ROOT
"
=
true
]
;
then
AGENT_DIR
=
"/usr/local/bin"
CONFIG_DIR
=
"/etc/hermes-node"
USE_SERVICE
=
true
else
AGENT_DIR
=
"
$HOME
/.local/bin"
CONFIG_DIR
=
"
$HOME
/.config/hermes-node"
USE_SERVICE
=
false
fi
mkdir
-p
"
$AGENT_DIR
"
mkdir
-p
"
$CONFIG_DIR
"
# Extract embedded agent files
echo
"[2/5] Extracting embedded agent files..."
TMP_EXTRACT
=
$(
mktemp
-d
)
c
d
"
$TMP_EXTRACT
"
# === EMBEDDED TARBALL (base64) ===
cat
<<
'
TARBALL_DATA
' | base64 -d | tar xzf -
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
# === END EMBEDDED DATA ===
# Copy agent script
cp
hermes-node-agent/hermes_node_agent.py
"
$AGENT_DIR
/hermes-node-agent"
echo
"[2/5] Extracting embedded files..."
TMP
=
$(
mktemp
-d
)
cd
"
$TMP
"
c
at
<<
'
TAR
' | base64 -d | tar xzf -
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
TAR
# Find and install the agent
if
[
-f
"./hermes-node-agent"
]
;
then
SRC
=
"./hermes-node-agent"
;
elif
[
-f
"./hermes_node_agent/hermes-node-agent"
]
;
then
SRC
=
"./hermes_node_agent/hermes-node-agent"
;
else
echo
"ERROR: Agent not found in tarball"
;
ls
-la
;
exit
1
;
fi
cp
"
$SRC
"
"
$AGENT_DIR
/hermes-node-agent"
chmod
+x
"
$AGENT_DIR
/hermes-node-agent"
echo
"✓ Agent:
$AGENT_DIR
/hermes-node-agent"
# Copy init.d script (for root installs)
if [ "
$USE_SERVICE
" = true ]; then
cp hermes-node-agent/hermes-node-agent.init.d /etc/init.d/hermes-node-agent
chmod +x /etc/init.d/hermes-node-agent
echo "✓ Init script: /etc/init.d/hermes-node-agent"
# Install init.d if root
if
[
"
$RUN_AS_ROOT
"
=
true
]
;
then
if
[
-f
"./init.d"
]
;
then
CP
=
"./init.d"
;
elif
[
-f
"./hermes_node_agent/init.d"
]
;
then
CP
=
"./hermes_node_agent/init.d"
;
else
CP
=
""
;
fi
if
[
-n
"
$CP
"
]
;
then
cp
"
$CP
"
/etc/init.d/hermes-node-agent
&&
chmod
+x /etc/init.d/hermes-node-agent
;
echo
"✓ Init: /etc/init.d/hermes-node-agent"
;
fi
fi
# Copy node_gateway.py (for plugin reference, if needed)
cp hermes-node-agent/node_gateway.py "
$AGENT_DIR
/hermes-node-gateway.py" 2>/dev/null || true
# Clean up
echo "[3/5] Cleaning up temporary files..."
cd
/
rm -rf "
$TMP
_EXTRACT
"
rm
-rf
"
$TMP
"
# Create config file if missing
echo "[4/5] Checking configuration..."
echo
"[3/5] Config..."
if
[
!
-f
"
$CONFIG_DIR
/config.json"
]
;
then
echo "[5/5] Creating config file..."
NODE_NAME=
$(
hostname
)
TOKEN=
$(
python3
-c
"import secrets; print(secrets.token_hex(16))"
)
cat > "
$CONFIG_DIR
/config.json" << EOF
echo
"[4/5] Creating config..."
NODE_HOST
=
$(
hostname
)
NODE_TOKEN
=
$(
python3
-c
"import secrets; print(secrets.token_hex(16))"
)
cat
>
"
$CONFIG_DIR
/config.json"
<<
END
{
"gateway_url": "ws://YOUR-GATEWAY-HOST:8765",
"node_name": "
${
NODE_
NAME
}
",
"token": "
${
TOKEN
}
",
"sexec_path": "
${
HOME
}
/.
openclaw/skills
/sexec/sexec.sh",
"gateway_url": "ws
s
://YOUR-GATEWAY-HOST:8765",
"node_name": "
${
NODE_
HOST
}
",
"token": "
${
NODE_
TOKEN
}
",
"sexec_path": "
${
HOME
}
/.
config/hermes-node-agent
/sexec/sexec.sh",
"reconnect_interval": 5,
"heartbeat_interval": 30,
"capabilities": ["exec"]
}
E
OF
E
ND
echo
"✓ Config:
$CONFIG_DIR
/config.json"
echo ""
echo "⚠️ IMPORTANT: Edit
$CONFIG_DIR
/config.json"
echo " → Set gateway_url to your gateway (e.g., wss://zeiss:8765)"
echo " → Set token to match gateway's token for this node"
echo " → Add capabilities: ["exec", "browser_control", "computer_control"] as needed"
else
echo "[5/5] Config already exists → skipping"
echo " Config:
$CONFIG_DIR
/config.json"
echo
"[4/5] Config exists — skipping"
fi
# Install SysV init service (root only)
if [ "
$USE_SERVICE
" = true ]; then
echo ""
echo "[Service] Enabling auto-start on boot..."
if
[
"
$RUN_AS_ROOT
"
=
true
]
;
then
update-rc.d hermes-node-agent defaults 2>/dev/null
||
true
echo "✓ Service
: /etc/init.d/hermes-node-agent"
echo
"✓ Service enabled
: /etc/init.d/hermes-node-agent"
echo
""
echo "Service commands:"
echo " /etc/init.d/hermes-node-agent start|stop|restart|status"
echo
"Commands: /etc/init.d/hermes-node-agent start|stop|restart|status"
else
echo
""
echo "[Service] Skipped (not root). Manual start required:"
echo "
$AGENT_DIR
/hermes-node-agent --config
$CONFIG_DIR
/config.json"
echo
"Run manually:
$AGENT_DIR
/hermes-node-agent --config
$CONFIG_DIR
/config.json &"
fi
echo
""
echo "=== Installation Complete ==="
echo ""
echo "Quick start:"
echo " Config:
$CONFIG_DIR
/config.json"
echo " Agent:
$AGENT_DIR
/hermes-node-agent"
echo " Run:
$AGENT_DIR
/hermes-node-agent --config
$CONFIG_DIR
/config.json"
echo ""
if [ "
$USE_SERVICE
" = true ]; then
echo "To start the service:"
echo " /etc/init.d/hermes-node-agent start"
echo ""
else
echo "To run manually:"
echo "
$AGENT_DIR
/hermes-node-agent --config
$CONFIG_DIR
/config.json &"
echo ""
fi
echo
"=== Done ==="
echo
"Agent:
$AGENT_DIR
/hermes-node-agent"
echo
"Config:
$CONFIG_DIR
/config.json"
release/install-linux.sh
0 → 100755
View file @
24f4201b
#!/bin/bash
# Hermes Node Agent Installer — Linux (self-contained)
set
-e
echo
"=== Hermes Node Agent Installer (Linux) ==="
if
[
"
$EUID
"
-eq
0
]
;
then
RUN_AS_ROOT
=
true
else
RUN_AS_ROOT
=
false
echo
"WARNING: Not running as root — skipping service install."
fi
if
!
command
-v
python3 &> /dev/null
;
then
echo
"ERROR: Python 3 required."
exit
1
fi
echo
"✓ Python:
$(
python3
--version
)
"
PIP_CMD
=
""
if
command
-v
pip3 &> /dev/null
;
then
PIP_CMD
=
"pip3"
;
elif
command
-v
pip &> /dev/null
;
then
PIP_CMD
=
"pip"
;
fi
if
[
-z
"
$PIP_CMD
"
]
;
then
echo
"ERROR: pip not found."
;
exit
1
;
fi
echo
"[1/5] Installing websockets...?"
python3
-c
"import websockets"
2>/dev/null
||
$PIP_CMD
install
--quiet
websockets
echo
"✓ websockets installed"
if
[
"
$RUN_AS_ROOT
"
=
true
]
;
then
AGENT_DIR
=
"/usr/local/bin"
CONFIG_DIR
=
"/etc/hermes-node"
else
AGENT_DIR
=
"
$HOME
/.local/bin"
CONFIG_DIR
=
"
$HOME
/.config/hermes-node"
fi
mkdir
-p
"
$AGENT_DIR
"
mkdir
-p
"
$CONFIG_DIR
"
echo
"[2/5] Extracting embedded files..."
TMP
=
$(
mktemp
-d
)
cd
"
$TMP
"
cat
<<
'
TAR
' | base64 -d | tar xzf -
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
TAR
# Find and install the agent
if
[
-f
"./hermes-node-agent"
]
;
then
SRC
=
"./hermes-node-agent"
;
elif
[
-f
"./hermes_node_agent/hermes-node-agent"
]
;
then
SRC
=
"./hermes_node_agent/hermes-node-agent"
;
else
echo
"ERROR: Agent not found in tarball"
;
ls
-la
;
exit
1
;
fi
cp
"
$SRC
"
"
$AGENT_DIR
/hermes-node-agent"
chmod
+x
"
$AGENT_DIR
/hermes-node-agent"
echo
"✓ Agent:
$AGENT_DIR
/hermes-node-agent"
# Install init.d if root
if
[
"
$RUN_AS_ROOT
"
=
true
]
;
then
if
[
-f
"./init.d"
]
;
then
CP
=
"./init.d"
;
elif
[
-f
"./hermes_node_agent/init.d"
]
;
then
CP
=
"./hermes_node_agent/init.d"
;
else
CP
=
""
;
fi
if
[
-n
"
$CP
"
]
;
then
cp
"
$CP
"
/etc/init.d/hermes-node-agent
&&
chmod
+x /etc/init.d/hermes-node-agent
;
echo
"✓ Init: /etc/init.d/hermes-node-agent"
;
fi
fi
cd
/
rm
-rf
"
$TMP
"
echo
"[3/5] Config..."
if
[
!
-f
"
$CONFIG_DIR
/config.json"
]
;
then
echo
"[4/5] Creating config..."
NODE_HOST
=
$(
hostname
)
NODE_TOKEN
=
$(
python3
-c
"import secrets; print(secrets.token_hex(16))"
)
cat
>
"
$CONFIG_DIR
/config.json"
<<
END
{
"gateway_url": "wss://YOUR-GATEWAY-HOST:8765",
"node_name": "
${
NODE_HOST
}
",
"token": "
${
NODE_TOKEN
}
",
"sexec_path": "
${
HOME
}
/.config/hermes-node-agent/sexec/sexec.sh",
"reconnect_interval": 5,
"heartbeat_interval": 30,
"capabilities": ["exec"]
}
END
echo
"✓ Config:
$CONFIG_DIR
/config.json"
else
echo
"[4/5] Config exists — skipping"
fi
if
[
"
$RUN_AS_ROOT
"
=
true
]
;
then
update-rc.d hermes-node-agent defaults 2>/dev/null
||
true
echo
"✓ Service enabled: /etc/init.d/hermes-node-agent"
echo
""
echo
"Commands: /etc/init.d/hermes-node-agent start|stop|restart|status"
else
echo
""
echo
"Run manually:
$AGENT_DIR
/hermes-node-agent --config
$CONFIG_DIR
/config.json &"
fi
echo
""
echo
"=== Done ==="
echo
"Agent:
$AGENT_DIR
/hermes-node-agent"
echo
"Config:
$CONFIG_DIR
/config.json"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment