Skip to content

SystemicCypher/isengard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏰 Isengard

"Build me an army worthy of Mordor" - but for code

A terminal-based orchestrator that summons multiple Claude coding agents to tackle your development tasks in parallel. Named after Saruman's fortress, Isengard gives you a command center to deploy, monitor, and coordinate autonomous coding agents from your terminal.

What is Isengard?

Isengard is a local TUI (Terminal User Interface) tool that spins up multiple Claude coding agents, assigns them tasks, and manages their execution. Think of it as your own tower of power for software development - but instead of breeding Uruk-hai, you're deploying intelligent coding agents, all from the comfort of your terminal.

Features

  • πŸ§™β€β™‚οΈ Agent Orchestration - Spin up multiple Claude coding agents on demand
  • πŸ“‹ Task Distribution - Intelligently distribute coding tasks across agents
  • πŸ”„ Parallel Execution - Multiple agents working simultaneously on different parts of your project
  • πŸ“Š Real-time TUI - Monitor agent progress, view logs, and control execution in a beautiful terminal interface
  • 🎯 Smart Coordination - Prevents conflicts and manages dependencies between agent tasks
  • πŸ’» Fully Local - Runs entirely on your machine, using your Anthropic API key

Why "Isengard"?

Just as Isengard was Saruman's seat of power for coordinating forces, this tool serves as your command center for orchestrating coding agents. The LOTR naming scheme continues throughout:

  • The Tower (TUI) - Your command interface overlooking all operations
  • Uruk-hai (Agents) - Autonomous coding agents, each with a specific mission
  • The PalantΓ­r - Real-time monitoring and communication with agents
  • Missions - Tasks dispatched from the tower

Installation

# Install with uv (recommended)
uv tool install isengard

# Or with pipx
pipx install isengard

# Or build from source
git clone https://github.com/yourusername/isengard.git
cd isengard
uv sync
uv run isengard --init mission.yml
uv run isengard mission.yml

Quick Start

# Set your API key
export ANTHROPIC_API_KEY="your-key-here"

# Generate a sample mission file
isengard --init mission.yml

# Launch Isengard with your mission file
isengard mission.yml

# Or create/edit a mission interactively
isengard --edit

# Run in dry-run mode to test without API calls
isengard mission.yml --dry-run

Development Quick Start

# Clone and setup
git clone https://github.com/yourusername/isengard.git
cd isengard
uv sync

# Create a sample mission file
uv run isengard --init mission.yml

# Run directly with uv
uv run isengard mission.yml

# Or install locally for development
uv pip install -e .
isengard mission.yml

The TUI Interface

β”Œβ”€ ISENGARD ─────────────────────────────────────────────────┐
β”‚ The Tower of Orchestration                    5 Agents Active β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ACTIVE MISSIONS                                               β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ [●] uruk-1  β”‚ Implement authentication    β”‚ 67% β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β”‚ β”‚
β”‚ β”‚ [●] uruk-2  β”‚ Build REST API endpoints    β”‚ 43% β”‚ β–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β”‚ β”‚
β”‚ β”‚ [●] uruk-3  β”‚ Write unit tests           β”‚ 89% β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ”‚ β”‚
β”‚ β”‚ [β—‹] uruk-4  β”‚ Queued: Update docs        β”‚  0% β”‚ β–‘β–‘β–‘β–‘β–‘β–‘β”‚ β”‚
β”‚ β”‚ [βœ“] uruk-5  β”‚ Refactor database layer    β”‚100% β”‚ DONE  β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                               β”‚
β”‚ PALANTÍR - AGENT OUTPUT                                       β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ [uruk-1] Creating auth middleware...                     β”‚ β”‚
β”‚ β”‚ [uruk-1] βœ“ Generated JWT helper functions                β”‚ β”‚
β”‚ β”‚ [uruk-2] ERROR: Missing dependency @types/express         β”‚ β”‚
β”‚ β”‚ [uruk-3] Writing tests for user service...               β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                               β”‚
β”‚ [s]tart [p]ause [k]ill [a]dd [q]uit                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           ISENGARD TOWER            β”‚
β”‚         (Orchestrator Core)         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                   β”‚
    β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”           β”Œβ”€β”€β”€β–Όβ”€β”€β”€β”
    β”‚Agent 1β”‚           β”‚Agent 2β”‚
    β”‚(Uruk) β”‚           β”‚(Uruk) β”‚
    β””β”€β”€β”€β”¬β”€β”€β”€β”˜           β””β”€β”€β”€β”¬β”€β”€β”€β”˜
        β”‚                   β”‚
        β–Ό                   β–Ό
    [Task A]            [Task B]

Configuration

Task Definition File (missions.yml)

# Define your missions for the Uruk-hai
missions:
  - name: "Implement authentication"
    description: "Add JWT-based authentication to the API"
    files:
      - "src/auth/**"
      - "src/middleware/auth.js"
    priority: high
    
  - name: "Build REST API endpoints"
    description: "Create CRUD endpoints for user management"
    files:
      - "src/routes/users.js"
      - "src/controllers/users.js"
    dependencies:
      - "Implement authentication"
    
  - name: "Write unit tests"
    description: "Comprehensive test coverage for auth and user modules"
    files:
      - "tests/auth.test.js"
      - "tests/users.test.js"
    priority: medium

Settings (.isengard/config.yml)

# Isengard configuration
model: "claude-sonnet-4-20250514"
max_agents: 5
workspace: "."

# Agent behavior
auto_commit: false
require_approval: true

# TUI preferences
theme: "sauron"  # Options: sauron, shire, rivendell
show_tokens: true
log_level: "info"

Use Cases

  • Large Refactoring Projects - Deploy multiple agents to refactor different modules simultaneously
  • Feature Development - Parallel implementation of independent features
  • Code Migration - Coordinate agents to migrate codebases across frameworks or languages
  • Test Generation - Spin up agents to write comprehensive test suites
  • Documentation - Generate docs for different parts of your codebase in parallel

CLI Commands

# Run a mission file
isengard mission.yml

# Run with a specific number of concurrent agents
isengard mission.yml --agents 5
isengard mission.yml -a 5

# Dry run (simulate without calling Claude)
isengard mission.yml --dry-run
isengard mission.yml -n

# Auto-start orchestration immediately
isengard mission.yml --auto-start
isengard mission.yml -s

# Enable verbose output
isengard mission.yml --verbose
isengard mission.yml -v

# Generate a sample mission file
isengard --init mission.yml
isengard -i mission.yml

# Open mission editor (create new mission)
isengard --edit
isengard -e

# Edit an existing mission file
isengard --edit mission.yml
isengard -e mission.yml

# Show version
isengard --version

TUI Keybindings

  • s - Start orchestration (or resume if paused)
  • p - Pause/Resume agents
  • r - Retry failed tasks
  • q - Quit Isengard

Roadmap

  • Core orchestrator engine (Orthanc)
  • Beautiful TUI with real-time updates
  • Agent lifecycle management
  • Task queue and priority system
  • File conflict detection and resolution
  • Git integration (auto-branch per agent)
  • Agent collaboration protocols
  • Mission templates and presets
  • Session recording and replay
  • Cost tracking and token usage monitoring
  • Export agent outputs to reports
  • Plugin system for custom agent behaviors

Contributing

Contributions welcome! Whether you're a wizard, ranger, or hobbit of the coding world, all are welcome to help build Isengard.

Development Setup

# Clone the repository
git clone https://github.com/yourusername/isengard.git
cd isengard

# Install dependencies with uv
uv sync

# Create a sample mission and run in development mode
uv run isengard --init mission.yml
uv run isengard mission.yml

# Run tests
uv run pytest

# Format code
uv run ruff format

# Lint
uv run ruff check

Tech Stack

  • Python 3.11+ - Core language
  • uv - Fast Python package installer and resolver
  • Textual - Modern TUI framework
  • Anthropic SDK - Claude API integration
  • Rich - Terminal formatting and styling
  • asyncio - Concurrent agent management

License

MIT

Acknowledgments

  • Built with Anthropic's Claude
  • Inspired by J.R.R. Tolkien's Middle-earth
  • Named after the fortress that definitely didn't have any structural integrity issues

"The old world will burn in the fires of industry" - Saruman (but make it CI/CD pipelines)

About

An AI Agent Orchestrator worthy of Mordor. It's an experiment in vibe coding

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages