The Problem
BabyAGI 3 solves the orchestration problem for AI agents: tying an LLM to persistent memory, scheduling, web research, email/SMS channels, and third-party tool integrations without hand-coding each workflow. Most agent frameworks give you building blocks; this repo gives you a running system you configure once and direct through natural language.
What This Does
The core loop is input -> LLM -> action -> execute -> output, implemented in agent.py and main.py. The architecture is modular: listeners/ (CLI, email, SMS, voice) feed messages in, senders/ push responses out, memory/ handles embeddings, retrieval, and summaries, and tools/ contains 30+ integrations including email, research, meeting scheduling, and optional services (Shopify, GitHub, ElevenLabs, etc.).
The system is designed to be persistent and proactive—it has a scheduler.py for background tasks and tools/skills.py so you can teach it new capabilities at runtime. Configuration is centralized in config.py and config.yaml, with an LLM-guided onboarding wizard that collects your name, email, and API keys. All state is conversational; there is no separate command language to learn.
How To Use It
Setup: The repo uses uv (see pyproject.toml and uv.lock). Install with uv sync or pip install -e .. The README documents the exact commands:
git clone https://github.com/yoheinakajima/babyagi3 && cd babyagi3 uv sync # or: pip install -e .
Set one LLM API key (Anthropic OR OpenAI)
export ANTHROPICAPIKEY="sk-ant-..." or: export OPENAIAPIKEY="sk-..."
python main.py
Configuration: Minimum config is OWNERNAME and OWNEREMAIL via env vars or config.yaml. API keys can be provided via secure prompt (stored in system keyring), env vars, .env file, or Replit secrets. Email requires an AgentMail account; SMS requires SendBlue credentials.
Running it: python main.py starts the agent with an interactive CLI. server.py exposes a webhook endpoint. Verbose mode is on by default; type /verbose off to disable. Dev bootstrap: uv sync --group dev && uv run pytest -q.
Real-World Use
A practical setup: run the agent locally with email and SMS channels connected. Ask it to "research competitors and email me a summary every Friday at 9am." The agent uses tools/research.py for web search, stores findings in memory/store.py, schedules the recurring task via scheduler.py, and sends the report through senders/email.py. You can also teach it a new internal API pattern via tools/skills.py and it will remember it across sessions.
Code Health & Issues
High - Possible secrets in repo: tools/secrets.py exists. The heuristic flags it as a potential credential leak. Must verify before any external deployment. Med - No lockfile for dependencies: pyproject.toml exists but the analysis flags "dependencies declared without a lockfile." A uv.lock is present, which mitigates this—verify it's current and committed. Med - Broad third-party integrations: tools/optional/ has 15+ integrations (Shopify, GoDaddy, Hunter, etc.) that are likely untested in CI. tests/testoptionaltools.py exists but coverage is unclear. Low - Production hardening: README explicitly warns about exposing API/webhook endpoints beyond localhost. No auth or rate limiting is evident in server.py. Low - Cost control: README warns about runaway costs with background automations. metrics/costs.py tracks spend, but there's no built-in budget cap.
The repo has 18 test files, a GitHub Actions CI workflow, and a license. That's better hygiene than most agent projects. The structure is clean and modular—memory/, tools/, and listeners/ are well-separated.
The Bottom Line
This is a genuinely functional, well-organized agent framework with real persistence, scheduling, and multi-channel I/O. It's better suited to developers who want a working system to extend than teams needing a production SaaS platform. The main risks are the potential secrets file and the cost model—review those before running it long-term or exposing it publicly.