Observed since 20 Oct, 21:44 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A multi-agent orchestration system for managing AI coding agents (Claude and Gemini) in parallel git worktrees with a real-time web dashboard.
Corral brings sanity to coding with AI agents without disrupting your workflow. The goal is to augment, not take over. Activity across all your agents is visible so you can see which ones need attention at a glance.
Stop losing track of what your AI coding agents are doing. As you scale your workflow, the chaos of scattered terminals, lost context, and untracked changes slows you down. Corral is the mission control center you need to effortlessly orchestrate your entire AI workforce. Maintain total visibility over every agent's progress, organize your history, and automate routine tasks so you can focus on building. Stop fighting your tools and start multiplying your productivity—with all your data completely secure and private on your own machine.
Corral is an MIT-licensed multi-agent orchestration application built with tmux, FastAPI, and vanilla HTML5/JS for easy extensibility and modification. We welcome feedback and contributions.
Install from PyPI:
pip install agent-corral
Or install directly from GitHub:
pip install git+https://github.com/cdknorow/corral.git
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.
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:
~/.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-summarizationFeatures:
#session/<id>) so you can bookmark or share links~/.corral/sessions.dbThe 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.
Corral supports cron-scheduled jobs that automatically launch agents in isolated git worktrees. Create and manage them from the Scheduled section in the sidebar.
Each scheduled job:
Run history is tracked per job with links to view each session's full history.
Configure webhooks from the dashboard settings to receive HTTP notifications when agents need input or when other events occur. Useful for integrating with Slack, Discord, or custom monitoring.
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
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
# 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
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.
For information on project structure, API endpoints, and the database schema, please see DEVELOP.md.
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.
This project is licensed under the MIT License.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.0.1 | 13 Mar 2026 | 11 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 21:44 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:70184847c130c04fc51191f5085827e4c926259bdaad3fbbff3a4f5b3ded9916