# SwarmForge Prerequisites: What You Need to Run the tmux-Based AI Orchestration Platform

> Discover SwarmForge prerequisites. Learn what you need to run this AI orchestration platform including zsh git tmux Babashka and an AI agent backend.

- Repository: [Robert C. Martin/swarm-forge](https://github.com/unclebob/swarm-forge)
- Tags: getting-started
- Published: 2026-09-02

---

**SwarmForge requires zsh, git, tmux, Babashka, and an AI-agent backend to install and run any product pack.**

SwarmForge is a tmux-based orchestration platform for AI agents developed by Uncle Bob (Robert C. Martin). Before you can deploy a multi-agent team like the `six-pack` or `project-manager` forge, five core prerequisites must be in place. This guide walks through each requirement, explains its role in the architecture, and shows how to verify your setup.

## Shell Environment: zsh

SwarmForge assumes a **Z shell** environment. The `get-swarm-forge` helper script and various shell utilities throughout the codebase are written specifically for zsh.

If you're running bash or another shell, switch to zsh or ensure zsh is installed and available:

```bash
zsh --version

```

The installer script at `get-swarm-forge` relies on zsh-specific features for path handling and process management.

## Version Control: git

**Git** is required for two reasons: the `get-swarm-forge` script clones the SwarmForge repository on first run, and individual product packs are themselves distributed via Git.

Verify git is installed:

```bash
git --version

```

When you run `get-swarm-forge six-pack`, the script pulls the latest pack files from the remote repository into your current working directory.

## Terminal Multiplexer: tmux

All SwarmForge agents run in isolated **tmux panes and sessions**, providing process isolation, persistent sessions, and a unified dashboard. Without tmux, the orchestration layer cannot function.

Check your tmux installation:

```bash
tmux -V

```

The core runtime scripts in `swarmforge/scripts/` manage tmux sessions programmatically, creating dedicated panes for each AI agent in your chosen pack.

## Clojure Runtime: Babashka (bb)

SwarmForge's core runtime is written in **Clojure and executed by Babashka**, a fast native Clojure interpreter. The scripts in `swarmforge/scripts/` are `.clj` files run through `bb`.

Install Babashka, then verify:

```bash
bb --version
bb -e '(println "Babashka is ready")'

```

Without Babashka, the swarm orchestration logic, agent handoff protocols, and session management cannot execute.

## AI-Agent Backend

SwarmForge does **not bundle an AI backend**. You must have access to at least one supported language-model service:

| Backend | Use Case |
|---------|----------|
| **grok** | xAI's conversational model |
| **codex** | OpenAI's code-focused model |
| **claude** | Anthropic's reasoning engine |
| **copilot** | GitHub's pair-programming AI |

Set appropriate environment variables for your chosen backend before launching a swarm. For example, with OpenAI Codex:

```bash
export OPENAI_API_KEY=your_key_here

```

The agents in `swarmforge/scripts/` send prompts to this backend for code generation, refactoring, and question answering.

## Installing SwarmForge After Prerequisites

Once all five prerequisites are satisfied, install the helper script:

```bash
mkdir -p ~/cmds
curl -L -o ~/cmds/get-swarm-forge \
  https://raw.githubusercontent.com/unclebob/swarm-forge/main/get-swarm-forge
chmod +x ~/cmds/get-swarm-forge
export PATH="$HOME/cmds:$PATH"

```

Then install and launch a product. The `six-pack` runs six coordinated agents:

```bash
get-swarm-forge six-pack
./swarm

```

For multi-project orchestration, use the project-manager forge instead:

```bash
get-swarm-forge project-manager
./swarm

```

## Important: The Repository Is Not a Runnable Product

The `main` branch of `unclebob/swarm-forge` contains documentation, the installer, and pack definitions—but is **not itself executable**. As noted in the [`README.md`](https://github.com/unclebob/swarm-forge/blob/main/README.md) prerequisites section, you must install a specific product via `get-swarm-forge` before running `./swarm`.

## Key Files in the Source

| File | Purpose |
|------|---------|
| [`README.md`](https://github.com/unclebob/swarm-forge/blob/main/README.md) | Documents prerequisites and installation steps |
| `get-swarm-forge` | Entry-point installer script for all packs |
| `swarmforge/scripts/` | Core Clojure runtime executed by Babashka |
| [`swarmforge/handoff-protocol.md`](https://github.com/unclebob/swarm-forge/blob/main/swarmforge/handoff-protocol.md) | Agent communication specification |

## Summary

- **zsh**: Required shell environment for all scripts
- **git**: Clones repository and pack files during installation
- **tmux**: Provides session isolation and the dashboard UI
- **Babashka (`bb`)**: Executes the Clojure orchestration runtime
- **AI backend**: External LLM service (grok, codex, claude, or copilot) powers agent cognition

Missing any prerequisite prevents installation or runtime operation.

## Frequently Asked Questions

### Can I run SwarmForge without zsh?

No. The `get-swarm-forge` installer and runtime utilities depend on zsh-specific behavior. Running under bash or fish will cause failures during pack installation or agent spawning.

### Does SwarmForge work without an internet connection?

Partially. You need internet to install packs via `git` and for agent backends to reach their LLM APIs. Once installed, local-only operations may function offline, but agent cognition requires API connectivity.

### Which AI backend is recommended?

The [`README.md`](https://github.com/unclebob/swarm-forge/blob/main/README.md) does not prescribe a preferred backend. Choose based on your existing API access, cost constraints, and task requirements. Claude excels at reasoning; Codex targets code generation; Grok and Copilot offer alternative trade-offs.

### Can I use my own local LLM instead of the listed backends?

The source code specifies `grok`, `codex`, `claude`, or `copilot` as supported options. The `swarmforge/scripts/` runtime likely expects compatible API schemas. Using an unlisted local model would require modifications to the configuration and potentially the handoff protocol implementation.