--- # Puck Configuration - Application Runtime # Services: alloy, docker, lxqt, jupyterlab services: - alloy - docker - gitea_runner - athena - kottos # Gitea Runner gitea_runner_name: "puck-runner" # Alloy alloy_log_level: "warn" angelia_syslog_port: 51422 # mnemosyne_syslog_port retained for inventory-compatibility while the # Alloy Docker-socket discovery block rolls out; no listener binds to it # any more. Delete once the docker-socket pipeline is proven in prod. mnemosyne_syslog_port: 51431 athena_syslog_port: 51424 kairos_syslog_port: 51425 icarlos_syslog_port: 51426 spelunker_syslog_port: 51428 jupyterlab_syslog_port: 51411 # daedalus_syslog_port retained for the same reason as mnemosyne above. daedalus_syslog_port: 51430 # ============================================================================= # PPLG scrape targets on puck # ============================================================================= # Consumed by ``ansible/pplg/prometheus.yml.j2`` on Prospero. Defining them # here keeps the scrape config fully parametric so the same playbook runs # unchanged against Ouranos / Virgo / Taurus — each environment sets its # own puck-equivalent host in its host_vars. # Daedalus (FastAPI on puck, behind nginx) daedalus_metrics_host: "puck.incus" daedalus_metrics_port: 22181 # Mnemosyne — /metrics is served by nginx (mnemosyne-web:23181) and # proxied to the Django app container, which owns the single # prometheus_client process registry that both django-prometheus # (HTTP / Celery) and the MCP server's tool-call counters write to. mnemosyne_metrics_host: "puck.incus" mnemosyne_metrics_port: 23181 # ============================================================================= # Kottos Configuration (Pallas FastAgent runtime) # ============================================================================= # Engineering agents (Harper, Scotty, Research, Tech Research) running as a # single systemd-managed ``pallas`` process. Logs land in journald via # SyslogIdentifier=kottos, then Alloy's journal relabel block tags them as # {service="pallas", project="kottos"} for Loki. kottos_user: kottos kottos_group: kottos kottos_directory: /srv/kottos kottos_host: "puck.incus" kottos_namespace: "ca.helu.kottos" # Ports — registry at 24100, agents 24101–24149, sub-agents 24150–24199 kottos_registry_port: 24100 kottos_harper_port: 24101 kottos_scotty_port: 24102 kottos_research_port: 24150 kottos_tech_research_port: 24151 # Log level — INFO surfaces lifecycle + failures, DEBUG adds per-request # detail and successful health probe lines. Ouranos Lab convention: # health-check 200 OKs live in DEBUG, never in INFO. pallas_log_level: INFO # fast-agent's own logger — keep at INFO in prod, bump to DEBUG alongside # pallas_log_level when chasing MCP transport issues. kottos_fastagent_log_level: info # LLM provider — the same OpenAI-compatible Qwen endpoint Kottos uses today. kottos_default_model: "openai.Qwen3.5-35B-A3B-UD-Q4_K_XL.gguf" kottos_openai_base_url: "http://nyx.helu.ca:22079/v1" kottos_model_vision: true kottos_model_context_window: 192000 kottos_model_max_output_tokens: 16384 kottos_timezone: "America/Toronto" # Downstream MCP server URLs — each parametric so Virgo / Taurus override # them in their own host_vars without touching the templates. kottos_argos_url: "http://miranda.incus:25534/mcp" kottos_neo4j_cypher_url: "http://circe.helu.ca:22034/mcp" kottos_kernos_scotty_url: "http://caliban.incus:22062/mcp" kottos_rommie_url: "http://caliban.incus:20361/mcp" kottos_gitea_url: "http://miranda.incus:25535/mcp" kottos_grafana_url: "http://miranda.incus:25533/mcp" kottos_kernos_harper_url: "http://korax.helu.ca:20261/mcp" kottos_angelia_url: "https://ouranos.helu.ca/mcp/" kottos_mnemosyne_url: "https://mnemosyne.ouranos.helu.ca/mcp/" # ============================================================================= # Athena Configuration # ============================================================================= athena_user: athena athena_group: athena athena_directory: /srv/athena athena_port: 22481 athena_domain: "ouranos.helu.ca" # Casdoor SSO Credentials (from vault) athena_casdoor_client_id: "{{ vault_athena_oauth_client_id }}" athena_casdoor_client_secret: "{{ vault_athena_oauth_client_secret }}" # Application Secrets (from vault) athena_secret_key: "{{ vault_athena_secret_key }}" athena_db_password: "{{ vault_athena_db_password }}"