openai: compose healthchecks + dependency ordering, registries, LiteLLM routing
docker-compose.yml gains healthchecks and depends_on/condition chains for the litellm/langfuse/postgres tier so dependants wait for a genuinely ready service instead of a started container. Also plumbs AGAP_MCP_TOKEN into the adolf and adolf-llm containers, sourced from openai/.env (gitignored), for the kb#180 bearer auth on the agap MCP server; shared-mcp.json consumes it via bearerTokenEnvVar so the Kimi backbone authenticates too. agent-registry.yaml / agent_registry.py: the version-controlled source of truth for agent identities and trust classes -- the same ids the agap-mcp token map resolves to (`adolf`, `claude-coder`; note `claude-code-cli` is the runtime entry, not an agent identity). model-registry.yaml, litellm-config.yaml, auto-router-routes.json and provision_litellm_keys.py: model tiering, virtual-key provisioning and auto-router routes. tei-reranker/ is the local reranker service backing Hindsight recall. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -124,21 +124,18 @@ agents:
|
||||
#
|
||||
# Counts (same tool lists both layers, confirmed identical by
|
||||
# validate_capability_grants.py, exit 0):
|
||||
# agap 32->24, hindsight 29->9, kanboard 23->14,
|
||||
# openclaw-tools 5->5 (already minimal, no filter needed).
|
||||
# marketplace stays UNFILTERED at layer 1 (7/13 kept) but is not in
|
||||
# shared-mcp.json AT ALL — Kimi's session never had it in the first
|
||||
# place (pre-existing gap between what OpenClaw offers Adolf and
|
||||
# what reaches Kimi, out of kb#144's scope to close).
|
||||
# Reachable-by-Kimi total: hindsight+kanboard+openclaw-tools+agap
|
||||
# 102-13(marketplace, never reached Kimi)=89 -> 9+14+5+24=52 tools
|
||||
# (-42%). Byte-measured (chars/4) against each server's real
|
||||
# tools/list JSON schemas: est. ~7K tokens saved/turn — estimate
|
||||
# pending the real wire.jsonl number, which needs the adolf-llm
|
||||
# container restart alvis owns (shared-mcp.json is bind-mounted
|
||||
# read-only but adolf-llm's server.js caches its content at process
|
||||
# start, so editing the file alone does not take effect — see
|
||||
# capability_grant_status below for the confirm-post-restart command).
|
||||
# agap 32->28 (includes kb#95 wiki_* and kb#170 todoist_capture_idea),
|
||||
# hindsight 29->9, kanboard 23->14, marketplace 13->7 (now in shared-
|
||||
# mcp.json, reaches Kimi), openclaw-tools 5->5 (already minimal).
|
||||
# Reachable-by-Kimi total (2026-07-26): 9+14+7+5+28=63 tools.
|
||||
# Previous total was 52 (excluding marketplace, pre-shared-mcp.json);
|
||||
# byte-measure against each server's real tools/list JSON schemas:
|
||||
# est. ~9K tokens/turn. Estimate pending the real wire.jsonl number,
|
||||
# which needs the adolf-llm container restart alvis owns
|
||||
# (shared-mcp.json is bind-mounted read-only but adolf-llm's
|
||||
# server.js caches its content at process start, so editing the file
|
||||
# alone does not take effect — see capability_grant_status below for
|
||||
# the confirm-post-restart command).
|
||||
#
|
||||
# kb#95 (2026-07-23): added wiki_search/wiki_read/wiki_edit (family
|
||||
# MediaWiki / РодоВики, family.alogins.net) to agap-mcp and to both
|
||||
@@ -148,11 +145,17 @@ agents:
|
||||
# recomputed here since it needs the same live wire.jsonl proof kb#144
|
||||
# used and this task does not touch the running containers (see
|
||||
# shared_mcp_kimi_allowlist below for the exact confirm command).
|
||||
#
|
||||
# kb#170: added todoist_capture_idea (agap-mcp/src/capture.js —
|
||||
# classify with local bge-m3 nearest-centroid, no LLM call, then
|
||||
# create the labelled Todoist task in one round trip) to agap-mcp
|
||||
# and to both layers' agap allowlist below. Ages the counts comment
|
||||
# above by +1/+1 for the same reason as kb#95's note.
|
||||
mcp_tool_filter:
|
||||
hindsight: [recall, retain, reflect, list_memories, get_memory, update_memory, list_directives, create_directive, delete_directive]
|
||||
kanboard: [kanboard_list_projects, kanboard_get_project, kanboard_list_tasks, kanboard_my_tasks, kanboard_get_task, kanboard_search_tasks, kanboard_list_users, kanboard_project_activity, kanboard_create_task, kanboard_update_task, kanboard_move_task, kanboard_change_task_status, kanboard_assign_task, kanboard_add_comment]
|
||||
marketplace: [marketplace_find_best, marketplace_search, marketplace_get_product, marketplace_get_recommendations, marketplace_get_reviews, marketplace_compare_prices, marketplace_status]
|
||||
agap: [vw_get_password, vw_get_item, vw_list_items, vw_create_login, vw_update_password, ha_get_state, ha_list_entities, ha_call_service, ha_get_history, zabbix_get_problems, zabbix_get_hosts, zabbix_get_items, zabbix_get_triggers, radicale_list_calendars, radicale_list_events, radicale_get_event, radicale_put_event, radicale_delete_event, radicale_move_event, todoist_list_tasks, todoist_list_projects, todoist_create_task, todoist_update_task, todoist_complete_task, wiki_search, wiki_read, wiki_edit]
|
||||
agap: [vw_get_password, vw_get_item, vw_list_items, vw_create_login, vw_update_password, ha_get_state, ha_list_entities, ha_call_service, ha_get_history, zabbix_get_problems, zabbix_get_hosts, zabbix_get_items, zabbix_get_triggers, radicale_list_calendars, radicale_list_events, radicale_get_event, radicale_put_event, radicale_delete_event, radicale_move_event, todoist_list_tasks, todoist_list_projects, todoist_create_task, todoist_update_task, todoist_complete_task, todoist_capture_idea, wiki_search, wiki_read, wiki_edit]
|
||||
openclaw-tools: null # no filter in openclaw.json — already minimal (5/5 kept)
|
||||
note: >
|
||||
"scoped core tools" per kb#134's brief, now REAL at both levels: this
|
||||
@@ -178,11 +181,20 @@ agents:
|
||||
- { id: adolf-elizaveta, role: private, interlocutor: elizaveta }
|
||||
- { id: adolf-shared, role: shared, interlocutor: household }
|
||||
current_state: >
|
||||
NOT split yet. A single live bank "adolf" (hindsight MCP,
|
||||
http://hindsight:8888/mcp/adolf/, 269+ facts) serves every
|
||||
interlocutor today with no per-human isolation — the exact defect
|
||||
kb#153 exists to fix (depends on this registry existing first).
|
||||
The three banks above are kb#153's target, not current fact.
|
||||
NOT split yet for the plugin's recall/retain hooks: a single live
|
||||
bank "adolf" (525+ facts) serves every interlocutor today with no
|
||||
per-human isolation — the exact defect kb#153 exists to fix
|
||||
(depends on this registry existing first). The three banks above
|
||||
are kb#153's target, not current fact for the hooks.
|
||||
kb#169 (2026-07-26): the SEPARATE raw hindsight MCP tool surface
|
||||
(mcp.servers.hindsight in adolf/openclaw.json + openai/shared-
|
||||
mcp.json — recall/retain/reflect/etc. callable directly by the
|
||||
model, bypassing #153's interlocutor-scoping entirely) has been
|
||||
repointed from http://hindsight:8888/mcp/adolf/ (the unpartitioned
|
||||
bank, still what the hooks use) to http://hindsight:8888/mcp/
|
||||
adolf-shared/ (pre-existing, 0 facts). That surface can now only
|
||||
ever touch the shared bank — never a private one, never the mixed
|
||||
"adolf" bank — regardless of who's talking to Adolf.
|
||||
kb_identity: { username: adolf, user_id: 3 }
|
||||
availability_note: "a(t) inherited from backbone at read time (kimi: quota-gated, ~60msg/5h ~300/wk — see model-registry.yaml)"
|
||||
|
||||
@@ -215,6 +227,14 @@ agents:
|
||||
model: "session (ephemeral, per invocation) + repo state (git history, CLAUDE.md files, kanboard task/comment history) — no persistent Hindsight bank"
|
||||
kb_identity: { username: claude, user_id: 2 }
|
||||
availability_note: "a(t) inherited from backbone at read time (claude-code-cli: always-on, gated by claude-usage windows)"
|
||||
completion_convention: >
|
||||
Verified-completion flow (DESIGN v2.1 §2, kb#159): when completing a task,
|
||||
the worker/agent NEVER closes it — only moves it to Done (unverified
|
||||
completion) and leaves it open. Closing is verification, done by someone
|
||||
OTHER than the producer (the submitter, a human, or a reviewer-agent after
|
||||
checking acceptance criteria). The fabric-keeper audits this: closed tasks
|
||||
where the producer also closed them are flagged as kb#159 violations in
|
||||
the daily digest.
|
||||
|
||||
# ── torgash — marketplace analyst (sandboxed) ───────────────────────────
|
||||
- id: torgash
|
||||
|
||||
Reference in New Issue
Block a user