Commit Graph

3770 Commits

Author SHA1 Message Date
Stephen Chin
84f20e8b15 fix(hermesagent): clean up footer, login hint, JSON notes and config_path 2026-05-10 17:14:48 -07:00
Stephen Chin
0c4678c0b4 fix(hermesagent): remove redundant web dashboard pip install; upstream installer includes web,pty extras in .[all] 2026-05-10 15:44:39 -07:00
Stephen Chin
46746538a0 fix(hermesagent): source /etc/default/hermes via setsid; drop inline env vars and HERMES_HOME 2026-05-10 15:39:22 -07:00
Stephen Chin
c685754144 fix(hermesagent): restore setsid to suppress installer TUI; remove redundant EnvironmentFile for .env 2026-05-10 15:30:20 -07:00
Stephen Chin
b3faacb5e1 fix(hermesagent): split env into /etc/default/hermes and .env; use NODE_OPTIONS from setup_nodejs 2026-05-10 15:18:31 -07:00
Stephen Chin
43cc3c83d2 fix(hermesagent): set XDG_RUNTIME_DIR in hermes .profile for SSH access 2026-05-10 14:10:53 -07:00
Stephen Chin
6a4c88c4cc fix(hermesagent): slim down login hint to su and dashboard tunnel only 2026-05-10 14:10:26 -07:00
Stephen Chin
1671917bab fix(hermesagent): move systemd env vars to EnvironmentFile 2026-05-10 14:10:09 -07:00
Stephen Chin
0b11ce1681 fix(hermesagent): add external script warning and remove redundant check
Adds third-party script warning with user confirmation before running
the upstream installer (install) and updater (update), matching the
kasm/pihole pattern. Removes redundant binary existence check per
reviewer feedback. Adds corresponding JSON warning note.
2026-05-09 11:50:57 -07:00
Stephen Chin
67d49e0b8a fix(hermesagent): single-line apt install for single dependency 2026-05-09 10:30:59 -07:00
Stephen Chin
434e170ee3 fix(hermesagent): move service details from CT footer to MOTD
Trims the verbose 12-line CT footer to the standard pattern plus
essential first-run setup steps. API server, API key, and dashboard
SSH tunnel details are now displayed on every SSH login via
/etc/profile.d/hermes-hint.sh instead.

Addresses PR feedback from CrazyWolf13.
2026-05-09 10:27:37 -07:00
Stephen Chin
a0bffe7a4f feat(hermesagent): replace shim+system-unit pattern with hermes-native user services
The previous approach used a /usr/bin/hermes shim to proxy commands from root
to the hermes user, and a hand-crafted system-level systemd unit for the
gateway. This worked for the default profile but broke down for named profiles:

- hermes profile create <name> generates an alias script in
  ~/.local/bin/<name> that calls hermes with -p <name>. These aliases live
  in the hermes user's PATH, not root's, so root could not invoke them.
- Maintaining parity would require per-profile shims, a watcher daemon to
  create/remove them, and system-unit mirrors for each profile gateway — all
  of which would need to stay in sync with hermes internals across updates.

New approach — work with hermes, not around it:

- loginctl enable-linger hermes: ensures the hermes user's systemd session
  starts at boot and persists without login. All user-unit gateways (default
  and per-profile) now survive reboots automatically.
- Gateway service management delegated entirely to hermes: 'hermes gateway
  install' / 'hermes setup' create and enable the user unit natively.
  The install script no longer pre-installs the gateway; hermes prompts the
  user to do so at the end of 'hermes setup'.
- hermes-dashboard.service remains a system unit (no native install command
  exists for it). Its After= no longer references hermes-gateway.service
  since there is no system-unit gateway to depend on.
- /usr/bin/hermes shim removed. Root is guided to 'su - hermes' via a two-
  line /etc/profile.d/hermes-hint.sh message on login, with a one-liner to
  make the switch automatic. Once logged in as hermes, all hermes commands,
  profile aliases, and gateway management work natively.
- update_script simplified: only hermes-dashboard (our unit) is stopped and
  restarted. hermes update --yes handles gateway service lifecycle itself.
2026-05-03 15:22:11 -07:00
Stephen Chin
8afb182095 fix(hermesagent): shim handles hermes user invocation
runuser requires root. When the hermes user calls the shim directly
(e.g. via su - hermes), exec the binary directly instead.
2026-05-02 12:30:34 -07:00
Stephen Chin
06d9c62e54 fix(hermes-agent): rename files to match NSAPP derivation
APP='Hermes Agent' produces NSAPP='hermesagent' via build.func's
lowercase+strip-spaces logic. Rename ct/, install/, json/, and
header files to match.
2026-05-02 09:45:59 -07:00
Stephen Chin
edf1a9604a fix(hermes-agent): harden .hermes directory permissions
The response_store.db and session JSON files under ~/.hermes/ are stored
in plaintext and readable by any process with filesystem access. Set
~/.hermes to 0700 (owner-only) and ~/home/hermes to 0750 to restrict
access to conversation history, credentials, and session data.

Ref: https://github.com/NousResearch/hermes-agent/issues/7486
2026-05-02 08:09:21 -07:00
Stephen Chin
e0aaacdb96 fix(hermes-agent): restrict /proc access in systemd services
Hermes strips sensitive env vars from tool subprocesses, but child
processes can recover them by reading /proc/<parent_pid>/environ. Add
ProtectProc=invisible and ProcSubset=pid to both systemd services to
hide other processes' /proc entries and limit /proc to the service's
own PID namespace.

Ref: https://github.com/NousResearch/hermes-agent/issues/4427
2026-05-02 08:09:00 -07:00
Stephen Chin
16e774083f fix(hermes-agent): set UMask=0077 on systemd services
The Anthropic OAuth helper writes credential files with the process
default umask, resulting in 0644 permissions on sensitive files. Set
UMask=0077 on both hermes-gateway and hermes-dashboard services so all
files created at runtime are owner-only (0600/0700).

Ref: https://github.com/NousResearch/hermes-agent/issues/11003
2026-05-02 08:08:41 -07:00
Stephen Chin
ed9630a783 fix(hermes-agent): enable secret redaction by default
HERMES_REDACT_SECRETS is off by default, exposing API keys in chat output
and session JSON files. Add HERMES_REDACT_SECRETS=true to the .env file
created by the installer.

Ref: https://github.com/NousResearch/hermes-agent/issues/17691
2026-05-02 08:08:23 -07:00
Stephen Chin
adbfd66056 feat: add Hermes Agent LXC
Adds container scripts for Hermes Agent (Nous Research), a self-improving
AI agent with LLM provider integration, terminal execution, web browsing,
and multi-platform messaging support.

Files:
- ct/hermes-agent.sh
- install/hermes-agent-install.sh
- json/hermes-agent.json
- ct/headers/hermes-agent

Deviations from standard patterns (justified):

1. Uses upstream installer (curl-pipe) instead of fetch_and_deploy_gh_release:
   Hermes is a uv-managed Python application with complex dependency
   resolution, virtualenv management, and binary placement—not a single
   binary or tarball from GitHub Releases.

2. Dedicated 'hermes' service user (not running as root):
   The agent executes arbitrary terminal commands on behalf of the user.
   Running as root would give the AI unrestricted system access. This
   follows the protonmail-bridge service-user pattern for isolation.

3. Dashboard (port 9119) bound to localhost only, requiring SSH tunnel:
   The web UI provides admin access to an AI that can execute commands.
   SSH tunnel provides an authentication/authorization boundary.

4. /usr/bin/hermes shim script:
   The hermes CLI validates cwd permissions; running 'hermes' as root
   from /root fails. The shim cd's to /home/hermes and exec's as the
   hermes user via runuser.

5. setsid --wait wrapping of upstream installer:
   The upstream installer probes /dev/tty for interactive prompts even
   with --skip-setup; setsid detaches the controlling terminal.
2026-05-02 06:25:28 -07:00
tremor021
b0cb194bd5 soulsync: fix Micks stuff again 2026-04-30 18:53:22 +02:00
CanbiZ (MickLesk)
6d9d44642c Merge pull request #1645 from WaffleThief123/forgejo-runner-fix
forgejo-runner (FIX): support generated/unattended mode and configurable runner labels
2026-04-30 15:39:37 +02:00
CanbiZ (MickLesk)
0d04c568ad fix(invidious): companion key must be exactly 16 chars (rand -hex 8) 2026-04-30 15:30:21 +02:00
CanbiZ (MickLesk)
7aa3343e1f fix(ente): match actual subscriptions schema (storage column, attributes jsonb, no transaction_id) 2026-04-30 15:03:23 +02:00
CanbiZ (MickLesk)
8a10bfe155 fix(garmin-grafana): pass --homepath to grafana-cli plugin install 2026-04-30 15:02:14 +02:00
CanbiZ (MickLesk)
ca8ddd34a7 fix(ente): replace fragile HMAC email lookup with user_id-based admin/subscription setup 2026-04-30 15:00:56 +02:00
CanbiZ (MickLesk)
c7bc06aaa5 fix(garmin-grafana): avoid set -e abort on ((retries++)) returning 0 2026-04-30 14:51:02 +02:00
CanbiZ (MickLesk)
59331708a5 fix(invidious): broken sed address, key typo, wrong service paths, missing logrotate path 2026-04-30 14:46:36 +02:00
CanbiZ (MickLesk)
328561e64d fix(invidious): use ~ as sed delimiter and anchor-based replacement (pipe in pattern broke sed) 2026-04-30 14:43:43 +02:00
CanbiZ (MickLesk)
50af211392 fix(garmin-grafana): revert chronograf to fetch_and_deploy_from_url (no .deb in GH releases) 2026-04-30 14:42:50 +02:00
CanbiZ (MickLesk)
cbd38c581e fix(authentik): align install with two-volume layout from ct/authentik.sh
- drop redundant curl of default.yml (file is part of release tarball)
- stop creating /opt/authentik-data dirs in install (mounted later as separate volume)
- enable services without --now in install (started after data volume is attached)
2026-04-30 14:37:57 +02:00
CanbiZ (MickLesk)
501b2145f1 fix(ente): use HMAC-SHA-256 email_hash for user lookup (schema has no plain email column) 2026-04-30 14:36:07 +02:00
CanbiZ (MickLesk)
90f77a81ca fix(plane): set anonymous download on MinIO uploads bucket, raise upload limits 2026-04-30 14:36:02 +02:00
CanbiZ (MickLesk)
e84dca5efa fix(invidious): strip git invocations from invidious.cr before make 2026-04-30 14:35:57 +02:00
CanbiZ (MickLesk)
7dfe23a785 refactor(garmin-grafana): use fetch_and_deploy_gh_release for Chronograf, split config blocks 2026-04-30 14:35:52 +02:00
CanbiZ (MickLesk)
720b077c22 Update nagios-install.sh 2026-04-30 14:13:52 +02:00
CanbiZ (MickLesk)
bfc3b8b617 simplify nagios 2026-04-30 14:00:30 +02:00
CanbiZ (MickLesk)
f490247be0 Add GitLab checker; gate storyteller update
Introduce GitLab release helpers and use them to conditionally update Storyteller.

- misc/tools.func: add get_latest_gitlab_release and check_for_gl_release functions (GitLab API calls, token support, pinning, error handling, requires jq).
- ct/storyteller.sh: wrap update sequence with check_for_gl_release so rebuild/deploy only runs when a new GitLab release is detected; update author metadata.
- install/storyteller-install.sh: remove python3 from apt dependencies and drop NODE_OPTIONS export; minor whitespace cleanup.

These changes prevent unnecessary rebuilds by detecting upstream GitLab releases and improve robustness of release detection and error reporting.
2026-04-30 13:41:10 +02:00
CanbiZ (MickLesk)
520ea1cfe1 Update bitfocus-companion-install.sh 2026-04-30 10:06:52 +02:00
CanbiZ (MickLesk)
e8f006659e Fetch authentik default.yml; update app name
Download authentik's lib/default.yml for the specified AUTHENTIK_VERSION before running go mod/download and build (added curl to ct/authentik.sh and install/authentik-install.sh to write to /opt/authentik/authentik/lib/default.yml). Also normalize Bitfocus Companion app name to "Bitfocus-Companion" in ct/bitfocus-companion.sh.
2026-04-30 09:46:14 +02:00
CanbiZ (MickLesk)
3856b5c4cf reorder Authentik-Script / Fix little bugs 2026-04-30 09:05:33 +02:00
CanbiZ (MickLesk)
0ba356c916 Update twenty-install.sh 2026-04-30 08:48:48 +02:00
CanbiZ (MickLesk)
7184f20c42 Update twenty-install.sh 2026-04-29 13:14:49 +02:00
CanbiZ (MickLesk)
fe5d872462 Merge pull request #1765 from programbo/codex/add-espconnect
feat: add ESPConnect LXC
2026-04-29 13:10:25 +02:00
Michel Roegl-Brunner
ba7c59cece Merge pull request #1713 from fpulch/paperclip-helper-final-polish
feat: add Paperclip helper script
2026-04-29 12:57:49 +02:00
CanbiZ (MickLesk)
8132aa0bcd Merge pull request #1735 from Eun/cinny
feat: add cinny
2026-04-29 10:25:31 +02:00
John Lombardo
5b4abb2301 Remove unnecessary ESPConnect dependency 2026-04-29 11:28:12 +08:00
Tobias Salzmann
f31d3bf963 adjust pattern 2026-04-28 14:54:43 +02:00
Tobias Salzmann
339b2b9c4d fix pattern and backup path 2026-04-28 14:03:31 +02:00
Tobias Salzmann
2a1c8912de fix 2026-04-28 13:56:14 +02:00
Tobias Salzmann
7031cfec28 prebuilt dist 2026-04-28 13:47:16 +02:00