diff --git a/README.md b/README.md index 73d024a..bc16854 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,11 @@ Kill_LIFE structure un projet embarque autour de specs testables, d'agents speci - CAD headless KiCad 10 first - evidence, compliance et workflows canoniques +Le runtime operateur local `ZeroClaw` reste supporte pour les boucles +agentiques et les integrations. `LangGraph` et `AutoGen` sont gardes comme +patterns d'integration optionnels autour de `ZeroClaw`, pas comme chemins +critiques du gate stable repo-local. + ## Structure utile ```text @@ -50,6 +55,36 @@ cd Kill_LIFE bash install_kill_life.sh ``` +### ZeroClaw natif (optionnel) + +Le runtime operateur `ZeroClaw` peut aussi tourner nativement sur la machine +operateur. Le chemin supporte dans ce repo est le binaire officiel installe +dans `~/.cargo/bin`, avec compatibilite maintenue pour +`zeroclaw/target/release/zeroclaw`. + +```bash +git clone https://github.com/zeroclaw-labs/zeroclaw.git zeroclaw +bash zeroclaw/bootstrap.sh --no-guided --prefer-prebuilt +mkdir -p "$HOME/.local/bin" zeroclaw/target/release +ln -sfn "$HOME/.cargo/bin/zeroclaw" "$HOME/.local/bin/zeroclaw" +ln -sfn "$HOME/.cargo/bin/zeroclaw" zeroclaw/target/release/zeroclaw +zeroclaw --version +``` + +Les launchers `tools/ai/zeroclaw_*.sh` resolvent maintenant la racine du repo +dynamiquement et retombent sur `command -v zeroclaw` si besoin. + +Chemin operateur supporte: + +```bash +bash tools/ai/zeroclaw_stack_up.sh +bash tools/ai/zeroclaw_stack_down.sh +``` + +Le runtime `ZeroClaw` reste on-demand. Les runbooks et index d'integration +servis via `mascarade`/`edge-proxy` viennent de [`tools/ai/integrations/`](tools/ai/integrations/). +Ils restent consultables meme quand le runtime `ZeroClaw` n'est pas demarre. + ### Bootstrap Python repo-local ```bash diff --git a/docs/AGENTIC_LANDSCAPE.md b/docs/AGENTIC_LANDSCAPE.md index 7f76d25..7acf30b 100644 --- a/docs/AGENTIC_LANDSCAPE.md +++ b/docs/AGENTIC_LANDSCAPE.md @@ -4,8 +4,15 @@ - Standards injection: Agent OS (standards versionnés + profils) citeturn0search3 - Role workflows + gates: BMAD-METHOD - Tool-first runtime (local): Agent Zero +- Native operator runtime: ZeroClaw CLI/gateway on the operator machine +- Optional orchestration overlay: LangGraph around ZeroClaw - Interop tools: MCP local en `stdio` via le runtime `kicad-mcp` +Posture operateur retenue: +- `ZeroClaw` reste un runtime local demarrable a la demande. +- `LangGraph`, `AutoGen` et `n8n` restent des overlays/runbooks autour de ce runtime. +- les surfaces publiques `zeroclaw.saillant.cc` et `langgraph.saillant.cc` servent les runbooks operateur, pas un service coeur always-on. + Le repo fournit : - `specs/` pour la source de vérité - `standards/` pour les conventions hardware/firmware diff --git a/docs/LOCAL_CHANGE_BUNDLES_2026-03-08.md b/docs/LOCAL_CHANGE_BUNDLES_2026-03-08.md index 76fad1f..495f05a 100644 --- a/docs/LOCAL_CHANGE_BUNDLES_2026-03-08.md +++ b/docs/LOCAL_CHANGE_BUNDLES_2026-03-08.md @@ -1,16 +1,19 @@ # Local Change Bundles — 2026-03-08 But: figer l'etat reel de `Kill_LIFE` apres fermeture locale et publication de -la vague `MCP/agentics`, puis documenter ce qui reste vraiment hors repo-suivi. +la vague `MCP/agentics`, puis suivre le lot local `zeroclaw-operator-runtime` +sans rouvrir le backlog MCP canonique. ## Etat courant Etat reel: -- un petit lot `mac-local-mcp` peut vivre seul sans rouvrir le runtime MCP canonique -- le runtime MCP canonique est `ready` +- le runtime MCP canonique reste `ready` - les validations live `knowledge-base`, `github-dispatch` et `nexar_api` ont deja ete rejouees sur la machine de reference +- le lot `zeroclaw-operator-runtime` est implemente, verifie et publie +- un petit lot `mac-local-mcp` peut toujours vivre seul sans rouvrir le runtime + MCP canonique - `.mascarade/` reste genere localement mais est maintenant ignore explicitement par le repo @@ -37,6 +40,60 @@ Resultat courant: - `github-dispatch` => `ready`, `live_validation=passed` - `nexar_api` => chemin live valide, `demo_mode=false`, limite externe de quota +## Lot logique publie + +### `zeroclaw-operator-runtime` + +Objet: + +- rendre les launchers `ZeroClaw` portables hors chemins Mac hardcodes +- documenter `ZeroClaw` comme runtime operateur on-demand +- versionner les assets `tools/ai/integrations/` servis par le proxy operateur +- garder `LangGraph`, `AutoGen` et `n8n` comme overlays/runbooks, pas comme + services coeur + +Fichiers: + +- `README.md` +- `docs/AGENTIC_LANDSCAPE.md` +- `docs/LOCAL_CHANGE_BUNDLES_2026-03-08.md` +- `tools/ai/integrations/README.md` +- `tools/ai/integrations/index.html` +- `tools/ai/integrations/autogen/README.md` +- `tools/ai/integrations/autogen/index.html` +- `tools/ai/integrations/langgraph/README.md` +- `tools/ai/integrations/langgraph/index.html` +- `tools/ai/integrations/n8n/README.md` +- `tools/ai/integrations/n8n/index.html` +- `tools/ai/integrations/zeroclaw/README.md` +- `tools/ai/integrations/zeroclaw/index.html` +- `tools/ai/zeroclaw_dual_bootstrap.sh` +- `tools/ai/zeroclaw_dual_chat.sh` +- `tools/ai/zeroclaw_hw_firmware_loop.sh` +- `tools/ai/zeroclaw_stack_down.sh` +- `tools/ai/zeroclaw_stack_up.sh` +- `tools/ai/zeroclaw_watch_1min.sh` +- `tools/ai/zeroclaw_webhook_send.sh` + +Checks canoniques de fermeture: + +```bash +cd /home/clems/Kill_LIFE && zeroclaw --version +cd /home/clems/Kill_LIFE && bash -n tools/ai/zeroclaw_dual_bootstrap.sh tools/ai/zeroclaw_dual_chat.sh tools/ai/zeroclaw_hw_firmware_loop.sh tools/ai/zeroclaw_stack_down.sh tools/ai/zeroclaw_stack_up.sh tools/ai/zeroclaw_watch_1min.sh tools/ai/zeroclaw_webhook_send.sh +cd /home/clems/Kill_LIFE && bash tools/ai/zeroclaw_stack_up.sh +cd /home/clems/Kill_LIFE && bash tools/ai/zeroclaw_stack_down.sh +``` + +Resultat local: + +- `zeroclaw --version` -> `0.1.7` +- `zeroclaw_stack_up.sh --help` et `zeroclaw_stack_down.sh --help` n'ont plus + d'effet de bord sur le runtime +- le demarrage on-demand remonte bien `gateway`, `follow UI` et `Prometheus` +- le runtime s'arrete proprement sans effacer les artefacts +- `tools/ai/integrations/` devient la source de verite des runbooks servis par + le proxy operateur + ## Lots logiques deja figes Les lots ci-dessous restent utiles comme cartographie historique si une diff --git a/tools/ai/integrations/README.md b/tools/ai/integrations/README.md new file mode 100644 index 0000000..7793a0c --- /dev/null +++ b/tools/ai/integrations/README.md @@ -0,0 +1,31 @@ +# ZeroClaw Integrations + +ZeroClaw remains in scope as the local operator stack for Kill_LIFE. + +This directory is synced by `tools/ai/zeroclaw_stack_up.sh` into +`artifacts/zeroclaw/integrations/`, then served by the follow UI. + +Current integration posture: + +- `ZeroClaw`: kept as the local operator stack entrypoint. +- `n8n`: kept as an external automation bridge and workflow handoff surface. +- `LangGraph`: kept as an optional orchestration pattern, not the default runtime. +- `AutoGen`: kept as an optional multi-agent experimentation path. + +These integrations are intentionally documented as operator runbooks. They are +not required for the canonical repo-local stable path. + +Operator posture: + +- `ZeroClaw` runtime is started on demand via `tools/ai/zeroclaw_stack_up.sh`. +- `zeroclaw.saillant.cc` and `langgraph.saillant.cc` are expected to serve these + runbooks behind the authenticated `edge-proxy`. +- The static runbooks remain available even when the local `ZeroClaw` runtime is + stopped. + +Available runbooks: + +- [`zeroclaw/README.md`](zeroclaw/README.md) +- [`n8n/README.md`](n8n/README.md) +- [`langgraph/README.md`](langgraph/README.md) +- [`autogen/README.md`](autogen/README.md) diff --git a/tools/ai/integrations/autogen/README.md b/tools/ai/integrations/autogen/README.md new file mode 100644 index 0000000..36167d9 --- /dev/null +++ b/tools/ai/integrations/autogen/README.md @@ -0,0 +1,19 @@ +# AutoGen Runbook + +`AutoGen` stays available as an optional multi-agent experimentation path +alongside `ZeroClaw`. + +Use it when you want: + +- ad hoc multi-agent roleplay or decomposition +- experimentation outside the canonical repo workflow path +- quick prototypes before turning a flow into a tracked workflow or MCP tool + +Current posture: + +- retained as a documented integration +- not part of the canonical stable gate +- should remain outside critical firmware/CAD/release paths by default + +If revived as code, keep it isolated from the stable repo-local CI path and +document the trigger conditions explicitly. diff --git a/tools/ai/integrations/autogen/index.html b/tools/ai/integrations/autogen/index.html new file mode 100644 index 0000000..a1c37fa --- /dev/null +++ b/tools/ai/integrations/autogen/index.html @@ -0,0 +1,53 @@ + + + + + + AutoGen Lab + + + +
+

AutoGen Lab

+

+ AutoGen stays available as an experimentation lane outside the critical + path. +

+

Open the AutoGen README

+
+ + diff --git a/tools/ai/integrations/index.html b/tools/ai/integrations/index.html new file mode 100644 index 0000000..7385d19 --- /dev/null +++ b/tools/ai/integrations/index.html @@ -0,0 +1,107 @@ + + + + + + ZeroClaw Integrations + + + +
+

ZeroClaw Integrations

+

+ Runbooks served by the ZeroClaw follow UI and reused by the Mascarade + operator proxy. ZeroClaw stays the local operator stack; the integrations + below stay in scope without becoming part of the stable critical path. +

+
+ +
Operator runtime
+
ZeroClaw
+
Local gateway, pairing, follow UI and operator loops.
+
+ +
Orchestration overlay
+
LangGraph
+
Optional graph-shaped orchestration around ZeroClaw.
+
+ +
Workflow bridge
+
n8n
+
Low-code handoff and automation around ZeroClaw webhooks.
+
+ +
Multi-agent lab
+
AutoGen
+
Optional experimentation outside the stable runtime path.
+
+
+
+ + diff --git a/tools/ai/integrations/langgraph/README.md b/tools/ai/integrations/langgraph/README.md new file mode 100644 index 0000000..a398e15 --- /dev/null +++ b/tools/ai/integrations/langgraph/README.md @@ -0,0 +1,26 @@ +# LangGraph Runbook + +`LangGraph` stays in scope as an optional orchestration layer around +`ZeroClaw`. + +Use it when you want: + +- explicit graph-shaped control flow +- checkpointed or resumable orchestration +- a graph runtime separated from the canonical repo workflows + +Current posture in Kill_LIFE: + +- `ZeroClaw` remains the local operator stack. +- `LangGraph` is retained as an integration pattern, not as the default + runtime path. +- No `LangGraph` service is wired into the main `mascarade` stack by default. + +Recommended role split: + +- `ZeroClaw`: local gateway, operator UX, prompts, pairing, follow UI +- `LangGraph`: optional orchestration graph for complex flows +- repo workflows / evidence: canonical tracked outputs + +If this path is reactivated, add the concrete graph app or runner as tracked +artifacts in `tools/ai/` or a dedicated submodule, then link it from here. diff --git a/tools/ai/integrations/langgraph/index.html b/tools/ai/integrations/langgraph/index.html new file mode 100644 index 0000000..39041f0 --- /dev/null +++ b/tools/ai/integrations/langgraph/index.html @@ -0,0 +1,80 @@ + + + + + + LangGraph Operator Surface + + + +
+

LangGraph Overlay

+

+ LangGraph stays in scope as the optional orchestration layer around + ZeroClaw. It is kept visible to operators without becoming the default + runtime path for Kill_LIFE. +

+
+
Current posture
+ +
+
+
Runbook
+

Open the LangGraph README

+
+
+ + diff --git a/tools/ai/integrations/n8n/README.md b/tools/ai/integrations/n8n/README.md new file mode 100644 index 0000000..8e99bba --- /dev/null +++ b/tools/ai/integrations/n8n/README.md @@ -0,0 +1,23 @@ +# n8n Runbook + +`n8n` stays in scope as the low-code workflow bridge around ZeroClaw, not as +the canonical source of truth for runtime state. + +Use it for: + +- operator-triggered chains around `zeroclaw` webhooks +- import/export of automation flows +- glue logic around notifications, reviews, or dispatch + +Current posture: + +- ZeroClaw exposes the runbook from `/integrations/n8n/README.md`. +- The historical JSON workflow names are kept as references, but the canonical + runtime path is the ZeroClaw gateway plus repo workflows. +- If you need concrete n8n workflow files again, regenerate them as explicit + tracked artifacts instead of relying on dead links. + +Historical workflow names: + +- `zeroclaw_orchestrator_workflow` +- `zeroclaw_pr_autotriage_workflow` diff --git a/tools/ai/integrations/n8n/index.html b/tools/ai/integrations/n8n/index.html new file mode 100644 index 0000000..5808d3c --- /dev/null +++ b/tools/ai/integrations/n8n/index.html @@ -0,0 +1,52 @@ + + + + + + n8n Runbook + + + +
+

n8n Workflow Bridge

+

+ n8n remains the low-code bridge around ZeroClaw and repo workflows. +

+

Open the n8n README

+
+ + diff --git a/tools/ai/zeroclaw_dual_bootstrap.sh b/tools/ai/zeroclaw_dual_bootstrap.sh index 0f059f0..af2db0a 100755 --- a/tools/ai/zeroclaw_dual_bootstrap.sh +++ b/tools/ai/zeroclaw_dual_bootstrap.sh @@ -1,9 +1,11 @@ #!/usr/bin/env bash set -euo pipefail -ZEROCLAW_BIN="${ZEROCLAW_BIN:-/Users/cils/Documents/Lelectron_rare/Kill_LIFE/zeroclaw/target/release/zeroclaw}" -RTC_REPO="/Users/cils/Documents/Lelectron_rare/RTC_BL_PHONE" -ZACUS_REPO="/Users/cils/Documents/Lelectron_rare/le-mystere-professeur-zacus" +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="${ZEROCLAW_ROOT_DIR:-$(cd -- "$SCRIPT_DIR/../.." && pwd)}" +ZEROCLAW_BIN="${ZEROCLAW_BIN:-$ROOT_DIR/zeroclaw/target/release/zeroclaw}" +RTC_REPO="${ZEROCLAW_RTC_REPO:-$HOME/RTC_BL_PHONE}" +ZACUS_REPO="${ZEROCLAW_ZACUS_REPO:-$HOME/le-mystere-professeur-zacus}" HARDWARE_ONLY=0 usage() { @@ -42,11 +44,25 @@ if [[ ! -x "$ZEROCLAW_BIN" ]]; then fi fi +require_repo_dir() { + local label="$1" + local repo="$2" + if [[ -d "$repo" ]]; then + return 0 + fi + echo "$label repo not found: $repo" >&2 + echo "Pass --$(printf '%s' "$label" | tr '[:upper:]' '[:lower:]') or export ZEROCLAW_${label}_REPO." >&2 + exit 1 +} + if [[ "$HARDWARE_ONLY" == "1" ]]; then "$ZEROCLAW_BIN" hardware discover exit 0 fi +require_repo_dir "RTC" "$RTC_REPO" +require_repo_dir "ZACUS" "$ZACUS_REPO" + write_repo_config() { local repo="$1" mkdir -p "$repo/.zeroclaw" diff --git a/tools/ai/zeroclaw_dual_chat.sh b/tools/ai/zeroclaw_dual_chat.sh index e5fa588..15d36bf 100755 --- a/tools/ai/zeroclaw_dual_chat.sh +++ b/tools/ai/zeroclaw_dual_chat.sh @@ -13,9 +13,11 @@ load_local_env() { load_local_env -ZEROCLAW_BIN="${ZEROCLAW_BIN:-/Users/cils/Documents/Lelectron_rare/Kill_LIFE/zeroclaw/target/release/zeroclaw}" -RTC_REPO="/Users/cils/Documents/Lelectron_rare/RTC_BL_PHONE" -ZACUS_REPO="/Users/cils/Documents/Lelectron_rare/le-mystere-professeur-zacus" +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="${ZEROCLAW_ROOT_DIR:-$(cd -- "$SCRIPT_DIR/../.." && pwd)}" +ZEROCLAW_BIN="${ZEROCLAW_BIN:-$ROOT_DIR/zeroclaw/target/release/zeroclaw}" +RTC_REPO="${ZEROCLAW_RTC_REPO:-$HOME/RTC_BL_PHONE}" +ZACUS_REPO="${ZEROCLAW_ZACUS_REPO:-$HOME/le-mystere-professeur-zacus}" usage() { cat <&2 + usage >&2 + exit 1 + ;; + esac +fi + stop_pid_file() { local pid_file="$1" [[ -f "$pid_file" ]] || return 0 diff --git a/tools/ai/zeroclaw_stack_up.sh b/tools/ai/zeroclaw_stack_up.sh index 050867f..24dc483 100755 --- a/tools/ai/zeroclaw_stack_up.sh +++ b/tools/ai/zeroclaw_stack_up.sh @@ -13,7 +13,8 @@ load_local_env() { load_local_env -ROOT_DIR="/Users/cils/Documents/Lelectron_rare/Kill_LIFE" +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="${ZEROCLAW_ROOT_DIR:-$(cd -- "$SCRIPT_DIR/../.." && pwd)}" ART_DIR="${ZEROCLAW_ART_DIR:-$ROOT_DIR/artifacts/zeroclaw}" ZEROCLAW_BIN="${ZEROCLAW_BIN:-$ROOT_DIR/zeroclaw/target/release/zeroclaw}" GATEWAY_HOST="${ZEROCLAW_GATEWAY_HOST:-127.0.0.1}" @@ -38,6 +39,44 @@ LMSTUDIO_BASE_URL="${ZEROCLAW_LMSTUDIO_BASE_URL:-http://127.0.0.1:1234/v1}" LMSTUDIO_MODEL="${ZEROCLAW_LMSTUDIO_MODEL:-}" LOCAL_PROVIDER_ORDER="${ZEROCLAW_LOCAL_PROVIDER_ORDER:-ollama,lmstudio}" +usage() { + cat <&2 + usage >&2 + exit 1 + ;; + esac +fi + GW_PID_FILE="$ART_DIR/gateway.pid" FW_PID_FILE="$ART_DIR/follow.pid" GW_LOG="$ART_DIR/gateway.log" @@ -1036,8 +1075,8 @@ cat >"$INDEX_FILE" </orchestrator.log /prometheus.yml /integrations/README.md - n8n workflow - n8n pr-autotriage workflow + zeroclaw runbook + n8n runbook langgraph runbook autogen runbook /health @@ -1191,7 +1230,7 @@ cat >"$INDEX_FILE" <

Point d'entrée recommandé.

1) tools/ai/zeroclaw_stack_up.sh
-2) tools/ai/zeroclaw_integrations_up.sh
+2) Integrations served from /integrations/ (synced automatically from tools/ai/integrations/)
 3) Ouvrir http://127.0.0.1:8788/ (monitoring)
 4) Ouvrir http://127.0.0.1:5678/ (n8n)
diff --git a/tools/ai/zeroclaw_watch_1min.sh b/tools/ai/zeroclaw_watch_1min.sh index ffa9f13..b58baaa 100755 --- a/tools/ai/zeroclaw_watch_1min.sh +++ b/tools/ai/zeroclaw_watch_1min.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash set -euo pipefail -ROOT_DIR="/Users/cils/Documents/Lelectron_rare/Kill_LIFE" +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="${ZEROCLAW_ROOT_DIR:-$(cd -- "$SCRIPT_DIR/../.." && pwd)}" ART_DIR="${ZEROCLAW_ART_DIR:-$ROOT_DIR/artifacts/zeroclaw}" HOST="${ZEROCLAW_GATEWAY_HOST:-127.0.0.1}" PORT="${ZEROCLAW_GATEWAY_PORT:-3000}" diff --git a/tools/ai/zeroclaw_webhook_send.sh b/tools/ai/zeroclaw_webhook_send.sh index de2d2b9..ea0e7fc 100755 --- a/tools/ai/zeroclaw_webhook_send.sh +++ b/tools/ai/zeroclaw_webhook_send.sh @@ -13,7 +13,9 @@ load_local_env() { load_local_env -ART_DIR="${ZEROCLAW_ART_DIR:-/Users/cils/Documents/Lelectron_rare/Kill_LIFE/artifacts/zeroclaw}" +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +ROOT_DIR="${ZEROCLAW_ROOT_DIR:-$(cd -- "$SCRIPT_DIR/../.." && pwd)}" +ART_DIR="${ZEROCLAW_ART_DIR:-$ROOT_DIR/artifacts/zeroclaw}" HOST="${ZEROCLAW_GATEWAY_HOST:-127.0.0.1}" PORT="${ZEROCLAW_GATEWAY_PORT:-3000}" TOKEN_FILE="$ART_DIR/pair_token.txt"