167 lines
8.4 KiB
Markdown
167 lines
8.4 KiB
Markdown
# BOOTSTRAP.md
|
|
|
|
This document guides you through the setup and initialization procedures required to adopt the `tmux_agent_orchestration` orchestration and messaging backplane workflow in a new project, enabling a new developer or agent to get up and running quickly.
|
|
|
|
A new agent can follow the steps in this guide sequentially to establish a stable and reliable initial environment.
|
|
|
|
---
|
|
|
|
## 1. Scaffolding Overview (Project Structure)
|
|
|
|
Before cloning this project into a new environment, you must first understand the locations and roles of its core components:
|
|
|
|
* `skills/`: A collection of shell scripts that execute multi-agent coordination and asynchronous job processing.
|
|
* `lib.sh`: The core orchestration shell functions and virtual environment (venv) auto-loading library.
|
|
* `tmux-agent-orchestrate-create/`: Script to launch isolated tmux agent sessions.
|
|
* `tmux-agent-orchestrate-stop/`: Script to gracefully stop agent sessions and update states.
|
|
* `tmux-agent-orchestrate-resume/`: Script to restore stopped agent sessions back to their previous conversation state.
|
|
* `tmux-agent-orchestrate-status/`: Script to query the current running state of all agent sessions.
|
|
* `tmux-agent-orchestrate-monitor/`: Monitor script to sync tmux states with the registry.
|
|
* `tmux-agent-orchestrate-delegate-job/`: Asynchronous job splitting and delegation module.
|
|
* `requirements.txt`: Python dependency list (`paho-mqtt`, `pyyaml`).
|
|
* `scripts/`: Python scripts running the core business logic.
|
|
* `registry.py`: Job registration, claiming, and atomic file lock control (CLI supported).
|
|
* `job_subscriber.py`: Background event subscriber and audit log generator.
|
|
* `publish_event.py`: Event publisher for runtime states and error traps.
|
|
* `mqtt_common.py`: Common utility for connecting to the MQTT broker.
|
|
* `AGENT.md`: Definition of agent roles (PM, Worker, Reviewer) and event publication rules.
|
|
* `MESSAGING.md`: Messaging scheme and wire protocol guidelines for MQTT communication between agents.
|
|
|
|
---
|
|
|
|
## 2. Environment Configuration (.env)
|
|
|
|
To set up the messaging broker and execution paths, you must create and modify a local environment configuration file (`.env`).
|
|
|
|
### Step 2.1: Run the Generation Script
|
|
Run the environment template copy script provided in the project root:
|
|
|
|
```bash
|
|
# Automatically copy .env.example to .env (does not overwrite if it already exists)
|
|
./scripts/generate-env.sh
|
|
|
|
# To force overwrite and create a backup of the existing .env:
|
|
./scripts/generate-env.sh --force
|
|
```
|
|
|
|
### Step 2.2: Modify Environment Variables
|
|
Open the generated `.env` file to configure settings as needed.
|
|
|
|
> [!NOTE]
|
|
> The default `.env` file generated by `generate-env.sh` has all environment variables commented out. If left commented out, the system defaults to using relative paths (`.hermes/`, etc.) relative to the local project root, and the public MQTT broker. You can use it as-is without uncommenting anything.
|
|
|
|
1. **MQTT Broker Setup (`MQTT_BROKER`)**:
|
|
* The default broker is HiveMQ's public sandbox broker (`broker.hivemq.com`). However, for production work where security and privacy are critical, we strongly recommend changing this to a private broker address.
|
|
2. **Authentication Credentials (`MQTT_USERNAME`, `MQTT_PASSWORD`)**:
|
|
* If using a secured broker, change the placeholders marked `replace_me` to your actual broker credentials.
|
|
3. **Path Variables (Optional)**:
|
|
* Uncomment and specify absolute paths for variables like `AGENT_SESSIONS_YAML` and `DELEGATE_JOB_LOGS_DIR` only if you need to override the default relative paths to align with specific build systems or host directories.
|
|
|
|
> [!WARNING]
|
|
> **Security Mode Default Warning**:
|
|
> The system's default setting is the **unauthenticated PoC mode**. If an `auth_token` is not explicitly provided (or is `null`) during job registration, HMAC signature verification is skipped.
|
|
> In a public broker environment or production phase, you must generate and inject a unique random `auth_token` during job registration to enable HMAC signature security. (For detailed security protocols, refer to section `2.3 Security Protocol` in [MESSAGING.md](./MESSAGING.md) and [AGENT.md](./AGENT.md). Automated token generation and injection via CLI is on the roadmap under task `FW-N6`.)
|
|
|
|
---
|
|
|
|
## 3. Dependency and Virtualenv Setup
|
|
|
|
Set up the Python 3 dependencies required to run the orchestration and MQTT messaging backplane.
|
|
|
|
### Step 3.1: Build Python Virtual Environment
|
|
Create and activate a `.venv` virtual environment in the project root:
|
|
|
|
```bash
|
|
# Create virtual environment
|
|
python3 -m venv .venv
|
|
|
|
# Activate virtual environment
|
|
source .venv/bin/activate
|
|
```
|
|
|
|
### Step 3.2: Install Dependency Packages
|
|
Install the required packages listed in `requirements.txt` under `tmux-agent-orchestrate-delegate-job`:
|
|
|
|
```bash
|
|
# Install dependencies (pyyaml, paho-mqtt, etc.)
|
|
pip install -r skills/tmux-agent-orchestrate-delegate-job/requirements.txt
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Directory Structure and Security Audit Guide
|
|
|
|
Ensure that the local registry directories required to track agent states and jobs are successfully created:
|
|
|
|
1. **Required Directory Structure**:
|
|
* `.hermes/jobs/`: Holds detailed metadata files for registered asynchronous jobs.
|
|
* `.hermes/delegate_job_logs/`: Holds the audit logs (`events.ndjson`) for all backplane events published by agents.
|
|
2. **Git Ignore Configuration (`.gitignore`)**:
|
|
* When initializing a new project, verify that the following entries are configured in `.gitignore` to prevent committing local runtimes to the repository. The exception `!.env.example` must be kept to preserve the template:
|
|
```text
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
.hermes/
|
|
.venv/
|
|
__pycache__/
|
|
*.pyc
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Execution Verification and Bootstrap Tests
|
|
|
|
To verify that the environment has been successfully built without runtime errors, run the following verification checklist.
|
|
|
|
> [!IMPORTANT]
|
|
> All verification commands below must be executed from the **project root directory** (where the `.hermes/` directory is directly visible). This is because the default job registry path resolved by scripts is relative to the current working directory under `./.hermes/jobs`.
|
|
|
|
### Verification Test 1: Registry Script Load Check
|
|
Verify that the Python scripts and virtual environment libraries load correctly by listing jobs:
|
|
|
|
```bash
|
|
# Run using the python interpreter in the virtual environment
|
|
.venv/bin/python3 skills/tmux-agent-orchestrate-delegate-job/scripts/registry.py list
|
|
```
|
|
* **Expected Output**: The command should exit successfully and print an empty JSON array `[]` (or a list of pending/running jobs if any exist) without any python traceback errors.
|
|
|
|
### Verification Test 2: MQTT Broker Connection Handshake Test
|
|
Test the end-to-end communication through the broker to verify that events are published and received correctly:
|
|
|
|
```bash
|
|
# 1. Register a temporary test job and capture its 8-character Hex Job ID
|
|
JID=$(.venv/bin/python3 skills/tmux-agent-orchestrate-delegate-job/scripts/registry.py register \
|
|
--agent "test-agent" \
|
|
--prompt "Bootstrap check command" \
|
|
--timeout 120)
|
|
echo "Generated Job ID: $JID"
|
|
|
|
# 2. Run the background event subscriber (Subscriber) for this Job ID
|
|
.venv/bin/python3 skills/tmux-agent-orchestrate-delegate-job/scripts/job_subscriber.py --job "$JID" &
|
|
|
|
# 3. Wait 2 seconds to allow the Subscriber to establish its MQTT socket connection
|
|
sleep 2
|
|
|
|
# 4. Publish a start event (adhering to the Subscribe-before-Publish rule)
|
|
.venv/bin/python3 skills/tmux-agent-orchestrate-delegate-job/scripts/publish_event.py \
|
|
--job "$JID" \
|
|
--event started \
|
|
--detail "Bootstrap MQTT verification connection check"
|
|
|
|
# 5. Verify that the event is printed to stdout and written to the audit log:
|
|
# .hermes/delegate_job_logs/events.ndjson
|
|
|
|
# 6. Stop the background subscriber and clean up the test job records
|
|
kill %1
|
|
rm -f ".hermes/jobs/$JID.json" ".hermes/jobs/$JID.lock"
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Onboarding Collaborating Agents (New Agent Onboarding)
|
|
|
|
Once the setup is verified, onboarding agents should immediately read the **[AGENT.md](./AGENT.md)** guidelines in the project root.
|
|
|
|
The guidelines describe essential workflows—such as **surgical change constraints, cross-verification review loops, and pane snapshotting to prevent viewport truncation**—allowing new agents to quickly and safely integrate with the multi-agent workflow.
|