# 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: * `.agents/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. * `multi-agent-mux-create/`: Script to launch isolated tmux agent sessions. * `multi-agent-mux-stop/`: Script to gracefully stop agent sessions and update states. * `multi-agent-mux-resume/`: Script to restore stopped agent sessions back to their previous conversation state. * `multi-agent-mux-status/`: Script to query the current running state of all agent sessions. * `multi-agent-mux-monitor/`: Monitor script to sync tmux states with the registry. * `multi-agent-mux-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 (`.mam/`, 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 `multi-agent-mux-delegate-job`: ```bash # Install dependencies (pyyaml, paho-mqtt, etc.) pip install -r .agents/skills/multi-agent-mux-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**: * `.mam/jobs/`: Holds detailed metadata files for registered asynchronous jobs. * `.mam/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 .mam/ .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 `.mam/` directory is directly visible). This is because the default job registry path resolved by scripts is relative to the current working directory under `./.mam/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 .agents/skills/multi-agent-mux-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 .agents/skills/multi-agent-mux-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 .agents/skills/multi-agent-mux-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 .agents/skills/multi-agent-mux-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: # .mam/delegate_job_logs/events.ndjson # 6. Stop the background subscriber and clean up the test job records kill %1 rm -f ".mam/jobs/$JID.json" ".mam/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.