Observed since 20 Oct, 22:39 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agentman-mcp
A tool for building and managing AI agents
Agentman is a powerful Docker-like tool for building, managing, and deploying AI agents using the Model Context Protocol (MCP). With its intuitive Agentfile syntax, you can define complex multi-agent workflows and deploy them as containerized applications with a single command.
[!TIP] AI-Driven Development: This project showcases the future of software development - almost entirely coded by Claude Sonnet 4 + AI Agents, demonstrating how AI can handle complex architecture design, implementation, comprehensive testing, and documentation.
Install the agentman package and start building AI agents in minutes:
pip install agentman-mcp # Install agentman
agentman build . # Build agent from Agentfile
agentman run --from-agentfile -t my-agent . # Build and run agent
Agentman supports two powerful AI agent frameworks:
@fast.agent() and @fast.chain()fastagent.config.yaml and fastagent.secrets.yamlAgent() and Team().env fileSwitch between frameworks:
FRAMEWORK fast-agent # Default
FRAMEWORK agno # Alternative framework
Create a URL-to-social-media content pipeline in under 5 minutes:
1. Create a new directory:
mkdir my-first-agent && cd my-first-agent
2. Create an Agentfile:
FROM yeahdongcn/agentman-base:latest
MODEL generic.qwen3:latest
SECRET GENERIC
API_KEY ollama
BASE_URL http://host.docker.internal:11434/v1
MCP_SERVER fetch
COMMAND uvx
ARGS mcp-server-fetch
TRANSPORT stdio
AGENT url_fetcher
INSTRUCTION Given a URL, provide a complete and comprehensive summary
SERVERS fetch
AGENT social_media
INSTRUCTION Write a 280 character social media post for any given text. Respond only with the post, never use hashtags.
CHAIN post_writer
SEQUENCE url_fetcher social_media
CMD ["python", "agent.py"]
3. Build and run:
agentman run --from-agentfile -t my-first-agent .
4. Test your agent by providing a URL when prompted!
Make your agent start automatically with predefined tasks:
echo "Fetch and summarize https://github.com/yeahdongcn/agentman and create a social media post about it." > prompt.txt
agentman run --from-agentfile -t my-agent-with-prompt .
Your agent will now automatically execute this prompt on startup! 🎉
[!IMPORTANT] Agentman leverages the FastAgent framework as its foundation, providing robust agent infrastructure and seamless MCP integration. Both Anthropic (Claude family) and OpenAI (GPT-4 family) models are fully supported.
agentman enables you to create and deploy sophisticated AI agents and workflows in minutes. It is the first Docker-like framework with complete end-to-end MCP (Model Context Protocol) support, bringing familiar containerization concepts to AI agent development.
The simple declarative Agentfile syntax lets you concentrate on composing your prompts and MCP servers to build effective agents, while Agentman handles the complex orchestration, containerization, and deployment automatically.
build and run commands with container-like semanticsAgentfile formatprompt.txt filesPrompts and configurations that define your Agent Applications are stored in simple files, with minimal boilerplate, enabling simple management and version control.
Chat with individual Agents and Components before, during and after workflow execution to tune and diagnose your application. Agents can request human input to get additional context for task completion.
Simple model selection makes testing Model <-> MCP Server interaction painless.
Want to see Agentman in action? Watch our demonstration:
What you'll see:
Agentfile with multi-agent workflowBuild agent applications from an Agentfile using Docker-like syntax:
# Build in current directory
agentman build .
# Build with custom Agentfile and output directory
agentman build -f MyAgentfile -o my-output .
# Build and create Docker image
agentman build --build-docker -t my-agent:v1.0 .
Generated files include:
agent.py - Main agent application with runtime logicfastagent.config.yaml - FastAgent configuration and workflow definitionsfastagent.secrets.yaml - Secrets template for environment variablesDockerfile - Optimized container definition with multi-stage buildsrequirements.txt - Python dependencies (auto-generated from MCP servers).dockerignore - Docker build optimization (excludes unnecessary files)prompt.txt - Default prompt file (copied if exists in source directory)Deploy and run agent containers with flexible options:
# Run existing image
agentman run my-agent:latest
# Build from Agentfile and run (recommended for development)
agentman run --from-agentfile --path ./my-project
# Interactive mode with port forwarding
agentman run -it -p 8080:8080 my-agent:latest
# Auto-remove container when done
agentman run --rm my-agent:latest
The Agentfile uses a Docker-like syntax to define your agent applications. Here's a comprehensive reference:
FROM yeahdongcn/agentman-base:latest # Base image
FRAMEWORK fast-agent # AI framework (fast-agent or agno)
MODEL anthropic/claude-3-sonnet # Default model for agents
EXPOSE 8080 # Expose ports
CMD ["python", "agent.py"] # Container startup command
Choose between supported AI agent frameworks:
FRAMEWORK fast-agent # Default: FastAgent framework
FRAMEWORK agno # Alternative: Agno framework
Framework Differences:
| Feature | FastAgent | Agno |
|---|---|---|
| API Style | Decorator-based (@fast.agent()) | Class-based (Agent()) |
| Configuration | YAML files | Environment variables |
| Model Support | MCP-optimized models | Multi-provider support |
| Tool Integration | MCP-first | Rich ecosystem |
| Use Case | Production MCP workflows | Research & experimentation |
Define external MCP servers that provide tools and capabilities:
MCP_SERVER filesystem
COMMAND uvx
ARGS mcp-server-filesystem
TRANSPORT stdio
ENV PATH_PREFIX /app/data
Create individual agents with specific roles and capabilities:
AGENT assistant
INSTRUCTION You are a helpful AI assistant specialized in data analysis
SERVERS filesystem brave
MODEL anthropic/claude-3-sonnet
USE_HISTORY true
HUMAN_INPUT false
Chains (Sequential processing):
CHAIN data_pipeline
SEQUENCE data_loader data_processor data_exporter
CUMULATIVE true
Routers (Conditional routing):
ROUTER query_router
AGENTS sql_agent api_agent file_agent
INSTRUCTION Route queries based on data source type
Orchestrators (Complex coordination):
ORCHESTRATOR project_manager
AGENTS developer tester deployer
PLAN_TYPE iterative
PLAN_ITERATIONS 5
HUMAN_INPUT true
Secure handling of API keys and sensitive configuration:
# Environment variable references
SECRET OPENAI_API_KEY
SECRET ANTHROPIC_API_KEY
# Inline values (for development only)
SECRET DATABASE_URL postgresql://localhost:5432/mydb
# Grouped secrets with multiple values
SECRET CUSTOM_API
API_KEY your_key_here
BASE_URL https://api.example.com
TIMEOUT 30
Agentman automatically detects and integrates prompt.txt files, providing zero-configuration default prompts for your agents.
prompt.txt file in your project rootprompt.txtawait agent(prompt_content) at startupmy-agent/
├── Agentfile # Agent configuration
├── prompt.txt # ← Your default prompt (auto-loaded)
└── agent/ # ← Generated output directory
├── agent.py # Generated agent with prompt loading logic
├── prompt.txt # ← Copied during build process
├── Dockerfile # Contains COPY prompt.txt instruction
└── requirements.txt # Python dependencies
Task-Specific Prompt:
Analyze the latest GitHub releases for security vulnerabilities and generate a summary report.
User-Specific Prompt:
I am a GitHub user with the username "yeahdongcn" and I need help updating my GitHub profile information.
Complex Workflow Prompt:
Process the following workflow:
1. Clone the repository https://github.com/ollama/ollama
2. Checkout the latest release tag
3. Analyze the changelog for breaking changes
4. Generate a migration guide
When prompt.txt exists, Agentman automatically generates this logic in your agent.py:
import os
# Check for default prompt file
prompt_file = "prompt.txt"
if os.path.exists(prompt_file):
with open(prompt_file, 'r', encoding='utf-8') as f:
prompt_content = f.read().strip()
if prompt_content:
await agent(prompt_content)
This ensures your agent automatically executes the default prompt when the container starts.
A comprehensive GitHub profile management agent that automatically loads a default prompt.
Project Structure:
github-profile-manager/
├── Agentfile
├── prompt.txt # Default prompt automatically loaded
└── agent/ # Generated files
├── agent.py
├── prompt.txt # Copied during build
└── ...
prompt.txt:
I am a GitHub user with the username "yeahdongcn" and I need help updating my GitHub profile information.
Key Features:
prompt.txtA specialized agent for maintaining GitHub repositories with automated release management.
Project Structure:
github-maintainer/
├── Agentfile
├── prompt.txt # Default task: "Clone https://github.com/ollama/ollama and checkout the latest release tag."
└── agent/ # Generated files
Key Features:
A simple yet powerful content processing chain for social media.
Project Structure:
chain-ollama/
├── Agentfile
└── agent/ # Generated files
Key Features:
Example of a more complex multi-agent system with routers and orchestrators:
FROM yeahdongcn/agentman-base:latest
MODEL anthropic/claude-3-sonnet
MCP_SERVER database
COMMAND uvx
ARGS mcp-server-postgres
AGENT classifier
INSTRUCTION Classify customer inquiries by type and urgency
SERVERS database
AGENT support_agent
INSTRUCTION Provide helpful customer support responses
SERVERS database
AGENT escalation_agent
INSTRUCTION Handle complex issues requiring human intervention
HUMAN_INPUT true
ROUTER support_router
AGENTS support_agent escalation_agent
INSTRUCTION Route based on inquiry complexity and urgency
FROM python:3.11-slim
MODEL openai/gpt-4
# Your custom setup...
RUN apt-get update && apt-get install -y curl
AGENT custom_agent
INSTRUCTION Specialized agent with custom environment
MCP_SERVER api_server
COMMAND python
ARGS -m my_custom_server
ENV API_TIMEOUT 30
ENV RETRY_COUNT 3
ENV DEBUG_MODE false
AGENT fast_responder
MODEL anthropic/claude-3-haiku
INSTRUCTION Handle quick queries
AGENT deep_thinker
MODEL anthropic/claude-3-opus
INSTRUCTION Handle complex analysis tasks
agentman/
├── src/agentman/ # Core source code
│ ├── __init__.py
│ ├── cli.py # Command-line interface
│ ├── agent_builder.py # Agent building logic
│ ├── agentfile_parser.py # Agentfile parsing
│ └── common.py # Shared utilities
├── examples/ # Example projects
│ ├── github-profile-manager/
│ ├── github-maintainer/
│ ├── chain-ollama/
│ └── chain-aliyun/
├── tests/ # Comprehensive test suite
├── docker/ # Docker base images
└── README.md # This file
git clone https://github.com/yeahdongcn/agentman.git
cd agentman
# Install
make install
Agentman includes comprehensive test suites with high coverage:
# Run all tests
make test
# Run tests with coverage
make test-cov
We welcome contributions! This project serves as a showcase of AI-driven development, being almost entirely coded by Claude Sonnet 4 + AI Agents. This demonstrates how AI can handle complex software development tasks including architecture design, implementation, testing, and documentation.
mainmake testmake formatMIT License - see LICENSE for details.
🚀 Ready to revolutionize your AI workflows?
Get Started • View Examples • Contribute
Join thousands of developers building the future with AI agents ✨
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
fast-agent-mcpEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | fast-agent-mcp>=0.2.33 | runtime |
blackEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | black>=25.1.0; extra == "dev" | runtime |
isortEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | isort>=6.0.1; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0.0; extra == "dev" | runtime |
pytest-covEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-cov>=4.0.0; extra == "dev" | runtime |
pylintEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pylint>=3.0.0; extra == "dev" | runtime |
buildEnvironment{
"extras": "",
"marker": "extra == \"publish\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | build>=1.0.0; extra == "publish" | runtime |
twineEnvironment{
"extras": "",
"marker": "extra == \"publish\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | twine>=5.0.0; extra == "publish" | runtime |
bdist_wheel · 28.16 KB · Python py3
sdist · 46.16 KB · Python source
Observed since 20 Oct, 22:39 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:b0bbef0a67d33323f91202a1d24be4858548fcfbc6700f5116525f770d60ec7f