Skip to main content
OpenManus is an open-source AI agent framework for building general-purpose agents that can browse the web, write code, execute tools, and handle multi-step tasks autonomously.

Install OpenManus

git clone https://github.com/FoundationAgents/OpenManus.git
cd OpenManus

pip install -e .
See the OpenManus README for details.

OpenAlerts Plugin

AI agents fail silently — LLM errors, stuck sessions, token blowups — nobody knows until a user complains. OpenAlerts watches your agent in real-time and alerts you the moment something goes wrong.

Install

pip install openalerts
Add openalerts.init before your agent runs — everything is monitored automatically from that point:
import asyncio
import openalerts
from app.agent.manus import Manus

async def main():
    await openalerts.init({})

    agent = Manus()
    await agent.run("Research quantum computing")

asyncio.run(main())
OpenAlerts patches OpenManus internals (BaseAgent.run, ReActAgent.step, ToolCallAgent.execute_tool, LLM.ask_tool, LLM.ask) so every LLM call, tool execution, agent step, and error flows through the monitoring engine automatically. Cleanup runs on exit. Events are persisted to ~/.openalerts/ as JSONL. To receive alerts on Slack, Discord, or a custom webhook, pass channels in the init config:
await openalerts.init({
    "channels": [
        {"type": "slack", "webhook_url": "https://hooks.slack.com/services/..."},
        {"type": "discord", "webhook_url": "https://discord.com/api/webhooks/..."},
        {"type": "webhook", "webhook_url": "https://your-server.com/alerts"},
    ]
})
Or set environment variables instead (no code changes needed):
OPENALERTS_SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."
OPENALERTS_DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/..."
OPENALERTS_WEBHOOK_URL="https://your-server.com/alerts"

Alert Rules

6 rules run against every event in real-time. All thresholds and cooldowns are configurable.
RuleWatches forSeverityDefault threshold
llm-errorsLLM/agent failures in 1 min windowERROR1 error
tool-errorsTool execution failures in 1 min windowWARN1 error
agent-stuckAgent idle too longWARN2 min
token-limitToken limit exceededERROR-
step-limit-warningAgent reaches 80% of max_stepsWARN-
high-error-rateFailure rate over last 20 callsERROR50%
Every rule also accepts enabled (default true) and cooldown_seconds (default 900). To tune rules:
await openalerts.init({
    "channels": [...],
    "rules": {
        "llm-errors": {"threshold": 5},
        "high-error-rate": {"enabled": False},
        "tool-errors": {"cooldown_seconds": 1800},
    },
    "cooldown_seconds": 900,
    "max_alerts_per_hour": 5,
})
Set "quiet": True for log-only mode (no alerts sent to channels).

Dashboard

A real-time web dashboard starts automatically at http://localhost:9464/openalerts:
TabWhat it shows
ActivityStep-by-step execution timeline with tool calls, LLM usage, costs
HealthRule status, alert history, system stats
DebugState snapshot for troubleshooting
By default, the dashboard runs in-process and stops when your agent exits. For a persistent dashboard, run openalerts serve in a separate terminal and disable the in-process one with "dashboard": False. Need additional help? Please reach out to us at hello@steadwing.com