+basic hermes config
This commit is contained in:
@@ -65,6 +65,7 @@
|
||||
owner = "m3tam3re";
|
||||
};
|
||||
authentik-env = {file = ../../secrets/authentik-env.age;};
|
||||
conduit-env = {file = ../../secrets/conduit-env.age;};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
48
hosts/m3-atlas/services/conduit.nix
Normal file
48
hosts/m3-atlas/services/conduit.nix
Normal file
@@ -0,0 +1,48 @@
|
||||
{config, ...}: {
|
||||
services.matrix-conduit = {
|
||||
enable = true;
|
||||
settings.global = {
|
||||
server_name = "m3ta.dev";
|
||||
address = "127.0.0.1";
|
||||
port = config.m3ta.ports.get "conduit";
|
||||
max_request_size = 20000000;
|
||||
allow_registration = false;
|
||||
allow_encryption = true;
|
||||
allow_federation = true;
|
||||
trusted_servers = ["matrix.org"];
|
||||
database_backend = "rocksdb";
|
||||
};
|
||||
secretFile = config.age.secrets.conduit-env.path;
|
||||
};
|
||||
|
||||
# Traefik configuration for Conduit
|
||||
services.traefik.dynamicConfigOptions.http = {
|
||||
services.conduit.loadBalancer.servers = [
|
||||
{
|
||||
url = "http://localhost:${toString (config.m3ta.ports.get "conduit")}/";
|
||||
}
|
||||
];
|
||||
|
||||
routers.conduit = {
|
||||
rule = "Host(`matrix.m3ta.dev`)";
|
||||
tls = {
|
||||
certResolver = "godaddy";
|
||||
};
|
||||
service = "conduit";
|
||||
entrypoints = "websecure";
|
||||
};
|
||||
|
||||
# Federation endpoint on base domain
|
||||
routers.conduit-federation = {
|
||||
rule = "Host(`m3ta.dev`) && PathPrefix(`/_matrix`)";
|
||||
tls = {
|
||||
certResolver = "godaddy";
|
||||
};
|
||||
service = "conduit";
|
||||
entrypoints = "websecure";
|
||||
};
|
||||
};
|
||||
|
||||
# Open federation port
|
||||
networking.firewall.allowedTCPPorts = [8448];
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
{
|
||||
imports = [
|
||||
./conduit.nix
|
||||
./containers
|
||||
./gitea.nix
|
||||
./gitea-actions-runner.nix
|
||||
./hermes-agent.nix
|
||||
./minio.nix
|
||||
./mysql.nix
|
||||
./netbird.nix
|
||||
|
||||
191
hosts/m3-atlas/services/hermes-agent.nix
Normal file
191
hosts/m3-atlas/services/hermes-agent.nix
Normal file
@@ -0,0 +1,191 @@
|
||||
{config, ...}: let
|
||||
# Default ElevenLabs voice: Bella (German-capable female)
|
||||
elevenlabsVoiceId = "hpp4J3VqNfWAUOO0d1Us";
|
||||
in {
|
||||
services.hermes-agent = {
|
||||
enable = true;
|
||||
addToSystemPackages = true;
|
||||
|
||||
# Secrets via agenix
|
||||
environmentFiles = [config.age.secrets."hermes-env".path];
|
||||
|
||||
# Non-secret environment variables
|
||||
environment = {
|
||||
#
|
||||
};
|
||||
|
||||
# ── Container mode (podman) ──────────────────────────────────────────
|
||||
container = {
|
||||
enable = true;
|
||||
backend = "podman";
|
||||
};
|
||||
|
||||
settings = {
|
||||
# ── Model ──────────────────────────────────────────────────────────
|
||||
model = {
|
||||
default = "glm-5.1";
|
||||
provider = "zai";
|
||||
base_url = "https://api.z.ai/api/coding/paas/v4/";
|
||||
};
|
||||
|
||||
credential_pool_strategies = {
|
||||
zai = "fill_first";
|
||||
};
|
||||
|
||||
toolsets = ["all"];
|
||||
|
||||
# ── Agent ──────────────────────────────────────────────────────────
|
||||
agent = {
|
||||
max_turns = 90;
|
||||
gateway_timeout = 1800;
|
||||
tool_use_enforcement = "auto";
|
||||
};
|
||||
|
||||
# ── Terminal ───────────────────────────────────────────────────────
|
||||
terminal = {
|
||||
backend = "local";
|
||||
modal_mode = "auto";
|
||||
cwd = ".";
|
||||
timeout = 180;
|
||||
persistent_shell = true;
|
||||
};
|
||||
|
||||
# ── Browser ────────────────────────────────────────────────────────
|
||||
browser = {
|
||||
inactivity_timeout = 120;
|
||||
command_timeout = 30;
|
||||
cloud_provider = "local";
|
||||
};
|
||||
|
||||
# ── Checkpoints / Compression ──────────────────────────────────────
|
||||
checkpoints = {
|
||||
enabled = true;
|
||||
max_snapshots = 50;
|
||||
};
|
||||
|
||||
file_read_max_chars = 100000;
|
||||
|
||||
compression = {
|
||||
enabled = true;
|
||||
threshold = 0.5;
|
||||
target_ratio = 0.2;
|
||||
protect_last_n = 20;
|
||||
};
|
||||
|
||||
# ── Display ────────────────────────────────────────────────────────
|
||||
display = {
|
||||
compact = false;
|
||||
personality = "kawaii";
|
||||
resume_display = "full";
|
||||
busy_input_mode = "interrupt";
|
||||
inline_diffs = true;
|
||||
skin = "default";
|
||||
tool_progress = "all";
|
||||
};
|
||||
|
||||
# ── TTS / STT / Voice ──────────────────────────────────────────────
|
||||
tts = {
|
||||
provider = "elevenlabs";
|
||||
elevenlabs = {
|
||||
voice_id = elevenlabsVoiceId;
|
||||
model_id = "eleven_multilingual_v2";
|
||||
};
|
||||
};
|
||||
|
||||
stt = {
|
||||
enabled = true;
|
||||
provider = "local";
|
||||
local = {model = "base";};
|
||||
};
|
||||
|
||||
voice = {
|
||||
record_key = "ctrl+b";
|
||||
max_recording_seconds = 120;
|
||||
silence_threshold = 200;
|
||||
silence_duration = 3.0;
|
||||
};
|
||||
|
||||
# ── Memory ─────────────────────────────────────────────────────────
|
||||
memory = {
|
||||
memory_enabled = true;
|
||||
user_profile_enabled = true;
|
||||
memory_char_limit = 2200;
|
||||
user_char_limit = 1375;
|
||||
};
|
||||
|
||||
# ── Delegation ─────────────────────────────────────────────────────
|
||||
delegation = {
|
||||
max_iterations = 50;
|
||||
};
|
||||
|
||||
# ── Discord ────────────────────────────────────────────────────────
|
||||
discord = {
|
||||
require_mention = true;
|
||||
auto_thread = true;
|
||||
reactions = true;
|
||||
};
|
||||
|
||||
# ── Approvals / Security ───────────────────────────────────────────
|
||||
approvals = {
|
||||
mode = "manual";
|
||||
timeout = 60;
|
||||
};
|
||||
|
||||
security = {
|
||||
redact_secrets = true;
|
||||
tirith_enabled = true;
|
||||
tirith_fail_open = true;
|
||||
};
|
||||
|
||||
# ── Cron / Session ─────────────────────────────────────────────────
|
||||
cron = {wrap_response = true;};
|
||||
|
||||
session_reset = {
|
||||
mode = "both";
|
||||
idle_minutes = 1440;
|
||||
at_hour = 4;
|
||||
};
|
||||
|
||||
# ── Web ────────────────────────────────────────────────────────────
|
||||
web = {backend = "exa";};
|
||||
|
||||
# ── Platform Toolsets ──────────────────────────────────────────────
|
||||
platform_toolsets = {
|
||||
cli = [
|
||||
"browser"
|
||||
"clarify"
|
||||
"code_execution"
|
||||
"cronjob"
|
||||
"delegation"
|
||||
"file"
|
||||
"image_gen"
|
||||
"memory"
|
||||
"session_search"
|
||||
"skills"
|
||||
"terminal"
|
||||
"todo"
|
||||
"tts"
|
||||
"vision"
|
||||
"web"
|
||||
];
|
||||
telegram = [
|
||||
"browser"
|
||||
"clarify"
|
||||
"code_execution"
|
||||
"cronjob"
|
||||
"delegation"
|
||||
"file"
|
||||
"image_gen"
|
||||
"memory"
|
||||
"session_search"
|
||||
"skills"
|
||||
"terminal"
|
||||
"todo"
|
||||
"tts"
|
||||
"vision"
|
||||
"web"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user