Skip to main content

A multi-agent orchestration system for managing AI coding agents (Claude and Gemini) in parallel git worktrees with a real-time web dashboard.

Project description

image

The Pitch

Corral is designed to bring back some sanity to coding with AI agents with minimal disruption to your current workflow. The goal is to augment, not take over. The activity across all your agent is visible so you see which ones need attention.

The system generates goals and status based on what you are doing in each session and displays them prominantly. It Provides text search across previous sessions, links to your git commits, and lets resume them from the UI. All of the things the AI agents are doing in the background is brought to light in the activity pannel so you can follow along and start to get a better understanding of just what these things are actually doing.

Corral is an MIT licensed multi-agent orchestration application built using tmux and FastAPI and basic HTML5/JS for easy extensibilty and modification. We welcome feedback, commits and hope it brings you some stress releif to corral those little AIs.

main_loop

Features

  • Multi-agent support — Launch and manage both Claude and Gemini agents side-by-side across worktrees
  • Web dashboard — Real-time monitoring with pane capture, status tracking, and command input
  • Session history — Browse past sessions from both Claude and Gemini
  • Full-text search — Search across all session content
  • Auto-summarization — Summarization of sessions are stored for text search later
  • Session notes & activity — Add markdown notes and see the activty that occured in each seassion live and historically
  • Remote control — Send commands, navigate modes, and manage agents from the dashboard
  • Attach/Kill/Restart/Resume — Open a terminal attached to any agent's tmux session, or kill it directly from the UI, or relaunch as a neew session
  • Git integration & PR Linking Tracks, commits, and remote URL per agent & session

Installation

Install from PyPI:

pip install agent-corral

Or install directly from GitHub:

pip install git+https://github.com/cdknorow/corral.git

Launch agents and web dashboard

You can launch the web server directly using corral or corral-dashboard:

# Start the web dashboard directly (default: http://localhost:8420)
corral

# Custom host/port
corral --host 127.0.0.1 --port 9000

Note: This system is currently mostly tested with Claude Code and to some extent Gemini CLI. However, the underlying architecture is extensible to any cli based agents.

Session history search and filtering

history

The sidebar History section includes a search bar and filters for browsing your entire AI coding session history along with activity, notes, and git commit tracking

On startup, the server launches three background services:

  1. Session indexer (every 2 min) — Indexes all Claude sessions from ~/.claude/projects/**/*.jsonl and Gemini sessions from ~/.gemini/tmp/*/chats/session-*.json, builds a full-text search index (FTS5), and queues new sessions for auto-summarization
  2. Batch summarizer — Continuously processes the summarization queue using Claude CLI
  3. Git poller (every 2 min) — Polls git branch, commit, and remote URL for each live agent and stores snapshots in SQLite

Features:

  • Search — Type in the search bar to find sessions by content (uses SQLite FTS5 with porter stemming)
  • Filter by tag — Select a tag from the dropdown to narrow results
  • Filter by source — Show only Claude or Gemini sessions
  • Pagination — Browse through all sessions with prev/next controls
  • URL bookmarking — Session URLs use hash routing (#session/<id>) so you can bookmark or share links
  • Notes & tags — Add markdown notes and color-coded tags to any session, stored in ~/.corral/sessions.db

Managing sessions from the dashboard

image

The web dashboard provides quick-action buttons for each live session:

Action Description
Esc / Arrow / Enter Send navigation keys to the agent
Plan Mode Toggle Claude Code plan mode
Accept Edits Toggle Claude Code auto-accept mode
Bash Mode Send ! command to enter bash mode
Base Mode Toggle base mode
/compact / /clear Send compress or clear commands (adapts per agent type)
Reset Compress then clear the session
Attach Open a local terminal window attached to the agent's tmux session
Restart Restart the agent in the same tmux pane
Kill Terminate the tmux session and remove it from the dashboard

You can also type arbitrary commands in the input bar and send them to the selected agent.

Claude Code Hooks (settings.json)

To fully integrate Claude Code's agentic state and task management into the Corral dashboard, configure the provided corral-hook scripts in your Claude Code settings.json (usually located at ~/.claude.json or ~/.claude/settings.json).

If you are already using other configuration options like a custom statusLine or other hooks, simply merge these hook definitions into your existing JSON:

"hooks": {
    "PostToolUse": [
      {
        "matcher": "TaskCreate|TaskUpdate",
        "hooks": [
          {
            "type": "command",
            "command": "corral-hook-task-sync"
          }
        ]
      },
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "corral-hook-agentic-state"
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "corral-hook-agentic-state"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "corral-hook-agentic-state"
          }
        ]
      }
    ]

Or use launcher which discovers worktree subdirectories, creates a agent for each one, and starts launches the dashboard:

# Launch Claude agents and web dashboard for worktrees in the current directory
launch-corral

# Launch Gemini agents from a specific path
launch-corral <path-to-root> gemini

Remote server development (SSH port forwarding)

If you're running Corral on a remote server, forward the dashboard port over SSH to access it in your local browser:

# Forward remote port 8420 to localhost:8420
ssh -L 8420:localhost:8420 user@remote-host

# If using a custom port
ssh -L 9000:localhost:9000 user@remote-host

Then open http://localhost:8420 (or your custom port) in your local browser. You can add this to your ~/.ssh/config to make it persistent:

Host my-dev-server
    HostName remote-host
    User user
    LocalForward 8420 localhost:8420

Manual tmux management

# Attach to a specific agent session
tmux attach -t claude-agent-1

# Switch between windows
Ctrl+b n  # next
Ctrl+b p  # previous

# Detach from tmux
Ctrl+b d

Agent Protocol

Agents emit structured markers using the ||PULSE:<EVENT_TYPE> <payload>|| format. The dashboard parses these from agent output in real time:

||PULSE:STATUS <Short description of current task>||
||PULSE:SUMMARY <One-sentence high-level goal>||
||PULSE:CONFIDENCE <1-5> <short reason>||

The protocol is automatically injected via PROTOCOL.md when launching agents. See src/corral/PROTOCOL.md for the full specification.

Advanced Information

For information on project structure, API endpoints, and the database schema, please see DEVELOP.md.

Dependencies

  • Python 3.8+
  • FastAPI + Uvicorn — Web server
  • Jinja2 — HTML templating
  • tmux — Session management
  • Claude CLI (optional) — Powers auto-summarization

Contributing

We welcome contributions! Whether it's adding support for new AI coding agents natively or improving the web dashboard, please feel free to open an issue or submit a pull request.

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agent_corral-0.5.0.tar.gz (6.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agent_corral-0.5.0-py3-none-any.whl (6.6 MB view details)

Uploaded Python 3

File details

Details for the file agent_corral-0.5.0.tar.gz.

File metadata

  • Download URL: agent_corral-0.5.0.tar.gz
  • Upload date:
  • Size: 6.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for agent_corral-0.5.0.tar.gz
Algorithm Hash digest
SHA256 639525c2b5d3d5985e6cd591103ca807f3e7b8ca8eac9ede9523e36acfcdfa72
MD5 8e7133575f64046f5a07349bea449ccf
BLAKE2b-256 1b24e25271b9afde70e0630275859e22b4d90e1e6a656d7744b69d3aa2b751b4

See more details on using hashes here.

File details

Details for the file agent_corral-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: agent_corral-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for agent_corral-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cb65fb7226325d1fe98d4126d58e9cdd9d4f9ff10cd71452596c68697bfa5e2f
MD5 51cbe942005ffbef6a43a24fe9fa51c0
BLAKE2b-256 49980378ef20fceab665fef88a65f23c1b39862c0ca01fbb721e30ecad0b77cb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page