conclave
Conclave is a multi-agent reasoning skill that orchestrates multiple AI CLIs into structured debates. Each agent independently analyzes the problem, challenges competing arguments,…
MCLYang
@mclyang
Install
$ openclaw skills install @mclyang/conclave-skillConclave — Multi-Agent Structured Debate & Adjudication
Given a user topic, convene five AI agents to independently posit arguments, engage in anonymous cross-examination, converge, and sign off unanimously, producing a chair-adjudicated final markdown report.
Use for high-stakes decisions (pricing structure, contract risk, architecture selection, investment judgment). Do not use for daily trivia.
⚠️ Security & Privacy Notice
Before using Conclave, read this.
-
Local data persistence: Every debate creates a persistent folder under
~/.hermes/debates/containing the full brief, all agent outputs, anonymity mappings, chair verdicts, and final reports. These files remain on disk indefinitely unless you manually delete them. Do not use Conclave for topics containing regulated personal data, trade secrets, or classified information unless you accept this retention risk. -
External data sharing: Panelists (Claude, Codex, Gemini, Qwen) receive debate prompts via their respective cloud APIs. The external advisor (Manus) receives the final draft and round summaries via MCP. By running a debate, you are transmitting your topic and context to these third-party AI providers. Review each provider's data policy before debating sensitive topics.
-
Credential handling: This skill never prompts for, stores, or logs passwords. The Claude Code auth section previously referenced an unsafe
security unlock-keychain -p <password>pattern; this has been removed. Users must manually unlock the macOS keychain in an interactive terminal before background sessions. -
Input validation: The
init_debate.shscript sanitizes the topic slug to lowercase letters, digits, and hyphens only. Do not pass unsanitized user input directly into shell commands. -
Data retention & cleanup: See
scripts/cleanup.shfor automated cleanup of debates older than a configurable retention period. Run it periodically or via cron.
Roles
| Role | Who | Notes |
|---|---|---|
| Chair & Panelist | Hermes (this agent) | Moderates the session and also argues; must be impartial and must not favor any side (including itself) |
| Panelists | Claude / Codex / Gemini / Qwen | Four starting CLIs, plus Hermes makes five |
| External Advisor | Manus (MCP API, async) | Does not join regular rounds; reviews the final draft before sign-off; fatal-level objections give the chair the right to call an extra round |
| User | Human | Reviews only the final report; the anonymity mapping is transparent to the user (the user has the right to know who is who) |
Pre-Game (mandatory before the first debate of each skill activation)
- Environment check (first activation, new machine, or after any CLI failure): run
bash ~/.hermes/skills/conclave/scripts/install.sh- Detects OS (macOS / Linux / WSL / Windows Git Bash) and Node.js/npm + all four CLIs; auto-installs anything missing (brew on macOS, apt/dnf/pacman on Linux, manual instructions on Windows).
- Then audits each provider's auth material (existence only — no secrets read) and prints an ACTION checklist.
- If any
[ACTION]line appears: STOP — ask the user to configure that provider's key/OAuth first (exact steps inreferences/panelists.md). No debate until every provider is configured. --check-onlyaudits without installing.
- Initialize the arena: run
bash ~/.hermes/skills/conclave/scripts/init_debate.sh <topic-slug>- Auto-creates
~/.hermes/debates/conclave-YYYYMMDD-<slug>/ - Generates the full directory structure + starter template files (brief.md / mapping.md / constraints.md / index.md)
- Auto-creates
- Fill the brief: write brief.md, mapping.md, and constraints.md under
01_brief/. - Version & parameter check: see
references/panelists.md(commands, parameters, auth pitfalls for each agent). - Pre-flight (update + ignition): run
bash ~/.hermes/skills/conclave/scripts/preflight.sh <arena-path>- Phase A: best-effort self-update of all four CLIs (failures are non-fatal and logged;
--skip-updatebypasses). - Phase B: ignition ping of all four agents (plus Manus, verified manually); results are auto-written to
00_preflight/preflight.log. - Any ping failure: fix first (key / proxy / version), then debate.
- Phase A: best-effort self-update of all four CLIs (failures are non-fatal and logged;
- Launch the debate: use
terminal(background=true)to spawn the four CLIs in parallel, writing outputs to02_r1/.
Arena Directory (one isolated folder per debate, auto-named)
Root: ~/.hermes/debates/ (persistent archive, not /tmp)
Per-debate naming: conclave-<yyyymmdd>-<topic-slug>/
- Topic slug: 2-6 lowercase English letters/digits (e.g.,
medlibya,pricingv2) - Multiple debates on the same day append
-N(e.g.,conclave-20260813-medlibya-2)
Auto-init: run scripts/init_debate.sh <topic-slug> to generate the directory structure and print the path.
Directory Structure
| Path | Purpose |
|---|---|
00_preflight/ | Pre-flight ping results |
01_brief/ | Brief + anonymity mapping + user constraints |
02_r1/ | R1 positioning (5 agents) |
03_r2/ | R2 rebuttals |
04_r3/ | Convergence round 3 |
05_r4/ | Convergence round 4 |
06_r5/ | Convergence round 5 |
07_verdicts/ | Chair synthesis per round |
08_signoff/ | Final draft + individual votes |
09_deliver/ | Final report + meeting minutes |
index.md | Full index: timeline, file map, key decisions |
File Discipline
- Long texts go to disk; prompts only give paths — do not stuff long text into command-line arguments.
- Every round's speeches must be written to the corresponding round directory; do not just glance at terminal stdout.
- Chair synthesis is mandatory after every round, written to
07_verdicts/; otherwise panelists in the next round do not get the divergence list. - Final report and minutes must land in
09_deliver/; also copyfinal.mdto the debate root for easy discovery.
Clarification Phase (mandatory before drafting the brief)
After receiving the topic and before writing the brief, the chair self-audits: is the topic ambiguous? Is any key constraint missing from the background?
- Any unclear point / multiple reasonable interpretations → ask the user first; no debate until answered.
- Questions must be multiple-choice (clarify tool, 2-4 options + Other); never make the user do essay questions; ask at most 4 critical ones at a time.
- After the user answers, write brief.md; the user's answers go into the brief's "Constraints" section as shared premises for all five agents.
- If a trajectory-altering question arises mid-debate (e.g., a divergence hinges on a fact only the user knows) → the chair may pause, ask the user via clarify, append the answer to the brief, and resume.
- Do not force questions when there are none — if the topic is already clear, debate immediately; do not ritualize clarification.
Workflow (dynamic rounds, auto-partitioned into directories)
Step 0 Init: bash ~/.hermes/skills/conclave/scripts/init_debate.sh <topic-slug> → creates ~/.hermes/debates/conclave-YYYYMMDD-<slug>/. All subsequent files land in this directory.
R1 Positioning → 5 agents in parallel, unseen by each other (prevent anchoring). Write to 02_r1/. Chair also writes a position.
R2 Rebuttal → Each agent receives the other four's R1 (anonymized). Task: identify ≥1 fatal flaw per opponent + self-defense. Write to 03_r2/.
R3+ Convergence → Chair synthesizes consensus/divergence into 07_verdicts/verdict_rN.md; only divergence points are sent back.
Each agent must "concede" or "rebut with evidence"; equivocation is prohibited. Write to 04_r3~08_signoff/.
Termination may occur as early as R3 if strategic divergence is resolved and every objection carries an executable alternative.
Hard ceiling: 8 rounds (including R1 and R2).
Round reference files:
02_r1/for each agent's positioning03_r2/for rebuttal speeches07_verdicts/verdict_rN.mdfor chair synthesis08_signoff/final_draft.mdfor sign-off draft09_deliver/final.md+minutes.mdfor final deliverables
Constructive Opposition Iron Rule (user-mandated, applies to all rounds):
- Any objection / rebuttal must carry its own solution — "what do you think is the correct approach?", executable, verifiable.
- Objection + reason without solution = invalid speech; the chair names and sends it back for rewrite; it does not count toward the round's output.
- When rebutting others in R2, you must give "how would you fix it"; in R3-R5, alternatives and new evidence are both mandatory.
Convergence Rules (user-mandated)
Round bounds
- Floor: 2 rounds (R1 + R2). High-risk topics (architecture, security, irreversible migration) floor: 3 rounds.
- Ceiling: 8 rounds, hard. Sub-debate rounds count toward this ceiling.
- Risk level is declared by the chair at the end of R1. If any panelist disputes the level, the topic is treated as high-risk. Default when unclear: high-risk.
- Termination evaluation begins only after the applicable floor round.
- Dynamic termination: the chair may terminate early when all remaining divergence points are parametric/executional and every objection carries an executable alternative. Hard floor still applies.
Divergence ledger
Chair maintains after each round: item ID, description, level (strategic / structural / parametric / executional), status (open / resolved / suspended / accepted-risk), alternative, verifiable resolution criterion, proposer, first-seen round.
Termination (all four required)
- No open strategic- or structural-level items.
- The most recent round produced no new substantive disagreement (chair-classified; restatements of existing disagreements do not count). Any panelist may object once per round to the chair's "restatement, not new" classification. The objection forces the item into the ledger as open; the chair must then close it on substance, not on classification.
- No admissible unresolved structural hold.
- No user veto.
Structural hold admissibility
- A structural hold must name (a) the affected interface, data-model field, or failure mode, and (b) a verifiable criterion under which it would be resolved. A hold missing either is recorded as parametric and does not block termination.
- Each panelist may have at most 2 active structural holds at a time.
- Release: proposer confirms downgrade, OR another panelist seconds the downgrade, OR — after the same hold has been re-asserted in two consecutive rounds with no new evidence — the chair overrules it with a written reason recorded in the ledger and carried into the sign-off.
Forced close
Trigger, whichever comes first: (a) the ceiling round is reached, or (b) two consecutive rounds add zero new strategic- or structural-level items. On trigger the chair closes the debate and records every remaining open item in the sign-off as a known unresolved risk with trigger conditions and a rollback plan. Forced close is a valid termination.
Stalemate
An item that stays strategic-level for two consecutive rounds with no party conceding: chair must either (a) record it as accepted-risk with trigger conditions and rollback plan, or (b) spin off a focused sub-debate (max 2 rounds, relevant panelists only).
Rollout (non-blocking)
Adopt immediately behind flag convergence: dynamic (defaults: floor
2/3, ceiling 8). Per debate, log: rounds used; the round at which the old
5-round rule would have stopped; every strategic/structural item first
seen after round 2. Review after 10 logged debates.
Escape defect := a strategic- or structural-level item first seen in a
round that the compared rule would have cut, AND which later required a
post-sign-off change.
Sign-off (not counted as a round):
- Final draft sent to all five agents; each may only reply
AgreeorOppose + specific clause + specific reason + own alternative. - Destruction without construction = invalid vote (user-mandated): opposition must give an executable alternative; votes lacking one are void, treated as abstentions, and the chair proceeds with the remaining valid votes.
- Unanimous pass → external advisor review.
- Opposition & rounds remain → extra round targeting the objection reason and alternative; rounds exhausted → chair adjudicates, alternative appended to minority opinion.
External Advisor (Manus):
- Send final draft + round summaries; ask: any fatal-level objections?
- If yes → chair judges: valid → extra round (if rounds exhausted, disclose the objection and adjudication reason in the final); invalid → written rejection with reason in the final.
- If no → deliver.
Anonymity Rules
- In R2 rebuttals and convergence rounds, all speeches are signed "Panelist A~E"; no identity clues allowed.
- mapping.md is generated by the chair and kept secret for the session; the user may inspect it at any time.
- Chair synthesis quotes only "Panelist X"; the final report may disclose real-name stances (user requests transparency).
Disconnection Rules (user-mandated: explicit retry count)
- Per-agent per-round maximum: 2 calls (1 original + 1 retry). No infinite retry loops.
- First failure (timeout / 401 / crash / empty output / max-turns reached) → immediate retry.
- If the failure is parameter-related (e.g., Claude "Reached max turns"), adjust the parameter first (raise
--max-turns, add--allowedTools '', etc.) before retrying. This corrected call counts as the retry. - Otherwise, use an identical retry.
- If the failure is parameter-related (e.g., Claude "Reached max turns"), adjust the parameter first (raise
- Second consecutive failure → mark that agent absent for that round. Debate continues; final report notes absent party and reason; fix after the session, restore for the next debate.
- Chair (Hermes) never disconnects; Manus advisor timeout 30 min → skip advisor, final report notes "external advisor not reviewed".
Language Rule (user-mandated)
- The debate language must match the user's current session language. The chair sets this in the brief's
Languagefield. - All five agents (including the chair) must output in that language; English defaults are overridden.
- If the user switches language mid-session, the brief is updated and all subsequent rounds follow the new language.
Parameter Rules
- Codex default
-c model_reasoning_effort="medium"(cost/speed balance); user calls "important session" for xhigh. - Codex exec is a read-only sandbox; file writes are rejected → prompts must require "full text to stdout", and the chair extracts from process logs to disk.
- Claude uses
-p --max-turns 1; Gemini uses-p; Qwen uses-p. All non-interactive; no TUI. - Prompts for the five agents are identical word-for-word except the role sentence, ensuring fairness.
Deliverables (two items, both mandatory)
1. final.md (decision document, 09_deliver/final.md)
- First paragraph: dry conclusion. 3-5 sentences in plain language: what is the final opinion, what to do, one key risk. No fluff, no jargon stacking.
- Consensus list (items all five agents agree on).
- Divergence & adjudication: each point → each agent's stance (real name disclosed) → chair ruling + reason.
- Minority opinions (if any) verbatim appendix.
- External advisor opinion and handling result.
- Absence / exception notes (if any).
2. minutes.md (process document, 09_deliver/minutes.md)
Recap how the debate reached the final report:
- Opening: topic + clarification answers / rulings + how each shaped the outcome.
- Roster & anonymity mapping (real names disclosed).
- Round-by-round evolution: R1 five-way stance comparison → R2 what got killed (who struck) → R3-R5 how divergence closed → sign-off round what each objection turned into.
- Kill list: rejected solutions / categories + cause of death + who struck.
- Agent contributions & evaluation (real names).
- Minority opinion archive.
- File index (source paths per round).
Give the user the absolute paths of 09_deliver/final.md and 09_deliver/minutes.md, and paste the first paragraph of final in the reply.
3. index.md (debate root directory)
After each debate, auto-generate index.md in the debate root:
- Topic, date, participants
- Timeline: R1 → R2 → convergence → sign-off → advisor, timestamps per step
- File map: pointers to round sources
- Key decision quick-reference
- Info usable for
@sessionrestarts
This index lets the user find key decisions in 10 seconds even after 3 months.
4. Post-debate export to the user's working directory (mandatory, user-mandated 2026-08-14)
After every debate, copy the ENTIRE arena directory (not just 09_deliver/) into the session's current working directory, preserving the arena folder name:
cp -R ~/.hermes/debates/conclave-YYYYMMDD-<slug> "$PWD/"
diff -r ~/.hermes/debates/conclave-YYYYMMDD-<slug> "$PWD/conclave-YYYYMMDD-<slug>" && echo "COPY VERIFIED"
- The diff verification is mandatory; report file count, total size, and the destination absolute path.
~/.hermes/debates/remains the canonical archive; the working-directory copy is the user's working artifact.- If the user only asks for "the results", still export the full arena — briefs, round sources, verdicts, and votes are all part of the deliverable.
5. One debate = one self-contained folder; follow-up debates get a NEW folder (user-mandated 2026-08-14)
- Consolidation: at debate close, ALL files of the session (brief, constraints, mapping, preflight log, every round's raw+cleaned speeches, verdicts, sign-off votes, final.md, minutes.md, index.md) must live inside the single arena folder. No strays in /tmp, no loose copies elsewhere — the exported folder in the user's cwd is the complete, self-contained record.
- Follow-up / supplementary debates: if the user later asks to continue, extend, or re-debate the same topic, do NOT reopen or append into the old arena. Run
init_debate.shagain to create a fresh arena (same-day same-slug auto-appends-N, e.g.conclave-20260814-burrypltr-2), and put the previous arena's absolute path into the new01_brief/brief.mdunder a "Prior debate" heading so panelists can read the old final.md as input context. The old folder stays frozen as the historical record; the new debate's export goes to a separate folder in the cwd.
Chair Neutrality Red Line
- Synthesis must not weight a point just because the chair proposed it; chair views struck down must still be recorded under "rejected positions".
- Rulings must cite round-source evidence (file + line number); no impressions allowed.
- If the user disagrees with a ruling → the user's word is the supreme arbiter; the chair writes the user's opinion into the final report marked "user adjudication".
Consensus Protocol v1.1 (2026-08-14, supersedes ad-hoc aggregation)
The chair MUST follow references/consensus-protocol-v1.md (v1.1). Operational deltas from the classic workflow:
- Modes: Quick = 2 CLIs + Hermes; Standard = 4 CLIs + Hermes (default); Deep = blocked until more panelist CLIs exist. Declare the mode in the brief; user may override.
- Structured R1: prompts require a claims/evidence/assumptions/uncertainties block before free text.
- Claim table: verdicts must carry a claim-level table with source-overlap dedup (two agents citing one source = one independent evidence).
- Divergence triage: next-round prompts target only the top 1-2 decision-relevant claims (flip test first, then divergence, then evidence obtainability) — never re-ask whole questions.
- Stopping: Decision-Flip Value proxy (continue only if an open claim can flip the decision AND its expected loss reduction exceeds round cost); hard floor/ceiling rules remain as guardrails.
- Manus triggers: verifiable-fact dependence, R1 unanimity (herding check), critical dissent, time-sensitive topics. REST polling path (references/panelists.md).
- Dissent: expected-loss triage Dᵢ = P(Fᵢ) × Impact(Fᵢ), self-reported P discounted ×0.5 (heuristic); Dᵢ > 10% of value at stake forces a targeted round or Manus check.
- Aggregation: normalized weights + log-odds pool + N_eff report (default ρ 0.6 same-family / 0.3 cross-family, HEURISTIC); label all pooled probabilities "uncalibrated" until calibration.jsonl has ≥30 resolved predictions.
- Calibration log: append verifiable predictions only (with check dates) to
~/.hermes/debates/calibration.jsonl; resolve due entries at the start of each new debate. Never score non-verifiable judgments. - final.md additions: mode, N_eff (labeled), claim table, baselines (majority + equal-weight), dissent triage, Decision State block (Belief/Consensus/Confidence/Decision/Robustness), why-stopped block, rigor tags on every soft number.
- Terminal states include NO CONSENSUS — INSUFFICIENT EVIDENCE and DEBATE_FAILED; emitting them to prevent a bad decision is success.
- Manus dual mode: Blind Reality Check (sees only the question, never council output) vs Draft Review (post-sign-off). Never merge.
- Phase gates: N<30 resolved predictions → equal weights only; 30-100 → offline research, no live weight changes; ≥100 → learned aggregation only if it beats equal-weight baseline out-of-sample.
Field Lessons (2026-08-12 Libya sourcing session)
- External advisor opinions must carry a version number: Manus reviewed an old draft; half its opinions were already resolved — attach a version number when sending the advisor task, and require the first line of the opinion to state the reviewed version; otherwise you waste a round.
- Audit-type panelist (e.g., Claude) objection depth increases per round: structure → parameters → footnotes, always able to dig deeper. The chair must adjudicate closure when "objections have degraded to parameter-level and alternatives are directly absorbable"; otherwise there is no convergence. Closure standard: no strategic-level divergence + all objections have absorbable alternatives.
claude -p --max-turns 1occasionally reports "Reached max turns": when retrying per disconnection rules, raise--max-turnsto 3-10 (add--allowedTools ''to prevent spinning); do not stick to the original parameter.- CLI stdout handling: CLI stdout mixes ANSI codes and shell startup noise (local shell rc plugin errors); normalize with regex before anonymizing, otherwise read_file may judge the file binary.
- R1 same direction = high-confidence signal: when five agents independently position unseen, if they independently pick the same direction / same approach, that judgment's credibility maxes out; synthesis can directly promote it to "consensus" without further debate. Conversely, points where R1 diverges are real divergence, worth spending round budget on.
- Session cost & pace expectation: one full Conclave session (clarification → R1 → R2 → convergence → sign-off × N) is roughly 30-50 CLI calls, 1.5-3 wall-clock hours. Codex medium/low effort is fast enough; Claude long answers may take 10+ minutes per session. Run everything in background parallel + notify_on_complete; the chair writes its own draft while waiting.
- Highest-value use of audit-type panelist: let the most rigorous panelist's (this session was Claude) objections directly rewrite final numbers, not just serve as QC — this session's six fatal arithmetic errors + one payment reallocation (breakeven 93% → 86%) all came from its opposition votes.
Field Lessons (2026-08-13 Self-optimization session)
- Self-debate is valid and efficient: Using Conclave to optimize its own SKILL.md produced actionable output in 3 rounds. The chair must be willing to concede ground when the audit-type panelist's objections are structurally sound.
- Shell parameter escaping is a real failure mode: Multi-line prompts containing backticks (e.g., markdown code blocks) passed through
zsh -i -c "..."are interpreted as command substitution by the outer shell. Use Pythonsubprocesswithshlex.quote, or strip backticks from prompts. - Codex exec sandbox + shell expansion trap: Wrapping a prompt in single quotes prevents
$(cat file)expansion; Codex receives the literal string. Always use double quotes for shell expansion when passing file content inline. - Merge minority alternatives rather than overrule: Claude and Qwen both opposed the chair's R3 draft but provided full rewritten text. Merging their specific amendments (ceiling 8, forced close, hold admissibility, classification appeal) produced a better final rule than either the original proposal or a pure adjudication.
- Dynamic termination proved itself in practice: This debate reached strategic convergence after R2; R3 functioned as a sign-off round. Total 3 rounds vs. the old fixed 5, validating the mechanism we were designing.
Field Lessons (2026-08-14 Burry AI-bubble debate)
- Assign each panelist their letter explicitly in R2+ prompts: Asking panelists to "recognize your own R1 stance" in the anonymized bundle failed — three of four CLIs misidentified themselves as Panelist A (the strongest position) in both R2 and R3. The persuasion was genuine, but the minutes had to log an anomaly. Fix: in R2+ prompts, state "You are Panelist X" directly; anonymity is preserved because the mapping file still hides which real CLI is X.
- Chair-fetched live data beats panelist estimates: The chair pulled real option quotes mid-debate (PLTR 150/120 spread $7.20 vs panelist-estimated $7.00; ORCL 140/110 $10.90 vs estimated $8.00 — a 36% miss). The real numbers directly changed the final contract counts. For any debate touching market/pricing data, the chair should inject a verified data pack into the brief AND re-verify before the final draft.
- A GTC limit order can merge two opposing positions: "Execute now" vs "wait for a dip" deadlocked until the chair ruled "place the order now at a limit price that only fills on a dip" — both sides' logic satisfied, zero round cost. When two panelists differ only on timing, look for an order-type / trigger mechanism that encodes both.
Field Lessons (2026-08-14 Naked-leg supplementary debate)
- Manus advisor works via direct REST polling — no webhook needed: The MCP channel only exposes create_task, but the same API key (MANUS_MCP_API_KEY in config.yaml) works against
https://api.manus.im/v1/tasksdirectly: POST to create ({"prompt": ..., "taskMode": "chat"}), then GET/v1/tasks/{task_id}every 60s untilstatus == "completed"; the advisor's answer is inoutput[].content[].textwhererole == "assistant". Review came back in ~3 minutes with 5 findings (3 absorbed, 1 softened, 1 rejected). This fully replaces the webhook/user-paste fallback on CLI-only machines. - Explicit role assignment in prompts works: R2/R3 prompts stating "你是 Panelist X" (lesson 13) eliminated the identity-misrecognition anomaly entirely — all four CLIs defended their own positions.
- A rich data pack changes debate quality: Providing 3 expiries × multiple strikes of real option quotes + earnings calendar in the brief let panelists do arithmetic kills (e.g., "Nov-20 contract = -70% residual at forced 11-02 exit") instead of opinion wars. For market debates, the data pack IS the debate.
- Users amend mid-debate — route through constraints, not prompts: The user's mid-turn message ("rolling allowed, must use Manus API") was appended to constraints.md as shared premises rather than editing live round prompts, keeping all five agents on identical instructions.
Top skills in this category
self-improving agent
@pskoettCaptures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Claude ('No, that's wrong...', 'Actually...'), (3) User requests a capability that doesn't exist, (4) An external API or tool fails, (5) Claude rea
Skill Vetter
@spclaudehomeSecurity-first skill vetting for AI agents. Use before installing any skill from ClawdHub, GitHub, or other sources. Checks for red flags, permission scope, and suspicious patterns.
Self-Improving + Proactive Agent
@ivangdavilaSelf-reflection + Self-criticism + Self-learning + Self-organizing memory. Agent evaluates its own work, catches mistakes, and improves permanently. Use when...
Proactive Agent
@halthelobsterTransform AI agents from task-followers into proactive partners that anticipate needs and continuously improve. Now with WAL Protocol, Working Buffer, Autonomous Crons, and battle-tested patterns. Part of the Hal Stack 🦞
Agent Browser
@matrixyHeadless browser automation CLI optimized for AI agents with accessibility tree snapshots and ref-based element selection