1076 Commits
Author SHA1 Message Date
Hermes Agent 58a0943ead feat(kitty): add catppuccin mocha theme
Updates the Kitty terminal configuration to use the Catppuccin Mocha color scheme.
This includes changes to background, foreground, cursor, selection, URL colors,
and adds the full set of ANSI color definitions.
2026-09-26 18:23:06 -04:00
Hermes Agent 308c52de7e fix(stalwart): corriger le mapping traefik stalwart (port 8390 JMAP, pas 8090 headscale) 2026-09-26 18:15:32 -04:00
Hermes Agent d5c60c576e fix(navidrome): ajouter groupe users pour traverser /home/marc 2026-09-26 18:15:32 -04:00
Hermes Agent c1c19aeb22 fix(gotify): aligner le rôle postgres gotify sur le secret sops (bug identique à vaultwarden) 2026-09-26 18:15:32 -04:00
Hermes Agent 6220fb68c5 fix(tower): reset hashedPassword root (marc ne pouvait plus se logger depuis 25/09) 2026-09-26 18:15:28 -04:00
Hermes Agent 67b4551b2d feat(hermes-dashboard): terminal web hermes (Pangolin SSO)
Backend hermes-agent en mode dashboard (9120) + nginx host-rewrite (9121),
ressource newt terminal.marcpartensky.com. Ports jamais ouverts au firewall :
/api/pty est un shell.
2026-09-26 18:14:41 -04:00
Hermes Agent 355ed8ee0a feat(hermes-files): partage HTTP LAN des artefacts de l'agent
nginx sur 0.0.0.0:8092, root /var/lib/hermes-files (répertoire dédié : le
stateDir /var/lib/hermes est en 0770, nginx ne peut pas le traverser).
Autoindex, aucune auth : rien de sensible dedans, jamais routé via Pangolin.
2026-09-26 18:14:41 -04:00
Hermes Agent 5c093e06fa feat(matrix): stack synapse + ponts (discord/meta/dumps) + accès admin agent
- services/matrix : synapse 1.160, listener 127.0.0.1:8008, DB postgres,
  registration_shared_secret généré (hermes ne peut pas poser de secret sops
  root-only)
- matrix-discord/matrix-meta : ponts mautrix ; fix matrix-meta : synapse
  rejoint le groupe mautrix-meta-registration (sinon il ne peut pas lire
  meta-registration.yaml, tout le homeserver refuse de démarrer)
- matrix-dumps : dump périodique + clés pickle des ponts (déchiffrement megolm)
- matrix-hermes (mxc) : compte admin @hermes-admin auto-provisionné depuis le
  registration_shared_secret, token utilisable par l'agent pour l'admin API
  Synapse (fabriquer un token pour n'importe quel compte local)
2026-09-26 18:14:41 -04:00
Hermes Agent d5459d760f feat(hermes): accès SSH direct multi-hôtes (tower/deck/anywhere)
Clé hermes@tower déclarée en authorizedKeys : sur hermes lui-même (accès aux
hôtes qui importent services/hermes), en root déclaratif sur anywhere (le
bloc était commenté), et compte système hermes complet + sudo NOPASSWD
nixos-rebuild sur deck (qui n'importe pas services/hermes).
2026-09-26 18:12:32 -04:00
Hermes Agent 2149e5f998 feat(hermes): bot Matrix @hermes (env, secret sops, allowlist)
Homeserver matrix.marcpartensky.com, @hermes:matrix.marcpartensky.com, E2EE
required (salles de pont chiffrées), pas de mention requise ni d'auto-thread
dans les salles de pont (3+ membres). Allowlist : @marc + son ghost Signal.
Token dans secrets/hermes-matrix.yml (règle .sops.yaml dédiée, sopsFile
explicite car hors de tower.yml).
2026-09-26 18:11:54 -04:00
Hermes Agent 8bba500743 fix(hermes): NoNewPrivileges bloquait sudo depuis les unités du service
commonServiceConfig posait NoNewPrivileges=true sur hermes-agent.service et
hermes-backend.service : le noyau ignore alors le bit setuid, donc sudo/su
refusaient net dans toute session lancée depuis Matrix ou le terminal web,
rendant la règle NOPASSWD nixos-rebuild inopérante. mkForce false sur les deux
unités ; sudo reste borné à la liste de commandes déjà déclarée.
2026-09-26 18:11:20 -04:00
Hermes Agent 06b3c92b0a feat(hermes): TTS Edge gratuit (voix fr-FR-DeniseNeural)
Provider edge (sans clé API), dépend du dependency-group edge-tts déjà ajouté.
À la demande (/voice tts), auto_tts reste false par défaut.
2026-09-26 18:11:00 -04:00
Hermes Agent 464ffb616c feat(hermes): politique modèle 26/09 (Sonnet 5 défaut, fallback ordonné, reasoning_overrides, channel_overrides)
- défaut : claude-sonnet-5 (DirectSDK, abonnement Pro/Max) au lieu de DeepSeek
  via OpenRouter ; consomme le quota à chaque message, surveiller l'usure
- fallback_providers réordonné : gratuits OpenRouter (inkling, nemotron ultra)
  puis DeepSeek Flash en tout dernier recours (payant mais bon marché)
- agent.reasoning_overrides : le niveau de reasoning suit le modèle actif
  (DeepSeek Flash/Sonnet 5 -> high, Opus 5 -> max)
- settings.platforms.matrix.channel_overrides : 3 salons épinglés sur Opus 5
  ou Sonnet 5 (abonnement), le reste reste sur le défaut
2026-09-26 18:10:41 -04:00
Hermes Agent eb048167fe feat(herdr): sidebar affiche le modèle hermes de chaque pane
- modules/nixos/herdr : config.toml posé par tmpfiles L+ (rows_by_agent hermes
  = state_icon/machine/tab + terminal_title_stripped + agent), importé par
  profiles/tower/configuration.nix
- services/hermes : display.interface = "tui" (seule interface qui publie un
  titre OSC lu par herdr) + plugins.enabled = [] (neutralise l'entrée
  herdr-agent-state, inerte sous sudo su -l hermes)
2026-09-26 18:09:58 -04:00
Hermes Agent c858558d08 chore(hermes): aligner extraPythonPackages sur le venv scellé + deps matrix/edge-tts
package.python.pkgs suit désormais la famille python du venv (nix/pythonLock.nix,
3.14) au lieu de la nixpkgs figée du flake hermes-agent (hermesPkgs, 3.12) qui
filtrait silencieusement les paquets. Ajoute extraDependencyGroups = matrix +
edge-tts (résolus par uv dans le venv scellé, préparant le bot Matrix et le TTS
Edge).
2026-09-26 18:09:33 -04:00
Hermes Agent 535d1c9892 feat(youtube-music): 4 clients TUI (ytm-player, yututui, yt-collate, youtube-music-cli)
- module par outil dans modules/home/, importés par users/marc/home.nix
- ytm-player: suit unstable (dbus-fast >= 5.0.0, absent de 26.05)
- yututui (ytt): doCheck = false, 11 tests FS échouent en sandbox nix
- yt-collate: buildPythonApplication python313, deps textual/ytmusicapi
- youtube-music-cli (ymc): binaire Bun standalone de la release
2026-09-26 18:08:25 -04:00
Hermes Agent ed4c50c557 feat(matrix): add new bridges and improve E2EE defaults
Add mautrix-linkedin, mautrix-meta (Instagram, Messenger), and mautrix-telegram (initial setup).
Enable E2EE by default for mautrix-discord and mautrix-signal, ensuring stable pickle_key generation.
Update matrix-synapse dependencies for new bridges.
2026-09-24 23:57:01 -04:00
Hermes Agent dc8e39c546 feat(cage-firefox): session VNC cage + firefox en plus de niri
Deuxième voie d'accès VNC, indépendante de la session niri :
backend headless de wlroots, donc aucun besoin de vkms ni d'écran branché,
et rien qui touche la session locale. Service system, démarre au boot sans
login. Exposé en noVNC sur 6081, wayvnc reste sur loopback 5901.

Points de mise au point validés au banc d'essai :
- la sortie headless n'annonce que 1280x720 mais accepte tout via
  wlr-randr --custom-mode, posé AVANT wayvnc qui fige la taille à sa connexion
- cage démarre son propre XWayland, une appli X11 marche aussi
- firefox exige que le dossier de profil existe déjà, sinon Profile Missing
- profil dédié dans /var/lib/cage-firefox/profile, séparé de celui de marc
2026-09-24 23:24:10 -04:00
Hermes Agent db098efdf5 feat(postgres): add music database service
Introduces a dedicated PostgreSQL database and schema for music data,
including playlists, tracks, and various analytical views. This service
is designed for importing Spotify playlists into YouTube Music.

Updates the codeberg-mcp dependency hash to SRI format. Refactors
home-manager package names for prettier and neovim-node-client.
2026-09-24 22:55:18 -04:00
Hermes Agent 9639f7ae35 feat(wayvnc): écran virtuel vkms en 1920x1080
VKMS expose une liste de modes dont 1920x1080, donc pas de mode custom :
on déclare le mode de la sortie Virtual-1 via programs.niri.settings.outputs.
Niri relit sa config à chaud, un just home suffit, pas de relogin.
Résolution paramétrable par virtualWidth / virtualHeight en tête du module.
2026-09-24 22:45:46 -04:00
Hermes Agent 4b6e9e8566 feat: add matrix signal and discord bridges
Update nixpkgs and nix-darwin to 26.05.

Enable vkms kernel module for the tower profile to provide a virtual display.

Configure mautrix-signal and mautrix-discord services.

Update matrix-synapse dependencies to wait for new bridges.
2026-09-24 22:37:25 -04:00
Hermes Agent 81f348e601 fix(hermes): extraPackages défini deux fois (claude-code + nodejs_22)
services.hermes-agent.extraPackages était défini une fois pour claude-code et une
seconde fois pour nodejs_22 (MCP GitHub), ce qui cassait l'évaluation de
nixosConfigurations.tower : "attribute 'services.hermes-agent.extraPackages'
already defined". Les deux paquets sont maintenant dans une seule liste.
2026-09-24 22:30:09 -04:00
Hermes Agent 274a392a2a fix(flake): plus d'input path: pour protonmail-mcp
Un input "path:" relatif laisse un noeud non verrouillé dans flake.lock, que les
nix anciens (<= 2.20) refusent ("lock file contains mutable lock") : c'est ce qui
cassait `just mac` sur le Mac. Le sous-flake ./protonmail-mcp est maintenant appelé
directement (import de son flake.nix, inputs passés explicitement) et sa dépendance
externe proton-mail-bridge-client devient un input github normal, donc verrouillé.
Même rev qu'avant (811be5d) : aucun changement de version du paquet.
2026-09-24 22:29:30 -04:00
Hermes Agent fbb0525254 feat: add Codeberg and GitHub MCP, improve wayvnc startup
Integrates new Model Context Protocol (MCP) servers for Codeberg and GitHub.
The Codeberg MCP server is a new service definition.
The GitHub MCP server is added to the Hermes agent configuration and requires
Node.js 22 as an extra package for `npx`.

Refactors the wayvnc startup mechanism. It is now launched directly by niri
using `spawn-at-startup` instead of a systemd user service. This change
resolves an issue where wayvnc could not find the Wayland display due to
missing `WAYLAND_DISPLAY` in the systemd service environment.
2026-09-24 22:28:54 -04:00
Hermes Agent 11347eed87 chore(hermes): set explicit OpenRouter base URL
Ensures the correct OpenRouter API base URL is always used, overriding
any potentially outdated values from config.yaml.
2026-09-24 22:11:52 -04:00
Hermes Agent fde44ec0a8 feat: enable wayvnc LAN access and update hermes model
Configure websockify to listen on 0.0.0.0:6080 and open port 6080 in the firewall,
allowing direct LAN access to the noVNC web client. Update access documentation.

Switch the default AI model for Hermes from Claude Sonnet to DeepSeek V4.1 Flash
(OpenRouter) and adjust the fallback provider chain.
2026-09-24 22:10:03 -04:00
Hermes Agent a1f24fd173 chore(protonmail-mcp): désactiver le Bridge (plan gratuit, refus API 10004) 2026-09-24 21:58:56 -04:00
Hermes Agent c09bee13de feat(newt): ressource publique Pangolin noVNC (vnc.marcpartensky.com -> 127.0.0.1:6080, SSO) 2026-09-24 21:58:56 -04:00
Hermes Agent 23adf1d042 fix(vaultwarden): port 8222 au lieu de 8083 (conflit nginx Nextcloud) + alignement du mot de passe du rôle postgres 2026-09-24 21:58:56 -04:00
Hermes Agent f691d98990 feat: add noVNC web client and headscale ACL
Integrates noVNC with websockify to provide a web-based VNC client
for wayvnc, accessible via SSH tunnel on port 6080.

Adds a new Headscale ACL policy for the personal tailnet, enabling
full mesh connectivity between all nodes on all ports.
2026-09-24 21:57:22 -04:00
Hermes Agent 546815e27e feat(modules): androidtv-mcp service 2026-09-24 21:31:23 -04:00
Hermes Agent 567c2a85e9 feat(services): nextcloud/zitadel/tailscale + sops 2026-09-24 21:31:20 -04:00
Hermes Agent 8ea118aeb7 feat(users): marc/mac home and packages 2026-09-24 21:31:17 -04:00
Hermes Agent 459f6ac9f4 feat(profiles): anywhere/deck/macos updates 2026-09-24 21:31:14 -04:00
Hermes Agent ed26a96aad feat(tower): tower profile + zfs + eternal-terminal 2026-09-24 21:31:12 -04:00
Hermes Agent 15427c48a9 feat(hermes): service config update 2026-09-24 21:31:09 -04:00
Hermes Agent f55067d0b7 feat(flake): lock updates and protonmail-mcp flake 2026-09-24 21:31:02 -04:00
mazex 355b8c443e feat(tower): configure system stability and enable Roku
Set kernel panic to reboot after 10 seconds.
Enable systemd watchdog for automatic reboot on freeze.
Add ZFS root key to initrd secrets.
Enable the Roku service.
2026-09-24 00:41:46 -04:00
mazex f83a0d194c feat(roku): add roku tv control service
This introduces a new `hermes-agent` MCP server for Roku TVs, allowing control over key presses, brightness, app launching, and status queries via the Roku ECP API.
2026-09-24 00:39:59 -04:00
mazex ef699918e5 chore(nextcloud): add ipv6 proxy, disable sso, set debug log 2026-09-22 18:30:06 -04:00
mazex e9c80ceceb feat(hermes): default to claude subscription provider, install claude-code
- input hermes-agent 0.21.2 -> 0.21.4 (requis par le plugin directsdk)
- claude-code 2.1.223 : extraPackages du service + systemPackages
- provider par défaut : claude-subscription-directsdk-experimental (claude-sonnet-5)
- vision auxiliaire épinglée sur kimi pour préserver le quota Claude Pro
2026-09-22 15:25:11 -04:00
mazex 2cacec63c0 chore(home-manager): pass inputs to modules 2026-09-22 14:35:56 -04:00
mazex ac0996c8c6 build(nextcloud): upgrade to version 33 2026-09-22 10:44:21 -04:00
mazex c87ef4fda3 feat(amazon-mcp): add amazon mcp service
Integrates the `duaragha/amazon-shopping-mcp` server.
Uses Playwright/Chromium for Amazon interactions.
Configured as a `hermes-agent` subprocess.
Includes `amazon-mcp-login` helper for manual session setup.
2026-09-22 10:27:30 -04:00
mazex 094a348497 feat(matrix): add homeserver and whatsapp bridge
Introduces the Matrix homeserver (Synapse) and the mautrix-whatsapp bridge.
Configures Synapse with PostgreSQL, including specific collation requirements.
Sets up secret generation for both services and manages their startup order.
2026-09-22 10:26:37 -04:00
mazex a7ee328388 feat(nextcloud-mcp): enable all apps by default
Remove explicit `--enable-app calendar` argument.
All Nextcloud apps are now exposed by default, providing full functionality.
2026-09-22 09:50:24 -04:00
mazex 8959a5a910 fix(nextcloud): ensure app migrations run after setup
The `nextcloud-setup` service now forces a re-run and executes `occ upgrade` to ensure all app tables are created. This resolves 500 errors for CalDAV due to missing calendar tables.

Also, temporarily disable the `kanidm` service and re-encrypt the `hermes_env` secret.
2026-09-22 09:37:05 -04:00
mazex 48aed99ce3 feat(kanidm): add kanidm identity management service 2026-09-22 01:12:09 -04:00
mazex a27e15f052 fix(nextcloud-mcp): use host network for container
The container needs to access Nextcloud on the host's 127.0.0.1.
Without host networking, 127.0.0.1 inside the container does not point
to the host, leading to Nextcloud 400 errors due to trusted_domains.
2026-09-22 00:54:45 -04:00
mazex 00b8247e53 feat(nextcloud): add mcp env secret
Adds the encrypted `nextcloud_mcp_env` secret to `tower.yml`.
2026-09-22 00:47:02 -04:00