## Prologue: Developing Like Adventuring with Three Comrades

<p align="center">
  <img src="/plants/multi-agent-ff15/tmux-ff15-live-session.png" alt="multi-agent-ff15: 6 agents running in parallel - real session" width="800" />
</p>

<p align="center"><i>Noctis (King) commands 3 Comrades (Ignis, Gladiolus, Prompto) while Lunafreya (Oracle) operates independently and Iris (Guardian) supports in the background — screenshot from an actual session</i></p>

---

https://github.com/atman-33/multi-agent-ff15

The moment I opened tmux, three panes started moving **simultaneously**.

```
[00:00:00] You: "Create a comparison table of the top 3 MCP servers"

[00:00:01] Noctis: 「了解、3人に割り振るぞ (Roger, I'll assign to the three)」
           ↓
         ├─ Ignis: 「任せろ。Notion MCP の仕様を完璧に分析する (Leave it to me. I'll analyze Notion MCP specs perfectly)」
         ├─ Gladiolus: 「盾として、GitHub MCP を徹底調査する (As the shield, I'll thoroughly investigate GitHub MCP)」
         └─ Prompto: 「高速偵察してくる！🚀 Playwright MCP！ (Quick recon incoming! 🚀 Playwright MCP!)」

[00:00:05] Prompto: 「Playwright MCP 発見！ ✅ (Found Playwright MCP! ✅)」
         - Specialized in web automation
         - Screenshot/scraping support
         - Active community

[00:00:12] Ignis: 「Notion MCP 分析完了 💪 (Notion MCP analysis complete 💪)」
         - Strong database query capabilities
         - Real-time synchronization
         - Easy integration with existing workflows

[00:00:15] Gladiolus: 「GitHub MCP 詳細まとめた 💪 (Summarized GitHub MCP details 💪)」
         - Comprehensive repository access
         - CI/CD integration possible
         - Robust security model

[00:00:20] Noctis: 「3人の報告を集約中... (Aggregating reports from the three...)」

[00:00:22] Results automatically generated in dashboard.md

┌──────────────────────────────────────────────────┐
│ ## MCP Server Comparison                         │
├──────────────────────────────────────────────────┤
│ | MCP       | Strength      | Use Case           │
│ |-----------|----------------|------------------|
│ | Notion    | DB queries     | Data mgmt/analysis│
│ | GitHub    | Repo ops       | DevOps/automation │
│ | Playwright| Web automation | Testing/scraping  │
│                                                   │
│ Generated: 2026-02-13 00:00:22                    │
│ Result of three working simultaneously            │
└──────────────────────────────────────────────────┘
```

All I did was take a sip of coffee.

---

### This is multi-agent-ff15

Not **AI agents**. **Adventure comrades**.

Noctis commands as King. Ignis, Gladiolus, and Prompto move **simultaneously**, while Lunafreya provides independent counsel. And Iris supports from behind the scenes.
A team of six bound by trust, cooperating at your fingertips.

---

### Behind the "Lively Chaos" Lies Meticulous Design

YAML communication, event-driven architecture, hierarchical order—

A new form of multi-agent system that balances fun and efficiency.

This document introduces its mechanisms and practical usage.

---

## Part 0: Architecture — Order Through Hierarchical Structure

### 0-1. System Overview

```
        You (Crystal / Lord)
             │
             ├──────────────────────────┐
             ▼                          ▼
      ┌──────────┐            ┌────────────┐
      │ NOCTIS   │ ← King     │ LUNAFREYA  │ ← Oracle (Independent)
      │  (王)    │ (Leader +   │  (神凪)     │   Direct user interaction
      │          │  Task Mgr)  │            │   Can command Noctis
      └────┬─────┘            └────────────┘
           │ YAML + send-keys
           ▼
      ┌────────────┬──────────┬────────────┐
      │   IGNIS    │GLADIOLUS │  PROMPTO   │ ← Comrades (3)
      │  (軍師)    │  (盾)    │   (銃)     │
      └────────────┴──────────┴────────────┘

           IRIS (イリス) ← Dashboard Guardian (background)
           Monitors reports, reminds Noctis to update dashboard

      Session: ff15 (unified session - 6 panes)
      Panes: 0=Noctis, 1=Lunafreya, 2=Ignis, 3=Gladiolus, 4=Prompto, 5=Iris(bg)
```

**Communication protocol:**
- **Downward** (orders): Write YAML → wake target with `tmux send-keys`
- **Upward** (reports): Write YAML only (no send-keys to avoid interrupting your input)
- **Polling**: Forbidden. Event-driven only. API bills stay predictable.

### 0-2. Context persistence (4 layers)

| Layer | What | Survives |
|-------|------|----------|
| Memory MCP | Preferences, rules, cross-project knowledge | Everything |
| Project files | `config/projects.yaml`, `context/*.md` | Everything |
| YAML Queue | Tasks, reports (source of truth) | Everything |
| Session | `AGENTS.md`, instructions | `/new` resets it |

After `/new`, an agent recovers in **~2,000 tokens** by reading Memory MCP + its task YAML. No expensive re-prompting.

---

## Part 1: FF15's "Bonds" Accelerate Engineering

<p align="center">
  <img src="/plants/multi-agent-ff15/ff15-noctis-comrades.jpg" alt="FINAL FANTASY XV - Noctis and Comrades" width="800" />
</p>
<p align="center"><i>FINAL FANTASY XV — The King and his comrades on their journey (© SQUARE ENIX)</i></p>

Why "FF15"? Because the **"role distribution between the King and his comrades"** depicted in this game is itself a metaphor for an ideal development team.

### 1-1. Roles Define "Specialization"

In this system, each agent is given an FF15 character persona. This is not mere playfulness, but an **"implementation of specialization"** that strictly governs agent behavior.

- **Noctis (King) - Commander (PM)**
    - **Constraint**: "Never executes tasks directly (F001 forbidden)"
    - **Result**: Thorough task decomposition and optimal delegation. Leadership of a "King" who specializes in overseeing the whole and devising strategy.
- **Ignis (Tactician) - Strategist (Architect)**
    - **Personality**: Perfectionist, logical
    - **Result**: Meticulous analysis, risk management. Tactician's wisdom that provides confidence that "nothing will fail" in complex designs.
    - **Trust**: "If Ignis handles it, even complex integration is worry-free"
- **Gladiolus (Shield) - Guardian (Engineer/QA)**
    - **Creed**: "No compromises"
    - **Result**: Independent, robust implementation. Shield's steadfastness that never invades others' domains and protects quality.
- **Prompto (Gun) - Scout (Research)**
    - **Personality**: Agile, curious
    - **Result**: Mobility that instantly scouts unknown territories. Gun's sharpness as an information gathering specialist.
- **Lunafreya (Oracle) - Sage (Advisor)**
    - **Position**: Independent third-party perspective. Provides high-level consulting aligned with users.
- **Iris (Sister) - Dashboard Guardian (Supporter)**
    - **Role**: Monitors reports in the background and reminds Noctis to update. A cheerful supporter who says "Big brother, keep it up!" — the unsung hero working behind the scenes.

### 1-2. Lunafreya's Independence — A Capability Other Tools Lack

**Lunafreya is not under Noctis's command.**

This is multi-agent-ff15's **greatest differentiating factor**.

#### Independence Mechanism

```
User → Lunafreya: "Review article strategy"
  Lunafreya: Analysis begins (independent work)

Simultaneously...

User → Noctis: "Implement context menu"
  Noctis → Ignis/Gladiolus/Prompto: Task decomposition, parallel execution

Result: Two independent tasks progress **simultaneously**
```

#### Why Other Tools Can't Do This

| Tool | Constraint | Capability |
|-------|------|-----------|
| **Cursor / Copilot** | Single agent | Finish one task before moving to next |
| **LangGraph** | DAG structure (order-dependent) | Can't proceed until task completes |
| **FF15** | Independent agents × 2 | **Noctis and Lunafreya move simultaneously** |

#### Real Example (From Today's Session)

```
21:05 - User → Noctis: "Implement context menu for tube-loop-player"
21:05 - User → Lunafreya: "Review article strategy"

21:32 - Lunafreya: Article v3 integration complete + PR #68 created
21:39 - Ignis: project-register skill creation complete
21:48 - Both tasks completed

During this time, User was just drinking coffee.
```

**Cursor can't do this.** Neither can Copilot. Only FF15 has this capability.

### 1-3. Economy and Trust "Bonds"

Most multi-agent systems have agents constantly discussing "how to proceed."
However, **multi-agent-ff15** replaces trust between comrades with physical mechanisms: "YAML and tmux send-keys."

- **YAML-based communication**: No APIs needed, instructions and reports completed purely through local filesystem.
- **Event-driven**: Wake comrades with "tmux send-keys" only when necessary. No wasted waiting time or costs.

**"With bonds, unnecessary explanation (API costs) is unneeded."** This design philosophy realizes overwhelming speed and low cost.

---

## Part 2: Today's Session — 43 Minutes of Coordinated Work

Today (2026-02-13), we're revealing the session.

This is a 43-minute record of implementing "right-click → move to playlist" functionality in the tube-loop-player project.
Not a time-lapse, but actual timestamps recorded in dashboard.md.

### 2-1. Timeline: 43-Minute Live Report

#### 21:05 — Implementation Start

```
You: "Add right-click menu to tube-loop-player,
      enable moving songs to different playlists"

Noctis: 「了解。Context menu 実装を開始する。みんな、動け (Roger. Starting context menu implementation. Everyone, move)」
```

**Noctis**: Creates change with OpenSpec → Begins task decomposition

#### 21:32 — Parallel Completion (27 Minutes Elapsed)

**Two deliverables simultaneously**:

```
[Ignis]: 「任せろ。記事統合は完璧に仕上げる (Leave it to me. I'll perfect the article integration)」

1. multi-agent-ff15 article integration complete
   - Merged Gladiolus version + Prompto version
   - Achieved balance of lively feel and business value
   - Output: `article-v3-final.md`

2. tube-loop-player PR creation complete
   - PR #68: "add right-click context menu"
   - Commit: `972ceb1`
   - Features: maintained drag-and-drop + integrated right-click menu
```

**Ignis's Multitasking Capability**:

As strategist, handled both article integration (documentation) and PR creation (engineering).

"Three tasks in parallel? Natural for Ignis"

Other tools would do "finish article, then PR," but Ignis handles parallel processing.

#### 21:39 — Skill Creation (7 Minutes Elapsed)

```
[Prompto]: 「スキル作成完了！7分で片付いた！ 🚀 (Skill creation complete! Done in 7 minutes! 🚀)」
```

**Ignis**: project-register skill creation complete

**Background**:
- Lunafreya proposed "project registration should be automated"
- Ignis implemented skill (Option A: skill approach)
- Result: Project registration now single command

**This is Bottom-up Skill Discovery**:

Patterns noticed as "we'll repeat this" during work are immediately turned into skills.
Exciting just watching dashboard.md update continuously.

#### 21:48 — Project Registration Completion

```
[Noctis]: 「全ての作業が完了した。仲間たちに感謝する (All work complete. Grateful to my comrades)」
```

**Noctis**: Officially registered tube-loop-player project
- Added to `config/projects.yaml`
- Created `context/tube-loop-player.md`
- Documented Tech Stack, Constraints

---

### 2-2. What Was Happening Simultaneously

```
┌──────────────────────────────────────────────────┐
│      Parallel Work Streams (21:05-21:48)         │
├──────────────────────────────────────────────────┤
│                                                  │
│  Noctis   │ ████████████████ Context Menu impl   │
│           │ (Main Task - Command)                │
│                                                  │
│  Lunafreya│ ██████████ Article strategy review   │
│           │ (Independent Task)                   │
│                                                  │
│  Ignis    │ ███ Article integration              │
│           │ ████ PR creation                     │
│           │ █ Skill implementation               │
│           │ (3 tasks parallel - Tactician wisdom)│
│                                                  │
│  Timeline │ 21:05 ──→ 21:32 ──→ 21:48           │
│           │   0min     27min      43min          │
└──────────────────────────────────────────────────┘
```

**Reality of Parallel Work**:

1. **Noctis**: Main work (tube-loop-player development)
2. **Lunafreya**: Independent work (article integration, PR review)
3. **Ignis**: 3 tasks parallel (article + PR + skill)

This is impossible with other tools.

---

### 2-3. Why Other Tools Can't Do This

#### Cursor / Copilot Case

```
[21:05] You: "Implement context menu"
        Cursor: Implementation starts...

[21:32] Implementation complete

[21:32] You: "Also integrate article"
        Cursor: Article integration starts... (waited 27 minutes)

[21:59] Article integration complete

[21:59] You: "Also create skill"
        Cursor: Skill creation starts... (wait another 27 minutes)

[22:26] All work complete

Total time: 81 minutes (43 minutes with FF15)
```

**Sequential execution** = Cumulative waiting time

#### LangGraph Case

```
Graph definition:
  Node A (Context Menu) → Node B (PR) → Node C (Skill)

Execution:
  Wait for Node A completion → Node B starts
  Wait for Node B completion → Node C starts

Total time: 81 minutes (also sequential)
```

**DAG structure (order-dependent)** = No parallel execution

#### FF15 Case

```
[21:05] Three tasks fired simultaneously
        - Noctis: Context Menu (main)
        - Lunafreya: Article integration (independent)
        - Ignis: PR + Skill (parallel)

[21:48] All work complete

Total time: 43 minutes (true parallel execution)
```

**Independent agents × parallel execution** = Time compression

---

### 2-4. The Truth Behind "Lively Chaos"

**This is the experience of 'working with comrades'.**

```
dashboard.md updates continuously.

[21:05] Ignis: Article integration start
[21:15] Prompto: Skill investigation complete
[21:32] Ignis: Article integration complete ✅
[21:32] Ignis: PR creation complete ✅
[21:39] Ignis: Skill creation complete ✅
[21:48] Noctis: Project registration complete ✅
```

**While comrades worked, I was drinking coffee.**

Meanwhile, in tmux panes, three keep working.
Progress visible in real-time.
This is the essence of "lively chaos."

---

### 2-5. Analysis: Why So Much in 43 Minutes

| Factor | Explanation |
|------|------|
| **Parallel execution** | Ignis progressed article integration + PR creation + skill implementation simultaneously |
| **Role specialization** | Ignis (Strategist) handled both documentation and code |
| **Skill discovery** | Discovered automation opportunity during work → immediate implementation |
| **Visualization** | All progress trackable in dashboard.md |
| **Independent work capable** | If Lunafreya had another task, that could have run in parallel too |

**Time Compression Through Parallel Work**:

```
Sequential (Cursor): 27min + 27min + 27min = 81min
Parallel (FF15):     max(27min, 27min, 27min) = 43min

Time reduction: 81min → 43min (47% shorter)
```

---

## Part 3: Technical Deep Dive: Engine Room Secrets

### 3-1. Zero-Cost Orchestration

The system's heart is "physical coordination" that makes API costs zero.

- **Layered Context**: Even with `/new` (session reset), memory (Memory MCP), project knowledge, and task status remain as files. This keeps token consumption consistently low while enabling "infinite session" operation.
- **Race Condition Elimination**: Giving each agent its dedicated YAML file physically prevents write conflicts.

### 3-2. Bottom-Up Skill Discovery

AI auto-suggests patterns it notices while working as "this could be used in other projects too."

```yaml
skill_candidate:
  name: "API-Scaffold"
  reason: "This implementation pattern is the third occurrence. Automation recommended."
```

If user approves, it becomes a "common skill" usable by the entire team. A mechanism where AI learns and grows as a team.

---

## Part 4: What Other Tools Can't Do

### 4-1. Parallel Work Capability Comparison

The decisive difference between other tools and multi-agent-ff15 is **whether multiple independent tasks can progress simultaneously**.

| Scenario | Cursor / Copilot | LangGraph | **FF15** |
|----------|------------------|-----------|----------|
| **Main task + side concern** | ❌ Finish first task before next | ❌ DAG structure (order-dependent) | ✅ **Noctis + Lunafreya operate simultaneously** |
| **Strategic review during implementation** | ❌ Interrupts flow | ❌ Not designed for this use | ✅ **Lunafreya moves independently** |
| **Multi-domain work (frontend + docs)** | ❌ Context switch overhead | ⚠️ Fragile prompt engineering | ✅ **Specialized personas handle naturally** |
| **3+ tasks in true parallel** | ❌ Impossible | ❌ Impossible | ✅ **Ignis/Gladiolus/Prompto execute in parallel** |

### 4-2. Lunafreya Independent Operation (Strategic Consulting)

**Example (From actual session)**:

```
User → Lunafreya: "Review article strategy"
  Lunafreya: Analysis begins (independent work)

Simultaneously...

User → Noctis: "Implement context menu"
  Noctis → Ignis/Gladiolus/Prompto: Task decomposition

Result: Two independent tasks execute in parallel

[21:05] Start
[21:32] Lunafreya: Article v3 integration complete + PR #68 created
[21:39] Ignis: project-register skill creation complete
[21:48] Both complete
```

**Cursor can't do this**. Neither can Copilot. Nor LangGraph.

**Only FF15's capability.**

### 4-3. Competitive Comparison: Why "ff15" is Chosen

| Feature | LangGraph / CrewAI | **multi-agent-ff15** |
|------|--------------------|----------------------|
| **Coordination cost** | Via API (high cost) | **File-based (zero)** |
| **Transparency** | Black box | **All behavior visible in tmux** |
| **Customization** | Complex graph definition | **Intuitive definition via personas** |
| **Skill growth** | Predefined only | **Bottom-up auto-suggestion** |
| **Setup** | Requires heavy infrastructure | **Instant launch with shell script** |
| **Independent agents** | ❌ Impossible | **✅ Lunafreya operates independently** |

---

## Part 5: Try It Now — Publicly Available on GitHub

**multi-agent-ff15** is published as open source:

🔗 **GitHub**: https://github.com/atman-33/multi-agent-ff15

### Setup (5 minutes)

```bash
# 1. Clone the repository
git clone https://github.com/atman-33/multi-agent-ff15.git
cd multi-agent-ff15

# 2. First-time setup
./first_setup.sh

# 3. Stand by Me!
./standby.sh
```

tmux session launches and five agents enter standby.

### Language Settings — Multi-language Support

Language can be changed in `config/settings.yaml`:

```yaml
language: ja   # Japanese only (FF15-style Japanese)
language: en   # English (FF15-style Japanese + English translation in parentheses)
language: es   # Spanish (same format)
language: zh   # Chinese (same format)
# Others: ko, fr, de and other major languages supported
```

**Operation examples:**

| Setting | Noctis's Output |
|------|---------------|
| `language: ja` | 「了解、3人に割り振るぞ」 |
| `language: en` | 「了解、3人に割り振るぞ (Roger, I'll assign to the three)」 |
| `language: es` | 「了解、3人に割り振るぞ (Entendido, asignaré a los tres)」 |

**Usable worldwide while maintaining FF15 authenticity.**

dashboard.md, report messages, all output unified in configured language.

### First Command

```bash
ffa    # tmux attach-session -t ff15

You: "Research the top 3 MCP servers and create a comparison table"
```

Noctis immediately decomposes tasks, three Comrades execute in parallel.
Results automatically aggregated in `dashboard.md`.

---

## Acknowledgments — Respect for Predecessors

This project was developed based on [multi-agent-shogun](https://github.com/yohey-w/multi-agent-shogun) by [@yohey-w](https://github.com/yohey-w).

**Key inspirations:**
- Multi-agent orchestration patterns and the OpenCode ecosystem
- Event-driven communication architecture
- Bottom-up skill discovery system

Deep respect for the original work. Without the design philosophy demonstrated by multi-agent-shogun, this FF15-inspired multi-agent system would not exist.

---

## Conclusion: From AI as "Tools" to "Comrades"

**multi-agent-ff15** is not just an automation tool.
It's a platform to free AI from API cost constraints and create teams that "distribute roles, trust each other, and grow together" just like humans.

With one command from Crystal (you), the King, Tactician, Shield, Gun, and Sage spring into action.
Won't you join us on this new development adventure?

**「行くぞ、みんな (Let's go, everyone)」** — Noctis

---

**Created**: 2026-02-13  
**Authors**: Noctis (King), Ignis (Strategist), Gladiolus (Shield), Prompto (Gun), Lunafreya (Oracle)  
**Status**: Phase 1-3 Complete Version (Final Release)
