Introduce structured journal relabel rules on puck to tag Pallas-managed
units with {service, project, component} labels matching the Mnemosyne
and Daedalus schema. Add kottos release variable and vault secrets
example entries for the new Pallas FastAgent runtime.
Remove the defunct mnemosyne syslog listener now that Mnemosyne ships
JSON logs via the docker-socket pipeline.
138 lines
5.4 KiB
YAML
138 lines
5.4 KiB
YAML
---
|
||
# 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 }}"
|
||
|
||
# =============================================================================
|
||
# JupyterLab Configuration
|
||
# =============================================================================
|
||
jupyterlab_user: robert
|
||
jupyterlab_group: robert
|
||
jupyterlab_notebook_dir: /home/robert
|
||
jupyterlab_venv_dir: /home/robert/env/jupyter
|
||
|
||
# Ports
|
||
jupyterlab_port: 22081 # JupyterLab (localhost only)
|
||
jupyterlab_proxy_port: 22071 # OAuth2-Proxy (exposed to HAProxy)
|
||
|
||
# OAuth2-Proxy Configuration
|
||
jupyterlab_oauth2_proxy_dir: /etc/oauth2-proxy-jupyter
|
||
jupyterlab_oauth2_proxy_version: "7.6.0"
|
||
jupyterlab_domain: "ouranos.helu.ca"
|
||
jupyterlab_oauth2_oidc_issuer_url: "https://id.ouranos.helu.ca"
|
||
jupyterlab_oauth2_redirect_url: "https://jupyterlab.ouranos.helu.ca/oauth2/callback"
|
||
|
||
# OAuth2 Credentials (from vault)
|
||
jupyterlab_oauth_client_id: "{{ vault_jupyterlab_oauth_client_id }}"
|
||
jupyterlab_oauth_client_secret: "{{ vault_jupyterlab_oauth_client_secret }}"
|
||
jupyterlab_oauth2_cookie_secret: "{{ vault_jupyterlab_oauth2_cookie_secret }}"
|