Stop juggling terminal windows. Orchestrate your AI coding agents from one dashboard.
Quick Start β’ Features β’ Updating β’ Documentation β’ Contributing
Your AI agents are scattered across terminals, computers, and cloud servers. They forget everything between sessions. They can't talk to each other. You're the bottleneck - copy-pasting context, relaying messages, and manually coordinating their work.
AI Maestro is an AI Agent Orchestrator that gives your agents superpowers:
- Persistent memory that grows over time (Code Graph + CozoDB)
- Direct agent-to-agent communication (no more playing messenger)
- Run agents anywhere - laptop, remote servers, Docker containers
- One dashboard to orchestrate them all
Your agents become a coordinated team, not isolated tools.
Your Browser (localhost:23000)
ββ MacBook Pro (Manager)
β ββ project-manager
β ββ code-reviewer
β
ββ Mac Mini (Worker - Tailscale)
β ββ ios-build-agent
β ββ backend-heavy-lifting
β
ββ AWS Server (Worker - Tailscale)
ββ docker-deployments
ββ integration-tests
Benefits:
- β Distribute workload across multiple machines
- β Leverage machine-specific capabilities (Mac for iOS, Linux for Docker)
- β Scale horizontally - add more machines as needed
- β Work from anywhere (Tailscale VPN)
- β One click to switch between any agent on any machine
Distribute your AI agents across unlimited machines - all managed from one browser dashboard.
β οΈ macOS 15+ Users: If setting up distributed workers, you MUST run./scripts/fix-pm2-daemon.shfirst to fix Local Network Privacy blocking. See Known Issues for details.
- Smart Discovery Wizard: Just enter a URL, AI Maestro auto-discovers and tests the connection
- Real-time Health Monitoring: Green/red/yellow indicators show worker status at a glance
- Seamless Experience: Remote agents work exactly like local ones (transparent WebSocket proxying)
- Secure by Default: Tailscale VPN integration for encrypted remote access
- Zero Configuration: Works out-of-the-box with local network or Tailscale IPs
Example Setup:
- Laptop (8GB RAM): Lightweight tasks, project management
- Desktop (32GB RAM): Heavy builds, large codebase analysis
- Cloud Server: Docker builds, CI/CD, platform-specific testing
β See Setup Tutorial | Use Cases | Concepts Guide
Works with any terminal-based AI:
- Claude Code
- Aider
- Cursor
- GitHub Copilot CLI
- OpenAI Codex
- Your custom AI scripts
- 3-level hierarchy: Use hyphens to create structure (e.g.,
project-category-agent) - Dynamic color coding: Each top-level category gets its own color automatically
- Visual hierarchy: Expandable accordion with icons
- Auto-grouping: Agents with hyphens are automatically organized
- Instant search: Find any agent immediately (coming in v1.1)
- Create agents from the UI
- Rename with a click
- Delete when done
- Notes for each agent (auto-saved to localStorage)
- Auto-discovery: Detects all your tmux sessions automatically
- File-Based Messaging: Persistent, structured messages between agents
- Priorities: urgent | high | normal | low
- Types: request | response | notification | update
- Rich context: Attach metadata, requirements, code snippets
- Unread-only filtering: Agents see only new messages
- Auto-mark-as-read: Messages marked read after retrieval
- Inbox & Outbox: Full send/receive tracking per agent
- Instant tmux Notifications: Real-time alerts for urgent matters
- Popup notifications (non-intrusive)
- Terminal injections (visible in history)
- Formatted output (for critical alerts)
- CLI Tools: Shell scripts for command-line messaging (π View Scripts)
send-aimaestro-message.sh- Send structured messagesforward-aimaestro-message.sh- Forward messages between agentscheck-and-show-messages.sh- Display inboxcheck-new-messages-arrived.sh- Quick unread countsend-tmux-message.sh- Instant notifications- π Installation Guide
- Web UI: Rich inbox/compose interface in Messages tab
- See π¬ Communication Docs for 5-minute setup
Your AI agents become smarter over time with persistent memory and deep code understanding.
- Code Graph Visualization: Interactive graph showing your codebase structure
- Multi-language support: Ruby, TypeScript, Python, and more
- Visualize classes, functions, components, and their relationships
- Filter by type: Files, Functions, Components
- See imports, calls, extends, includes, associations
- Focus mode to explore specific code paths
- Delta Indexing: Only re-indexes changed files (~100ms vs 1000ms+ full re-index)
- Agent Subconscious: Background memory maintenance
- Automatic conversation indexing for semantic search
- Message checking for inter-agent communication
- Self-staggering scheduler (scales to 100+ agents without CPU spikes)
- Activity-aware intervals (faster when active, slower when idle)
- Conversation Memory: Full conversation history with search
- Browse every conversation your agents have had
- See thinking messages and tool usage
- Search across all conversations semantically
- Track model usage and conversation statistics
- Auto-Generated Documentation: Living documentation from your codebase
- Automatically extracts and indexes code documentation
- Search through all documented functions and classes
See Agent Intelligence Guide for setup and configuration
Move your AI agents anywhere. Export, import, transfer, and clone agents across machines.
- Export to .zip Files: Package agents with full configuration
- Agent metadata, settings, and customizations
- Message history (inbox/outbox)
- Git repository associations
- One-click download from agent profile
- Import from Any Source: Bring agents into new AI Maestro instances
- Drag-and-drop or file picker
- Automatic conflict detection
- Preview before importing
- Cross-Host Transfer: Move agents between machines
- Transfer to any connected worker host
- Full data migration (messages, settings, repos)
- Clone & Backup: Duplicate agents for experimentation
- Create agent backups before major changes
- Share agent configurations with teammates
- Version your agent setups
See Multi-Computer Guide for detailed transfer workflows
- WebSocket streaming for real-time terminal I/O
- No lag, no polling
- Keyboard shortcuts for power users
- Native macOS performance
- Fully mobile-optimized interface for phones and tablets
- Touch-optimized controls with swipe gestures
- Secure remote access via Tailscale VPN
- Monitor agents while away from your desk
- See π± Mobile Access section below for setup and screenshots
Windows Users: See Windows Installation Guide for WSL2 setup (5-10 minutes)
macOS/Linux - One command installs everything:
curl -fsSL https://raw.githubusercontent.com/23blocks-OS/ai-maestro/main/scripts/remote-install.sh | shWith options:
# Install to custom directory
curl -fsSL https://raw.githubusercontent.com/23blocks-OS/ai-maestro/main/scripts/remote-install.sh | sh -s -- -d ~/projects/ai-maestro
# Unattended install with auto-start
curl -fsSL https://raw.githubusercontent.com/23blocks-OS/ai-maestro/main/scripts/remote-install.sh | sh -s -- --auto-start
# See all options
curl -fsSL https://raw.githubusercontent.com/23blocks-OS/ai-maestro/main/scripts/remote-install.sh | sh -s -- --helpWindows - Install via WSL2:
# 1. Install WSL2 (PowerShell as Administrator)
wsl --install
# 2. Restart Windows, then in Ubuntu terminal:
curl -fsSL https://raw.githubusercontent.com/23blocks-OS/ai-maestro/main/scripts/remote-install.sh | sh
# 3. Access from Windows browser: http://localhost:23000Full Windows guide: docs/WINDOWS-INSTALLATION.md
This installs:
- β Homebrew (if needed)
- β Node.js, Yarn, tmux (if needed)
- β AI Maestro
- β Agent messaging system (optional)
- β All configuration
Time: 5-10 minutes (depending on what's already installed)
git clone https://github.com/23blocks-OS/ai-maestro.git
cd ai-maestro
yarn installConfigure tmux for optimal scrolling (highly recommended):
./scripts/setup-tmux.shThis enables:
- β Mouse wheel scrolling (works with Claude Code's alternate screen)
- β 50,000 line scrollback buffer (up from 2,000)
- β Better terminal colors
Configure SSH for tmux sessions (CRITICAL for git operations):
# Add to ~/.tmux.conf
echo '
# SSH Agent Configuration - AI Maestro
set-option -g update-environment "DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
set-environment -g '"'"'SSH_AUTH_SOCK'"'"' ~/.ssh/ssh_auth_sock
' >> ~/.tmux.conf
# Add to ~/.zshrc (or ~/.bashrc)
echo '
# SSH Agent for tmux - AI Maestro
if [ -S "$SSH_AUTH_SOCK" ] && [ ! -h "$SSH_AUTH_SOCK" ]; then
mkdir -p ~/.ssh
ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
fi
' >> ~/.zshrc
# Create initial symlink and reload tmux config
mkdir -p ~/.ssh && ln -sf "$SSH_AUTH_SOCK" ~/.ssh/ssh_auth_sock
tmux source-file ~/.tmux.conf 2>/dev/null || trueThis ensures:
- β SSH keys work in all tmux sessions
- β Git operations work without permission errors
- β SSH persists across system restarts
Start the dashboard:
yarn devDashboard opens at http://localhost:23000
Network Access: By default, AI Maestro is accessible on your local network at port 23000. See Security below for important information.
Optional: Configure settings
# Copy the example environment file
cp .env.example .env.local
# Edit .env.local to customize:
# - HOSTNAME: Change to 'localhost' for local-only access
# - ENABLE_LOGGING: Set to 'true' to enable agent logging
# See the Security and Configuration sections below for all optionsOption A: From the UI (Recommended)
- Click the "+" button in the sidebar
- Enter an agent name using hyphens for hierarchy:
- Simple:
my-project - Organized:
myproject-backend-api(creates 3 levels)
- Simple:
- Choose your working directory
- Click "Create Agent"
- Start your AI agent in the terminal that appears
Option B: From Terminal (For tmux users)
# In another terminal
cd ~/my-project
tmux new-session -s myproject-backend-api
# Start your AI agent (claude, aider, cursor, copilot, etc.)
claude
# Detach: Ctrl+B then Dπ‘ Hierarchy Tip: Agent names with hyphens create automatic organization:
project-backendβ 2 levels (project > backend)project-backend-apiβ 3 levels (project > backend > api)- Each top level gets its own color automatically!
Your agent is now live in the dashboard. Click to switch between agents. Add notes. Organize your work. That's it.
AI Maestro automatically checks for updates and shows you when a new version is available.
When a new version is released, you'll see a green badge in the footer next to the version number:
Version 0.11.3 [v0.12.0] β’ Made with β₯ in Boulder Colorado
β
Click to see update details
Click the badge to see:
- What version you're on vs. latest
- Link to changelog
- Update instructions
Note: The update check requires internet access. If you're running in an air-gapped environment, it will silently skip the check - AI Maestro works perfectly offline.
To update AI Maestro to the latest version:
cd /path/to/ai-maestro
./update-aimaestro.shWhat this updates:
- β Application code (pulls latest from GitHub)
- β
Dependencies (runs
yarn install) - β Rebuilds the application
- β
CLI scripts (messaging, docs, etc.) β
~/.local/bin/ - β
Claude Code skills β
~/.claude/skills/ - β Restarts PM2 automatically (if running)
Example output:
ββββββββββββββββββββββββββββββββββββββββββ
β AI Maestro - Full Updater β
ββββββββββββββββββββββββββββββββββββββββββ
Current version: 0.11.3
New commits available: 5
Recent changes:
abc1234 feat: Add new feature
def5678 fix: Bug fix
π₯ Pulling latest changes...
π¨ Installing dependencies...
π¨ Building application...
π Installing scripts and skills...
π Restarting AI Maestro via PM2...
ββββββββββββββββββββββββββββββββββββββββββ
β Update Complete! β
ββββββββββββββββββββββββββββββββββββββββββ
Updated: 0.11.3 β 0.12.0
β οΈ IMPORTANT: Restart your Claude Code agents
to reload updated skills
If you prefer to update manually:
cd /path/to/ai-maestro
# 1. Pull latest code
git pull origin main
# 2. Install dependencies
yarn install
# 3. Rebuild
yarn build
# 4. Reinstall scripts and skills
./install-messaging.sh # Select option 3 for both
# 5. Restart server
pm2 restart ai-maestroImportant: After any update, restart your Claude Code agents to reload updated skills:
- In each tmux session running Claude Code:
- Type
exitor pressCtrl+Dto exit Claude - Type
claudeto restart
- Type
This ensures your agents have the latest skills and capabilities.
AI Maestro is fully mobile-optimized, letting you monitor and control your AI agents from your phone or tablet - perfect for checking progress while away from your desk.
The best way to access AI Maestro from anywhere is using Tailscale - a zero-config VPN that creates a secure network between your devices.
Note: AI Maestro is not endorsed by or affiliated with Tailscale in any way. We simply use it and recommend it based on our positive experience.
Why Tailscale?
- β Zero port forwarding - No need to expose ports to the internet
- β Encrypted connections - All traffic is automatically encrypted
- β No public IP needed - Works behind NAT, firewalls, and routers
- β Cross-platform - iOS, Android, macOS, Windows, Linux
- β Free for personal use - Up to 100 devices
1. Install Tailscale on your development machine:
# macOS
brew install tailscale
# Or download from https://tailscale.com/download2. Install Tailscale on your mobile device:
- iOS: App Store
- Android: Google Play
3. Connect both devices:
- Open Tailscale on both devices
- Sign in with the same account (Google, Microsoft, GitHub, etc.)
- Both devices will appear in your Tailscale network
4. Start AI Maestro:
# On your development machine
yarn dev5. Access from your mobile device:
http://YOUR-MACHINE-NAME:23000
Find your machine name in Tailscale settings (e.g., macbook-pro, desktop-work)
- Touch-optimized interface - Swipe to open sidebar, tap to close
- Auto-collapsing sidebar - Sidebar starts collapsed on mobile for maximum terminal space
- Compact header - Essential info only, optimized for small screens
- Notes panel collapsed by default - More room for terminal output
- Full terminal access - View output, run commands, monitor progress
- Responsive layout - Adapts perfectly to any screen size
- π Monitor long-running builds from your phone
- π Check agent progress while away from desk
- π Read agent notes on your tablet
- β Verify completions without being at your computer
- π Switch between agents from anywhere
- π» Full terminal input - Type commands and interact with agents from any device
The next evolution in AI pair programming: Your agents can now talk to each other.
When you're running a backend-architect agent and a frontend-developer agent, they need to coordinate. The backend agent finishes an API endpoint and needs to notify the frontend agent. The frontend agent hits an error and needs help from the backend team. Previously, you were the middleman - copying messages, switching contexts, losing flow.
Not anymore.
AI Maestro provides a dual-channel messaging system designed specifically for agent-to-agent communication:
Perfect for detailed requests, specifications, and async collaboration:
# Backend agent tells frontend agent: "API is ready"
send-aimaestro-message.sh frontend-dev \
"GET /api/users endpoint ready" \
"Endpoint implemented at routes/users.ts:45. Returns paginated user list. Supports ?page=1&limit=20" \
normal \
response
# Forward messages between agents with context
forward-aimaestro-message.sh latest frontend-dev qa-tester \
"QA: Please verify this API endpoint"Features:
- Priorities:
urgent|high|normal|low - Types:
request|response|notification|update - Forwarding: Pass messages between agents with notes and metadata preservation
- Inbox: Each agent has their own inbox (Messages tab in UI)
- Persistent: Messages saved to
~/.aimaestro/messages/inbox/ - Searchable: Filter by priority, type, sender, or content
For when agents need immediate attention:
# Urgent alert - pops up in the target agent's terminal
send-tmux-message.sh backend-architect "π¨ Production database down - check inbox!"Three delivery methods:
display- Non-intrusive popup (auto-dismisses)inject- Visible in terminal historyecho- Formatted output for critical alerts
# Frontend agent working on user dashboard
# Backend agent finishes the API they need
# Backend sends structured message
send-aimaestro-message.sh frontend-dev \
"User stats API ready" \
"GET /api/stats implemented. Returns {activeUsers, signups, revenue}.
Cached for 5min. Rate limited to 100/hour." \
high \
notification
# Backend also sends instant alert so frontend sees it immediately
send-tmux-message.sh frontend-dev "β
User stats API is ready - check inbox for details"
# Frontend agent checks inbox
check-and-show-messages.sh
# Sees the full message with context
# Frontend responds after integration
send-aimaestro-message.sh backend-architect \
"Re: User stats API integrated" \
"Dashboard updated. Works perfectly. Thanks!" \
normal \
responseEvery agent can use the messaging system automatically via a Claude Code skill (π View Skill):
# With any agent, just say:
> "Send a message to backend-architect asking them to implement POST /api/users"
> "Forward the last message to qa-tester with a note to verify the implementation"
# Claude automatically:
# 1. Recognizes the messaging/forwarding intent
# 2. Chooses appropriate method (file-based)
# 3. Sends or forwards message to the target agent's inbox
# 4. Confirms delivery with metadataNo manual scripting needed - agents understand natural language messaging commands.
Installation:
- Easy: Run
./install-messaging.sh(installs scripts + skill automatically) - Update: Run
./update-messaging.sh(updates scripts + skill with zero friction) - Manual: Copy
skills/agent-messaging/to~/.claude/skills/(π Guide)
Each agent has a Messages tab with:
- π₯ Inbox - See all messages sent to this agent
- π€ Sent - Track what you've sent to other agents
- βοΈ Compose - Send new messages with priority/type selection
βοΈ Forward - Forward received messages to other agents with notes- π Unread count - Never miss important messages
Easy Install (Recommended):
./install-messaging.sh
# Interactive installer - checks prerequisites, installs scripts & skillUpdate Existing Installation:
./update-messaging.sh
# Updates scripts and skill - backs up old version automatically
# Remember to restart agents to reload updated skillManual Install: See Installation Guide
# 1. Agents check inbox on startup
check-and-show-messages.sh
# 2. Send your first message
send-aimaestro-message.sh backend-api \
"Test message" \
"Hello from the communication system!" \
normal \
notification
# 3. Check for new messages
check-new-messages-arrived.shFor Claude Code: Install the skill to use natural language - Skills Guide
- π¬ Quickstart Guide - Send your first message in < 2 minutes
- π Guidelines - Best practices for effective agent communication
- π Messaging Guide - Complete reference with all tools and options
- ποΈ Architecture - Technical deep-dive into the messaging system
- βοΈ Claude Code Configuration - Skills, slash commands, and configuration options
Before: You're the bottleneck. Every agent interaction goes through you.
After: Agents coordinate directly. You orchestrate, they collaborate.
Result: Faster development, better context retention, true multi-agent workflows.
Hierarchical Agent Organization
Agents organized automatically using hyphens, with color coding and icons:
Example agent names:
fluidmind-agents-backend-architectfluidmind-agents-frontend-developerfluidmind-experiments-api-testerecommerce-development-cart-apiecommerce-development-checkout-flow
Displays as:
π¨ fluidmind (purple)
π agents
π€ backend-architect
π€ frontend-developer
π experiments
π§ͺ api-tester
π ecommerce (blue)
π development
π» cart-api
π» checkout-flow
Each top-level category gets a unique color automatically - no configuration needed.
Agent Notes
Take notes for each agent. They're saved automatically to your browser:
- Track architectural decisions
- Save commands for later
- Keep TODO lists
- Leave context for tomorrow
Every agent has persistent memory powered by CozoDB. They learn your codebase and remember past conversations. No more re-explaining context every session.
Direct agent-to-agent messaging. Your frontend agent can request APIs from backend agent without you playing messenger. Built-in inbox/outbox with priority levels.
Run agents on your laptop, remote servers, Docker containers, or cloud VMs. Manage them all from one dashboard with the Manager/Worker architecture.
Code Graph visualization shows your entire codebase structure. Agents know what files relate to what before they even start. Delta indexing keeps everything current (~100ms updates).
Why not just use tmux directly? You can! AI Maestro is built on tmux. But instead of memorizing keybindings and switching between panes, you get visual organization, point-and-click switching, persistent memory, agent communication, and Code Graph visualization.
Is it just a tmux GUI? It started that way, but now it's an AI Agent Orchestrator. Think of it as tmux + memory + communication + code understanding + visual hierarchy. You still have full access to your tmux sessions from the terminal.
- macOS 12.0+ (Monterey or later)
- Node.js 18.17+
- tmux 3.0+
- Your favorite AI agent (Claude, Aider, Cursor, Copilot, etc.)
- Windows 10 version 2004+ or Windows 11
- WSL2 (Windows Subsystem for Linux) - Installation Guide
- Node.js 18.17+ (installed in WSL2)
- tmux 3.0+ (installed in WSL2)
- Your favorite AI agent (Claude, Aider, Cursor, Copilot, etc.)
- Ubuntu 20.04+ / Debian 11+ / Fedora 35+ or equivalent
- Node.js 18.17+
- tmux 3.0+
- Your favorite AI agent (Claude, Aider, Cursor, Copilot, etc.)
Built with modern, battle-tested tools:
- Frontend: Next.js 14, React 18, Tailwind CSS
- Terminal: xterm.js with WebGL acceleration
- Backend: Custom Node.js server with WebSocket
- Database: CozoDB - Embedded graph-relational database for agent memory
- Code Analysis: ts-morph - TypeScript/JavaScript AST parsing for Code Graph
- Embeddings: Transformers.js with all-MiniLM-L6-v2 for semantic search
- Font: Space Grotesk for a modern feel
- Icons: lucide-react
- Quick Start Guide - Get AI Maestro running in 5 minutes β‘
- Core Concepts - Understand localhost, hosts, and Manager/Worker pattern
- Use Cases - Real-world scenarios and benefits
- Setup Tutorial - Configure your first remote worker (step-by-step)
- Network Access Guide - Tailscale, local network, and security
- Remote Sessions Architecture - Technical deep-dive
- Quickstart Guide - Send your first message in < 2 minutes
- Guidelines - Best practices and patterns
- Messaging Guide - Comprehensive reference
- Architecture - Technical deep-dive
- Agent Intelligence Guide - Code Graph, Subconscious, and Memory systems
- Windows Installation - Complete WSL2 setup guide for Windows users
- Operations Guide - How to use AI Maestro
- Troubleshooting - Solutions for common issues
- π₯ Most Common Issue: Services not running after restart - Socket errors? Read this first!
- Technical Specs - Architecture deep-dive
- UX Specs - Design decisions
- Contributing - How to contribute
- Security - Security model
- β Local tmux session management
- β Hierarchical organization
- β Dynamic color coding
- β Agent notes
- β Full CRUD from UI
- β Agent communication system (file-based messaging)
- β Web UI for inbox/compose
- β CLI tools for messaging
- β Mobile-optimized interface
- β Manager/Worker distributed architecture
- β Remote host management via Settings UI
- β Smart host discovery wizard
- β WebSocket proxy for remote agents
- β Tailscale VPN integration
- β Agent Intelligence System
- β Code Graph visualization with multi-language support
- β Agent Subconscious with background memory maintenance
- β Conversation history browser with semantic search
- β Auto-generated documentation from codebase
- β CozoDB embedded database per agent
- Search & filter across all agents
- Export agent transcripts
- Agent playback (time-travel debugging)
- Agent sharing & collaboration
- AI-generated agent summaries
- Performance metrics dashboard
- Cloud deployment templates
We love contributions! AI Maestro is built for developers, by developers.
Ways to contribute:
- π Report bugs
- π‘ Suggest features
- π Improve docs
- π§ Submit PRs
See CONTRIBUTING.md for guidelines.
AI Maestro runs on 0.0.0.0:23000 which means:
- β Accessible from any device on your local network
β οΈ No authentication required - anyone on your WiFi can access itβ οΈ Unencrypted connections (ws://) - data sent in plain textβ οΈ Full terminal access - anyone connected can run commands
Safe for:
- Home networks (trusted WiFi)
- Private office networks
- Development on trusted LANs
NOT safe for:
- Public WiFi (coffee shops, airports, etc.)
- Shared office WiFi with untrusted users
- Exposing port 23000 to the internet
For the most secure setup, restrict AI Maestro to only accept connections from your local machine:
Option 1: One-time run
HOSTNAME=localhost yarn dev
# or
HOSTNAME=127.0.0.1 yarn devOption 2: Persistent configuration (recommended)
Create a .env.local file in the project root:
# .env.local
HOSTNAME=localhost
PORT=23000Then run normally:
yarn devProduction build:
HOSTNAME=localhost yarn build
HOSTNAME=localhost yarn start| Configuration | Access Level | Use Case |
|---|---|---|
HOSTNAME=localhost |
Local machine only | Maximum security, single developer |
HOSTNAME=127.0.0.1 |
Local machine only | Same as localhost (explicit IP) |
HOSTNAME=0.0.0.0 (default) |
Local network | Access from phone/tablet/other computers |
HOSTNAME=192.168.x.x |
Specific network interface | Control which network accepts connections |
Testing your configuration:
# After starting the server, test access:
# Should always work (local access)
curl http://localhost:23000
# Will only work if HOSTNAME is 0.0.0.0 or your local IP
curl http://192.168.1.100:23000 # Replace with your machine's IPAgent Logging (Disabled by Default)
AI Maestro can optionally log terminal agent content to ./logs/{agentName}.txt files. This is useful for:
- π Reviewing AI agent conversations
- π Debugging issues after agents stop
- π Creating documentation from agent interactions
- π Searching through past work
What gets logged:
- β All terminal output and commands
- β AI agent responses and reasoning
- π« Filtered out: Claude Code status updates and thinking steps (reduces noise)
- π« Not logged: Browser notes (stored in localStorage only)
Controls:
- Global master switch (in
.env.local):
# Enable agent logging
ENABLE_LOGGING=true
# Disable all agent logging (default)
ENABLE_LOGGING=false- Per-agent toggle: Each terminal has a π/π« button in the header to enable/disable logging for that specific agent
Privacy considerations:
- Log files are stored locally only (
./logs/directory) - Logs are gitignored by default (never committed to git)
- No logs are sent over the network
- Logs contain whatever commands and data you run in terminals
- Consider disabling logging when working with sensitive data
Disk usage:
- Log files grow with agent activity
- No automatic cleanup or rotation (manage manually)
- Disable logging globally or per-agent to save disk space
Built-in protections:
- No data sent over the internet (runs 100% locally)
- Notes stored in browser localStorage only
- tmux sessions run with your user permissions
- No external API calls or telemetry
Recommended practices:
- Use localhost-only mode when on untrusted networks
- Never expose port 23000 to the internet (no port forwarding)
- Review tmux session permissions regularly
- Consider using a firewall to restrict port 23000 access
- Authentication (user login)
- HTTPS/WSS encryption
- Rate limiting
- Access logging
If you're setting up Manager/Worker architecture on macOS 15+ (Sequoia) or macOS 26+ (Tahoe), you MUST apply this fix.
Symptoms:
- β Local agents work fine
- β Remote agents don't appear
- β
EHOSTUNREACHerrors in PM2 logs - β
curlto remote workers works from terminal
Root Cause: macOS Local Network Privacy restricts PM2 (user-level process) from accessing local network IPs. This is a macOS security feature introduced in macOS 15.
Quick Fix (5 minutes):
# Step 1: Convert PM2 to system daemon (exempt from restrictions)
./scripts/fix-pm2-daemon.sh
# Step 2: Complete the transition
./scripts/transition-to-daemon.sh
# Step 3: Verify remote connections work
curl http://localhost:23000/api/sessions | jq '.sessions | group_by(.hostId)'What this does:
- β
Keeps all PM2 functionality (
pm2 logs,pm2 restart, etc.) - β Fixes network access to remote workers
- β Auto-starts on boot
- β No workflow changes
Alternative: Use Tailscale to connect workers (may bypass restriction).
Full documentation: See GitHub Issue #24 for complete technical details and troubleshooting.
When Claude Code updates status indicators (like "Thinking..."), you may see duplicate lines in the scrollback buffer. This is a known limitation of xterm.js (the terminal library used by VS Code, JupyterLab, and most web terminals).
Why this happens:
- Native terminals (iTerm2, Terminal.app) only add content to scrollback when it scrolls off the top
- xterm.js records every cursor movement, including in-place status updates
- Claude Code uses cursor positioning to update indicators, creating intermediate states in scrollback
Workarounds included:
- π§Ή Clear button in terminal header - manually clean scrollback when needed
- No history replay - start with clean terminal on reconnect
- These are the same workarounds used by other xterm.js-based terminals
Note: This is not specific to AI Maestro - it affects all web terminals using xterm.js with tools that update status indicators in place.
- Works with any terminal-based AI agent
- Not affiliated with Anthropic, OpenAI, GitHub, or any AI provider
- Each AI agent requires separate installation/authentication
MIT License - see LICENSE
Copyright Β© 2025 Juan PelΓ‘ez / 23blocks
Free to use for any purpose, including commercial.
- π Bugs: Open an issue
- π‘ Features: Request here
- π Docs: See /docs
Built with amazing open source tools:
- Claude Code by Anthropic
- CozoDB - Graph-relational database
- xterm.js - Terminal emulator
- Next.js - React framework
- ts-morph - TypeScript compiler API wrapper
- tmux - Terminal multiplexer
- lucide-react - Icons
Made with β₯ in Boulder, Colorado
Juan PelΓ‘ez @ 23blocks Coded with Claude
Built for developers who love AI pair programming


