ai(zeroclaw): publish on-demand operator runtime

This commit is contained in:
Clément SAILLANT
2026-03-09 00:46:53 +01:00
parent 6caa4042ab
commit c4568d56c2
18 changed files with 594 additions and 19 deletions
+35
View File
@@ -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
+7
View File
@@ -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
+60 -3
View File
@@ -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
+31
View File
@@ -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)
+19
View File
@@ -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.
+53
View File
@@ -0,0 +1,53 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>AutoGen Lab</title>
<style>
:root {
color-scheme: dark;
--bg: #0d1117;
--panel: #161b22;
--text: #e6edf3;
--muted: #9da7b3;
--line: #2d333b;
--accent: #d2a8ff;
}
body {
margin: 0;
font-family: "SF Pro Text", "Segoe UI", Arial, sans-serif;
background: radial-gradient(circle at top, #2c1f38 0%, var(--bg) 60%);
color: var(--text);
}
main {
max-width: 860px;
margin: 0 auto;
padding: 32px 18px 48px;
}
h1 {
margin: 0 0 12px;
font-size: 32px;
letter-spacing: 0.04em;
text-transform: uppercase;
}
p {
line-height: 1.6;
color: var(--muted);
}
a {
color: var(--text);
}
</style>
</head>
<body>
<main>
<h1>AutoGen Lab</h1>
<p>
AutoGen stays available as an experimentation lane outside the critical
path.
</p>
<p><a href="/README.md">Open the AutoGen README</a></p>
</main>
</body>
</html>
+107
View File
@@ -0,0 +1,107 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>ZeroClaw Integrations</title>
<style>
:root {
color-scheme: dark;
--bg: #0d1117;
--panel: #161b22;
--text: #e6edf3;
--muted: #9da7b3;
--line: #2d333b;
--accent: #f0b44c;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: "SF Pro Text", "Segoe UI", Arial, sans-serif;
background: radial-gradient(circle at top, #1b2230 0%, var(--bg) 56%);
color: var(--text);
}
main {
max-width: 980px;
margin: 0 auto;
padding: 32px 18px 48px;
}
h1 {
margin: 0 0 10px;
font-size: 32px;
letter-spacing: 0.04em;
text-transform: uppercase;
}
p {
line-height: 1.6;
color: var(--muted);
}
.grid {
display: grid;
gap: 14px;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
margin-top: 24px;
}
a.card {
display: block;
padding: 16px;
border: 1px solid var(--line);
border-radius: 18px;
background: rgba(22, 27, 34, 0.92);
color: inherit;
text-decoration: none;
}
a.card:hover {
border-color: rgba(240, 180, 76, 0.55);
}
.label {
color: var(--accent);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.title {
margin-top: 8px;
font-size: 20px;
font-weight: 600;
}
.small {
margin-top: 10px;
font-size: 13px;
}
</style>
</head>
<body>
<main>
<h1>ZeroClaw Integrations</h1>
<p>
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.
</p>
<div class="grid">
<a class="card" href="/integrations/zeroclaw/">
<div class="label">Operator runtime</div>
<div class="title">ZeroClaw</div>
<div class="small">Local gateway, pairing, follow UI and operator loops.</div>
</a>
<a class="card" href="/integrations/langgraph/">
<div class="label">Orchestration overlay</div>
<div class="title">LangGraph</div>
<div class="small">Optional graph-shaped orchestration around ZeroClaw.</div>
</a>
<a class="card" href="/integrations/n8n/">
<div class="label">Workflow bridge</div>
<div class="title">n8n</div>
<div class="small">Low-code handoff and automation around ZeroClaw webhooks.</div>
</a>
<a class="card" href="/integrations/autogen/">
<div class="label">Multi-agent lab</div>
<div class="title">AutoGen</div>
<div class="small">Optional experimentation outside the stable runtime path.</div>
</a>
</div>
</main>
</body>
</html>
+26
View File
@@ -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.
@@ -0,0 +1,80 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>LangGraph Operator Surface</title>
<style>
:root {
color-scheme: dark;
--bg: #0d1117;
--panel: #161b22;
--text: #e6edf3;
--muted: #9da7b3;
--line: #2d333b;
--accent: #6ed0ff;
}
* { box-sizing: border-box; }
body {
margin: 0;
font-family: "SF Pro Text", "Segoe UI", Arial, sans-serif;
background: radial-gradient(circle at top, #162434 0%, var(--bg) 60%);
color: var(--text);
}
main {
max-width: 860px;
margin: 0 auto;
padding: 32px 18px 48px;
}
h1 {
margin: 0 0 12px;
font-size: 32px;
letter-spacing: 0.04em;
text-transform: uppercase;
}
p, li {
line-height: 1.6;
color: var(--muted);
}
.panel {
margin-top: 24px;
padding: 18px;
border: 1px solid var(--line);
border-radius: 18px;
background: rgba(22, 27, 34, 0.92);
}
.label {
color: var(--accent);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
}
a {
color: var(--text);
}
</style>
</head>
<body>
<main>
<h1>LangGraph Overlay</h1>
<p>
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.
</p>
<div class="panel">
<div class="label">Current posture</div>
<ul>
<li>operator-visible and documented</li>
<li>kept separate from the stable repo-local CI gate</li>
<li>reactivated as a concrete runtime only when a dedicated graph app exists</li>
</ul>
</div>
<div class="panel">
<div class="label">Runbook</div>
<p><a href="/README.md">Open the LangGraph README</a></p>
</div>
</main>
</body>
</html>
+23
View File
@@ -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`
+52
View File
@@ -0,0 +1,52 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>n8n Runbook</title>
<style>
:root {
color-scheme: dark;
--bg: #0d1117;
--panel: #161b22;
--text: #e6edf3;
--muted: #9da7b3;
--line: #2d333b;
--accent: #7ee787;
}
body {
margin: 0;
font-family: "SF Pro Text", "Segoe UI", Arial, sans-serif;
background: radial-gradient(circle at top, #183324 0%, var(--bg) 60%);
color: var(--text);
}
main {
max-width: 860px;
margin: 0 auto;
padding: 32px 18px 48px;
}
h1 {
margin: 0 0 12px;
font-size: 32px;
letter-spacing: 0.04em;
text-transform: uppercase;
}
p {
line-height: 1.6;
color: var(--muted);
}
a {
color: var(--text);
}
</style>
</head>
<body>
<main>
<h1>n8n Workflow Bridge</h1>
<p>
n8n remains the low-code bridge around ZeroClaw and repo workflows.
</p>
<p><a href="/README.md">Open the n8n README</a></p>
</main>
</body>
</html>
+19 -3
View File
@@ -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:]') <path> 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"
+5 -3
View File
@@ -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 <<USAGE
+2 -2
View File
@@ -1,8 +1,8 @@
#!/usr/bin/env bash
set -euo pipefail
RTC_REPO="${ZEROCLAW_RTC_REPO:-/Users/cils/Documents/Lelectron_rare/RTC_BL_PHONE}"
ZACUS_REPO="${ZEROCLAW_ZACUS_REPO:-/Users/cils/Documents/Lelectron_rare/le-mystere-professeur-zacus}"
RTC_REPO="${ZEROCLAW_RTC_REPO:-$HOME/RTC_BL_PHONE}"
ZACUS_REPO="${ZEROCLAW_ZACUS_REPO:-$HOME/le-mystere-professeur-zacus}"
RTC_FW_DIR="$RTC_REPO"
ZACUS_FW_DIR="$ZACUS_REPO/hardware/firmware"
+27 -2
View File
@@ -1,8 +1,9 @@
#!/usr/bin/env bash
set -euo pipefail
ART_DIR="${ZEROCLAW_ART_DIR:-/Users/cils/Documents/Lelectron_rare/Kill_LIFE/artifacts/zeroclaw}"
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}"
GW_PID_FILE="$ART_DIR/gateway.pid"
FW_PID_FILE="$ART_DIR/follow.pid"
PROM_PID_FILE="$ART_DIR/prometheus.pid"
@@ -12,6 +13,30 @@ FW_MANAGED_FILE="$ART_DIR/follow.managed"
PROM_MANAGED_FILE="$ART_DIR/prometheus.managed"
WATCHER_SCRIPT="$ROOT_DIR/tools/ai/zeroclaw_watch_1min.sh"
usage() {
cat <<USAGE
Usage: $(basename "$0")
Stop the local ZeroClaw operator stack started by zeroclaw_stack_up.sh.
Managed logs and artifacts are preserved under:
$ART_DIR
USAGE
}
if [[ $# -gt 0 ]]; then
case "$1" in
-h|--help)
usage
exit 0
;;
*)
echo "[fail] unknown option: $1" >&2
usage >&2
exit 1
;;
esac
fi
stop_pid_file() {
local pid_file="$1"
[[ -f "$pid_file" ]] || return 0
+43 -4
View File
@@ -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 <<USAGE
Usage: $(basename "$0")
Start the local ZeroClaw operator stack on demand:
- gateway
- follow UI
- optional Prometheus backend
- synced integration runbooks from tools/ai/integrations/
Companion commands:
bash tools/ai/zeroclaw_stack_up.sh
bash tools/ai/zeroclaw_stack_down.sh Stop the local stack
Environment overrides:
ZEROCLAW_ROOT_DIR
ZEROCLAW_ART_DIR
ZEROCLAW_BIN
ZEROCLAW_GATEWAY_HOST / ZEROCLAW_GATEWAY_PORT
ZEROCLAW_FOLLOW_PORT
ZEROCLAW_PROM_MODE
USAGE
}
if [[ $# -gt 0 ]]; then
case "$1" in
-h|--help)
usage
exit 0
;;
*)
echo "[fail] unknown option: $1" >&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" <<EOF
<a href="/orchestrator.log">/orchestrator.log</a>
<a href="/prometheus.yml">/prometheus.yml</a>
<a href="/integrations/README.md">/integrations/README.md</a>
<a href="/integrations/n8n/zeroclaw_orchestrator_workflow.json">n8n workflow</a>
<a href="/integrations/n8n/zeroclaw_pr_autotriage_workflow.json">n8n pr-autotriage workflow</a>
<a href="/integrations/zeroclaw/">zeroclaw runbook</a>
<a href="/integrations/n8n/README.md">n8n runbook</a>
<a href="/integrations/langgraph/README.md">langgraph runbook</a>
<a href="/integrations/autogen/README.md">autogen runbook</a>
<a href="http://$GATEWAY_HOST:$GATEWAY_PORT/health">/health</a>
@@ -1191,7 +1230,7 @@ cat >"$INDEX_FILE" <<EOF
<div class="body">
<p class="hint">Point d'entrée recommandé.</p>
<pre id="hubQuickStart">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)</pre>
</div>
+2 -1
View File
@@ -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}"
+3 -1
View File
@@ -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"