microsoft/autogen
A programming framework for agentic AI
Healthy across the board
weakest axisnon-standard license (CC-BY-4.0)
Has a license, tests, and CI — clean foundation to fork and modify.
Documented and popular — useful reference codebase to read through.
No critical CVEs, sane security posture — runnable as-is.
- ✓Last commit 3w ago
- ✓33+ active contributors
- ✓Distributed ownership (top contributor 41% of recent commits)
- ✓CC-BY-4.0 licensed
- ✓CI configured
- ✓Tests present
- ⚠Non-standard license (CC-BY-4.0) — review terms
What would change the summary?
- →Use as dependency Concerns → Mixed if: clarify license terms
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Healthy" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/microsoft/autogen)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/microsoft/autogen on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: microsoft/autogen
Generated by RepoPilot · 2026-05-07 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/microsoft/autogen shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
GO — Healthy across the board
- Last commit 3w ago
- 33+ active contributors
- Distributed ownership (top contributor 41% of recent commits)
- CC-BY-4.0 licensed
- CI configured
- Tests present
- ⚠ Non-standard license (CC-BY-4.0) — review terms
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live microsoft/autogen
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/microsoft/autogen.
What it runs against: a local clone of microsoft/autogen — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in microsoft/autogen | Confirms the artifact applies here, not a fork |
| 2 | License is still CC-BY-4.0 | Catches relicense before you depend on it |
| 3 | Default branch main exists | Catches branch renames |
| 4 | Last commit ≤ 52 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of microsoft/autogen. If you don't
# have one yet, run these first:
#
# git clone https://github.com/microsoft/autogen.git
# cd autogen
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of microsoft/autogen and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "microsoft/autogen(\\.git)?\\b" \\
&& ok "origin remote is microsoft/autogen" \\
|| miss "origin remote is not microsoft/autogen (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(CC-BY-4\\.0)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"CC-BY-4\\.0\"" package.json 2>/dev/null) \\
&& ok "license is CC-BY-4.0" \\
|| miss "license drift — was CC-BY-4.0 at generation time"
# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
&& ok "default branch main exists" \\
|| miss "default branch main no longer exists"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 52 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~22d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/microsoft/autogen"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
AutoGen is a framework for building multi-agent AI applications where autonomous agents collaborate or interact with humans to solve complex tasks. It provides abstractions for agent communication, tool use, and task orchestration across Python, C#, and TypeScript, enabling developers to compose LLM-based workflows without managing low-level prompting or agent state manually. Multi-language monorepo: python/src/autogen/ contains the core Python framework, dotnet/ contains C# bindings, typescript/ contains TypeScript/Node support. docs/design/ documents architecture (programming model, topics, agent worker protocol, services). .azure/ and .github/workflows/ provide CI/CD. .devcontainer/ enables reproducible dev environments.
👥Who it's for
AI/ML engineers and enterprise developers building autonomous agent systems, chatbot platforms, and multi-turn conversational applications. They need agentic orchestration without writing custom prompt engineering or agent lifecycle management code.
🌱Maturity & risk
AutoGen is in maintenance mode (see README CAUTION notice) — no longer receiving new features, community-managed. It has substantial code (4.3M Python LOC, multi-language support), established CI/CD pipelines (.azure/, .github/workflows/), and test coverage (pytest configurations visible). However, users are being directed toward Microsoft Agent Framework as the successor, indicating this project is in controlled decline rather than actively evolving.
High maintenance risk: project explicitly in 'maintenance mode' with no new features planned and community-managed governance. The README explicitly recommends new users adopt Microsoft Agent Framework instead. Ecosystem risk from potential divergence if the codebase stalls while dependent projects advance. However, existing production deployments are supported with stability guarantees.
Active areas of work
The project is in maintenance/consolidation phase. Active CI workflows for Python packages (.github/workflows/python-package-0.2.yml, .github/workflows/single-python-package.yml), .NET releases (.github/workflows/dotnet-release.yml), and integration testing (.github/workflows/integration.yml). Recent work appears focused on stabilizing v0.2 branch and cross-language compatibility rather than feature development.
🚀Get running
Clone and install: git clone https://github.com/microsoft/autogen.git && cd autogen && pip install -e '.[dev]' (or pip install -U autogen-agentchat autogen-ext[openai] for released version). Set export OPENAI_API_KEY='sk-...' for quickstart examples. See .devcontainer/devcontainer.json for containerized setup: docker compose -f .devcontainer/docker-compose.yml up.
Daily commands:
For development: pip install -e '.[dev]' then pytest for unit tests (.github/workflows/pytest-*.yml pattern). For examples: python examples/hello_world.py (requires OPENAI_API_KEY). Azure Pipelines (.azure/pipelines/build.yaml) and GitHub Actions automate multi-language builds. No standalone dev server; it's a library imported into agent applications.
🗺️Map of the codebase
- python/src/autogen/agent.py: Core agent base class and lifecycle (async run loop, message handling, tool invocation)
- python/src/autogen/client_session.py: LLM client abstraction for provider-agnostic model calls
- python/src/autogen/message.py: Message protocol definition (agent communication contract)
- python/src/autogen/topic.py: Topic-based pub/sub routing system for decoupled agent communication
- python/src/autogen/tool_use.py: Tool schema registration and function call execution
- python/src/autogen/ext/: Provider extensions directory (OpenAI, Azure, etc.)
- .github/workflows/python-package-0.2.yml: Primary CI pipeline for Python testing and PyPI release
- [docs/design/03 - Agent Worker Protocol.md](https://github.com/microsoft/autogen/blob/main/docs/design/03 - Agent Worker Protocol.md): Authoritative spec for agent-to-agent communication contract
🛠️How to make changes
Core Python logic: edit python/src/autogen/ files (agent classes, message protocols, LLM integrations). Add new LLM provider: extend python/src/autogen/ext/ following the provider pattern in autogen-ext[openai]. Add tests: place in python/tests/ mirroring the source structure. Update C#: edit dotnet/src/Microsoft.AutoGen/ with parity goals. Documentation: edit markdown in docs/ and docs/design/, rebuild with docs/ build pipeline.
🪤Traps & gotchas
Environment setup: OPENAI_API_KEY required for any example using GPT models. Multi-language complexity: C# and TypeScript are separate codebases with manual sync requirements, not auto-generated — breaking changes in Python may not immediately reflect in other languages. Dev container required for full setup (startup.sh in .devcontainer/startup.sh configures git hooks, dependencies). Azure Pipelines used for official CI but GitHub Actions also present — both must pass. No single package.json; multiple language-specific dependency managers (pip for Python, dotnet for C#, npm for TypeScript).
💡Concepts to learn
- Topic-based message routing — AutoGen uses topics (docs/design/02 - Topics.md) for decoupled agent communication instead of direct messaging; critical to understanding how agents discover and communicate with each other without tight coupling.
- Tool schema registration and function calling — AutoGen's core capability: agents use OpenAI-style function schemas (python/src/autogen/tool_use.py) to declare and invoke tools; central to autonomous agent behavior.
- Async/await agent loops — Agents run as AsyncIO coroutines with non-blocking message handling; necessary to understand performance, concurrency, and debugging in multi-agent scenarios.
- Agent Worker Protocol (A2A) — AutoGen's spec for agent-to-agent communication (docs/design/03 - Agent Worker Protocol.md) enables cross-language and cross-runtime agent collaboration; foundational for enterprise multi-agent systems.
- LLM client abstraction / provider plugins — python/src/autogen/client_session.py abstracts away provider-specific API details; enables swapping OpenAI, Azure, Anthropic, etc. without changing agent code.
- Multi-language runtime parity — AutoGen maintains separate Python, C#, and TypeScript implementations with equivalent APIs (dotnet/, typescript/ folders); agents can interop across languages via A2A protocol.
🔗Related repos
microsoft/agent-framework— Official successor to AutoGen; recommended by the README for new projects. Migration path required for long-term AutoGen users.openai/swarm— Lightweight multi-agent orchestration from OpenAI; similar problem space but minimal dependencies, alternative approach to AutoGen's abstractions.langchain-ai/langchain— LLM orchestration framework with agent support via LangGraph; overlaps with AutoGen's tool use and agent communication patterns, often used together.anthropic/anthropic-sdk-python— Anthropic's Python SDK with tool_use and agentic loop examples; complementary LLM provider that works with AutoGen extensions.python-poetry/poetry— Dependency management for Python projects like AutoGen; relevant for local development setup and reproducible environments in .devcontainer/.
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add integration tests for .NET/Python interop in AutoGen framework
The repo has both dotnet/ and Python code with design docs mentioning 'Agent Worker Protocol' and 'protobuf-message-types', but there are no visible integration tests validating cross-language communication. This is critical for a multi-agent framework supporting both ecosystems. New contributors could add tests in .github/workflows/ (similar to existing dotnet-build.yml and integration.yml) that spawn agents in both languages and verify message passing.
- [ ] Create
.github/workflows/dotnet-python-integration.ymlworkflow file - [ ] Add test cases in a new
tests/integration/dotnet_python/directory validating protobuf message serialization/deserialization - [ ] Reference
docs/design/03 - Agent Worker Protocol.mdanddocs/dotnet/core/protobuf-message-types.mdin test documentation - [ ] Ensure workflow runs on pull requests affecting both
dotnet/and Python source directories
Add comprehensive docstring/type-hint validation CI for Python modules
The repo has multiple Python-focused workflows (python-package-0.2.yml, pytest-mem0.yml, pytest-redis-memory.yml, single-python-package.yml) but no linting for docstring coverage or type hints. Given this is a framework for AI agents (complex domain), missing documentation is a maintainability risk. Add a workflow using pydocstyle and pyright to enforce standards across the Python codebase.
- [ ] Create
.github/workflows/python-docstring-typecheck.ymlwithpydocstyle,pyright, and optionalruffintegration - [ ] Add configuration files:
pyproject.tomlor.pydocstylefor docstring rules,pyrightconfig.jsonfor type checking - [ ] Run workflow on all Python files changed in PRs (configure path filters for
autogen/directory) - [ ] Document standards in
CONTRIBUTING.mdwith links to enforced rules
Add memory/performance benchmarks workflow for AutoGen agents
The repo has workflows for specific memory backends (pytest-mem0.yml, pytest-redis-memory.yml) but no general performance regression testing. Since AutoGen is a framework for complex multi-agent systems, new features could degrade performance silently. Create a workflow that runs benchmark tests on each PR and tracks memory/latency metrics.
- [ ] Create benchmark test suite in
tests/benchmarks/with agents performing standard tasks (e.g., multi-turn conversations, parallel agent execution) - [ ] Add
.github/workflows/performance-benchmarks.ymlthat runs benchmarks and posts results as PR comments usingactions/upload-artifact - [ ] Store baseline metrics (reference in
codecov.ymlpattern) to detect regressions exceeding thresholds - [ ] Document benchmark methodology in
docs/design/(e.g., new filedocs/design/06 - Performance Benchmarks.md)
🌿Good first issues
- Add type hints to python/src/autogen/message.py if not fully covered — improves IDE support and catches bugs early without requiring deep protocol knowledge.
- Expand docs/design/ with concrete code examples for each design document (Programming Model, Topics, Agent Worker Protocol) — documentation gaps visible in design/ folder structure with minimal .md content.
- Write integration tests for multi-language parity scenarios (Python agent ↔ C# agent ↔ TypeScript agent) using .github/workflows/integration.yml pattern — currently no visible cross-language test suite.
⭐Top contributors
Click to expand
- @ekzhu — 41 commits
- @Copilot — 15 commits
- @victordibia — 5 commits
- @zrquan — 3 commits
- @justin-cechmanek — 3 commits
📝Recent commits
Click to expand
027ecf0— Update maintenance mode banner in readme (#7521) (chetantoshniwal)8544314— fix: restrict importlib provider loading to trusted namespaces (#7463) (victordibia)b047730— fix: Improve AutoGen Studio: deprecate FunctionTool, harden MCP WebSocket endpoint (#7362) (victordibia)13e144e— fix: order by clause (#7051) (zrquan)6dc0a23— update instructions for Quickstart (#7068) (Borda)84f21a0— Update README with maintenance and resource information (#7067) (ekzhu)c027912— Support MCP Elicitation, Sampling, and Roots via new McpSessionHost (#6833) (tylerpayne)a2bf539— Update website for 0.7.5 (#7060) (ekzhu)83afbf5— Update version to 0.7.5 (#7058) (ekzhu)e045643— Add missing reasoning_effort parameter support for OpenAI GPT-5 models (#7054) (Copilot)
🔒Security observations
The AutoGen repository has a reasonable security posture with some infrastructure in place (GitHub Actions, CodeQL scanning, SECURITY.md). However, several areas need attention: the project is in maintenance mode which may affect security update frequency, dependency information is incomplete preventing full vulnerability assessment, and multiple language ecosystems increase complexity. The main recommendations are to conduct a comprehensive dependency audit across all platforms (Python, .NET), verify Docker and CI/CD configurations, and implement consistent security scanning across all language-specific package managers. No obvious hardcoded secrets or severe misconfigurations were detected in the visible file structure.
- Medium · Maintenance Mode - Active Development Ceased —
README.md. The project is marked as being in 'maintenance mode' with a redirect to 'agent-framework'. This indicates the primary development has shifted to another repository, which may result in delayed security updates and patches for this codebase. Fix: Evaluate migration to the active 'agent-framework' repository. Ensure security patches are still applied to this repository for critical vulnerabilities. - Low · Missing Dependency Lock Files in Repository —
Root directory. No package-lock.json, poetry.lock, requirements.lock, or similar dependency lock files are visible in the provided file structure. This makes it difficult to ensure reproducible builds and verify the exact versions of dependencies used. Fix: Implement and commit dependency lock files (package-lock.json for Node.js, requirements.txt with pinned versions for Python, NuGet.lock.json for .NET) to ensure reproducible builds and easier vulnerability tracking. - Low · Incomplete Dependency Information —
Dependencies manifest files (not provided). The 'Dependencies/Package file content' section is empty, making it impossible to perform a complete vulnerability assessment of third-party dependencies. Common attack vectors include known vulnerabilities in unmaintained or outdated packages. Fix: Conduct a complete audit of all direct and transitive dependencies using tools like: Python (safety, pip-audit), .NET (dotnet list package --vulnerable), and npm (npm audit). Regularly update dependencies and monitor for security advisories. - Low · Multiple Language/Framework Support Increases Attack Surface —
dotnet/, .devcontainer/, Repository root. The project supports multiple platforms (Python, .NET/C#) and contains Docker configurations. Each ecosystem has its own dependency chains and potential vulnerabilities, increasing the overall attack surface. Fix: Implement separate security scanning pipelines for each language ecosystem. Use GitHub code scanning (already configured in .github/workflows/codeql.yml) and add language-specific security tools (bandit for Python, RoslynAnalyzers for C#). - Low · Docker Image Best Practices Not Verified —
.devcontainer/Dockerfile. Dockerfile is present (.devcontainer/Dockerfile) but content is not provided. Common Docker security issues include running as root, using untagged base images, or including unnecessary tools. Fix: Verify the Dockerfile follows security best practices: use specific base image tags (not 'latest'), run as non-root user, minimize image layers, use multi-stage builds, and regularly scan the image for vulnerabilities using tools like Trivy or Docker Scout. - Low · Workflow Files May Contain Secrets —
.github/workflows/. Multiple GitHub Actions workflow files are present (.github/workflows/). These files can potentially contain hardcoded secrets if not properly managed, especially in build and release pipelines. Fix: Audit all workflow files for hardcoded credentials. Use GitHub Secrets for sensitive data, consider using GitHub Actions OIDC for cloud authentication. Enable secret scanning on the repository.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.