Simplify Athena stack and recovery
This commit is contained in:
@@ -77,20 +77,16 @@ agent:
|
||||
max_web_searches: 8
|
||||
max_subagents: 8
|
||||
|
||||
# Compact before a tool-heavy session can grow beyond the selected model's
|
||||
# usable window. Large old tool results are pruned without an LLM call first;
|
||||
# lean tail retention avoids several expensive back-to-back summary passes.
|
||||
# Keep ample room for long agent work. Compression starts at 82% of whichever
|
||||
# router profile is selected and retains a useful 35% instead of collapsing a
|
||||
# large conversation to a tiny summary.
|
||||
compression:
|
||||
enabled: true
|
||||
progress_notices: true
|
||||
threshold: 0.65
|
||||
# A common absolute ceiling keeps all router profiles responsive. It also
|
||||
# prevents a long Medium/Large/Ultra chat from becoming impossible to move
|
||||
# back to Fast later.
|
||||
threshold_tokens: 60000
|
||||
target_ratio: 0.15
|
||||
threshold: 0.82
|
||||
target_ratio: 0.35
|
||||
tail_mode: "lean"
|
||||
protect_last_n: 8
|
||||
protect_last_n: 12
|
||||
protect_first_n: 0
|
||||
proactive_prune_tokens: 50000
|
||||
proactive_prune_min_result_chars: 4000
|
||||
@@ -158,51 +154,6 @@ timeouts:
|
||||
concurrent_batch: 900
|
||||
sequential_call: 900
|
||||
|
||||
mcp_servers:
|
||||
athena-platform:
|
||||
url: "http://mcp-platform-context:8000/mcp"
|
||||
timeout: 180
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
athena-operator:
|
||||
url: "http://mcp-athena-operator:8000/mcp"
|
||||
timeout: 900
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
web-general:
|
||||
url: "http://tinysearch:8000/mcp"
|
||||
timeout: 180
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
github:
|
||||
url: "http://mcp-github:8000/mcp"
|
||||
timeout: 300
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
homeassistant-admin:
|
||||
url: "http://mcp-homeassistant:8000/mcp"
|
||||
timeout: 300
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
arr:
|
||||
url: "http://mcp-arr:8000/mcp"
|
||||
timeout: 600
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
navidrome:
|
||||
url: "http://mike-ai-mcp-navidrome:3000/mcp"
|
||||
timeout: 300
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
deemix:
|
||||
url: "http://mcp-deemix:8000/mcp"
|
||||
timeout: 300
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
unraid:
|
||||
url: "${MUA_MCP_URL}"
|
||||
headers:
|
||||
Authorization: "Bearer ${MUA_MCP_BEARER_TOKEN}"
|
||||
timeout: 900
|
||||
connect_timeout: 30
|
||||
supports_parallel_tool_calls: false
|
||||
# BEGIN MANAGED MCP SERVERS
|
||||
mcp_servers: {}
|
||||
# END MANAGED MCP SERVERS
|
||||
|
||||
@@ -78,6 +78,9 @@ if placeholder not in text:
|
||||
raise SystemExit("ROUTER_API_KEY placeholder missing from managed Hermes config")
|
||||
path.write_text(text.replace(placeholder, os.environ["ROUTER_API_KEY"], 1))
|
||||
PY
|
||||
python3 "$STACK_DIR/platform/mcp/sync-clients.py" \
|
||||
--registry "$STACK_DIR/config/mcp-registry.json" \
|
||||
--hermes "$HERMES_DATA_DIR/config.yaml"
|
||||
install -m 0600 "$STACK_DIR/platform/hermes/SOUL.md" "$HERMES_DATA_DIR/SOUL.md"
|
||||
chown -R 10000:10000 "$HERMES_DATA_DIR"
|
||||
"$STACK_DIR/platform/hermes/install-skills.sh"
|
||||
|
||||
@@ -30,8 +30,10 @@ create_profile() {
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set agent.max_turns 64
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set agent.reasoning_effort minimal
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set auxiliary.title_generation.enabled false
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set compression.threshold_tokens 60000
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set compression.protect_last_n 8
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config unset compression.threshold_tokens || true
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set compression.threshold 0.82
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set compression.target_ratio 0.35
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set compression.protect_last_n 12
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set compression.protect_first_n 0
|
||||
docker exec "$HERMES_CONTAINER" hermes -p "$name" config set platform_toolsets.cli \
|
||||
'["web","terminal","file","skills","todo","memory","vision","tts"]'
|
||||
@@ -80,6 +82,12 @@ for path in paths:
|
||||
path.write_text(text)
|
||||
PY
|
||||
|
||||
sync_args=(--registry "${STACK_DIR:-/opt/mike-ai/stack}/config/mcp-registry.json")
|
||||
while IFS= read -r config; do
|
||||
sync_args+=(--hermes "$config")
|
||||
done < <(find "$HERMES_DATA_DIR" -name config.yaml -type f -print)
|
||||
python3 "${STACK_DIR:-/opt/mike-ai/stack}/platform/mcp/sync-clients.py" "${sync_args[@]}"
|
||||
|
||||
"${STACK_DIR:-/opt/mike-ai/stack}/platform/hermes/install-skills.sh"
|
||||
docker exec "$HERMES_CONTAINER" hermes profile list
|
||||
printf 'HERMES_PROFILES_OK\n'
|
||||
|
||||
@@ -4,22 +4,22 @@ description: Understand, operate and extend the Athena AI host.
|
||||
license: MIT
|
||||
metadata:
|
||||
hermes:
|
||||
version: 1.0.0
|
||||
version: 2.0.0
|
||||
author: Michael Roll
|
||||
platforms: [linux]
|
||||
tags: [athena, docker, mcp, models, recovery]
|
||||
tags: [athena, docker, mcp, models, backup]
|
||||
---
|
||||
|
||||
# Athena Operator
|
||||
|
||||
Use this skill for work on Athena itself: Docker, MCPs, models, profiles,
|
||||
Hermes, OpenWebUI, TTS, STT, image generation, Git and recovery.
|
||||
Hermes, OpenWebUI, TTS, STT, image generation, Git and backups.
|
||||
|
||||
## Start
|
||||
|
||||
1. Read `ATHENA.md` through Athena Platform Context. It is the normal source
|
||||
of architectural truth.
|
||||
2. Call `athena_operator_inspect` once for the affected area.
|
||||
1. Call `athena_operator_inspect` with `subject=guide`; it returns the current
|
||||
`ATHENA.md` as the architectural truth.
|
||||
2. Inspect the affected live area only if needed.
|
||||
3. Search for the concrete source file, then read only the required lines.
|
||||
|
||||
Do not rediscover the complete platform for every task. Do not read entire
|
||||
@@ -32,8 +32,9 @@ apply the smallest durable change. The operator owns the Git worktree and
|
||||
deployment access; do not clone another repository or request another SSH key.
|
||||
|
||||
Afterwards run focused checks, verify the affected service, commit and push.
|
||||
Create a recovery kit after the complete change works, not after every
|
||||
intermediate edit.
|
||||
The scheduled Docker-data backup is automatic. After storage-affecting work,
|
||||
run one manual backup and verify its archive instead of building a special
|
||||
recovery kit.
|
||||
|
||||
For a new MCP, normally change only its server code, Dockerfile, MCP Compose
|
||||
service, env example, client registration and a focused test. Reuse an existing
|
||||
@@ -47,7 +48,7 @@ backend instead of installing a duplicate service.
|
||||
- Prefer specialist MCPs for Home Assistant, Unraid, ARR, Navidrome and other
|
||||
external systems.
|
||||
- A healthy container is not proof; perform one bounded functional check.
|
||||
- Never claim a write, deploy, commit, push or recovery succeeded without its
|
||||
- Never claim a write, deploy, commit, push or backup succeeded without its
|
||||
actual result.
|
||||
|
||||
## Remote-host boundary
|
||||
|
||||
Reference in New Issue
Block a user