YAAAF (Yet Another Autonomous Agents Framework) - A modular framework for building intelligent agentic applications with Python backend and Next.js frontend
Project description
YAAAF - Yet Another Autonomous Agents Framework
YAAAF is an artifact-first framework for building intelligent agentic applications.
The Core Philosophy
YAAAF is not about agents. It is about artifacts.
In YAAAF, you do not route queries to agents. Instead, the system builds a railway - a planned pipeline that moves artifacts from sources to their final destination. Agents are merely the stations along this railway, transforming artifacts as they pass through.
[Source] -----> [Station A] -----> [Station B] -----> [Destination]
| | | |
Database SqlAgent VisualizationAgent Image
| | | |
+--- artifact -->+--- artifact ----->+--- artifact -----+
(query) (table) (chart)
This is artifact-first design: the artifact is the primary citizen, not the agent.
How It Works
Unlike traditional agent systems that route queries to individual agents, YAAAF takes a fundamentally different approach:
- Goal Analysis: The system extracts the user's goal and determines the required output type
- Workflow Planning: A planner creates a DAG (directed acyclic graph) defining how artifacts should flow
- Artifact Flow: Data moves through the planned pipeline - extracted, transformed, and finally output
- Validation: Each artifact is validated against the user's goal; failed validations trigger automatic replanning
User Query
|
v
+-------------------+
| Goal Extraction | "What does the user want?"
+-------------------+
|
v
+-------------------+
| Plan Generation | Creates YAML workflow with artifact dependencies
+-------------------+
|
v
+-------------------+
| Workflow Engine | Executes DAG, flowing artifacts between agents
+-------------------+
|
v
+-------------------+
| Validation | Checks each artifact against goal (replan if needed)
+-------------------+
|
v
Result
Agent Taxonomy
Agents are classified by their role in the artifact flow:
| Role | Description |
|---|---|
| EXTRACTOR | Pulls data from external sources (databases, APIs, documents) |
| TRANSFORMER | Converts artifacts from one form to another |
| SYNTHESIZER | Combines multiple artifacts into unified outputs |
| GENERATOR | Creates final outputs (visualizations, files, effects) |
Available Agents
| Agent | Role | Description |
|---|---|---|
| SqlAgent | EXTRACTOR | Executes SQL queries against configured databases |
| DocumentRetrieverAgent | EXTRACTOR | Retrieves relevant text from document collections |
| BraveSearchAgent | EXTRACTOR | Searches the web via Brave Search API |
| DuckDuckGoSearchAgent | EXTRACTOR | Searches the web via DuckDuckGo |
| UrlAgent | EXTRACTOR | Fetches and extracts content from URLs |
| UserInputAgent | EXTRACTOR | Collects information from users interactively |
| MleAgent | TRANSFORMER | Trains machine learning models on tabular data |
| ReviewerAgent | TRANSFORMER | Analyzes and validates artifacts |
| ToolAgent | TRANSFORMER | Executes external tools via MCP protocol |
| NumericalSequencesAgent | TRANSFORMER | Structures unformatted data into tables |
| AnswererAgent | SYNTHESIZER | Combines artifacts into comprehensive answers |
| UrlReviewerAgent | SYNTHESIZER | Aggregates and summarizes URL content |
| VisualizationAgent | GENERATOR | Creates charts and visualizations from data |
| BashAgent | GENERATOR | Performs filesystem operations |
| PlannerAgent | SYNTHESIZER | Creates execution workflows from goals |
| ValidationAgent | TRANSFORMER | Validates artifacts against user goals, triggers replanning |
How Planning Works
When a query arrives, the planner generates a YAML workflow defining the artifact flow:
assets:
sales_data:
agent: SqlAgent
description: "Extract quarterly sales figures"
type: table
sales_chart:
agent: VisualizationAgent
description: "Create bar chart of sales by quarter"
type: image
inputs: [sales_data]
The planner uses RAG-based example retrieval to find similar scenarios from a dataset of 50,000+ planning examples, ensuring high-quality workflow generation.
Quick Start
Installation
git clone <repository-url>
cd agents_framework
pip install -e .
# Frontend (optional)
cd frontend && pnpm install
Running
# Backend (default port 4000)
python -m yaaaf backend
# Frontend (default port 3000)
python -m yaaaf frontend
# Custom ports
python -m yaaaf backend 8080
python -m yaaaf frontend 3001
Requirements
- Python 3.11+
- Ollama running locally (default: http://localhost:11434)
- A compatible model (e.g.,
ollama pull qwen2.5:32b)
Configuration
Set YAAAF_CONFIG environment variable to point to your configuration file:
{
"client": {
"model": "qwen2.5:32b",
"temperature": 0.7,
"host": "http://localhost:11434"
},
"agents": [
"sql",
"visualization",
"websearch",
"document_retriever",
"answerer",
"reviewer"
],
"sources": [
{
"name": "my_database",
"type": "sqlite",
"path": "./data/database.db"
}
]
}
Agent-Specific Configuration
Override model settings per agent:
{
"agents": [
"sql",
{
"name": "visualization",
"model": "qwen2.5-coder:32b",
"temperature": 0.1
}
]
}
MCP Tool Integration
Add external tools via Model Context Protocol:
{
"tools": [
{
"name": "math_server",
"type": "sse",
"url": "http://localhost:8080/sse"
},
{
"name": "file_tools",
"type": "stdio",
"command": "python",
"args": ["-m", "my_mcp_server"]
}
]
}
Architecture
Frontend (Next.js) <--HTTP--> Backend (FastAPI)
|
v
+---------------+
| Orchestrator |
+---------------+
|
+------------+------------+
| |
v v
+------------+ +----------------+
| Planner | | Workflow Engine|
+------------+ +----------------+
| |
v v
YAML Workflow ------> Agent Execution
(artifact flow)
Key Components
- Orchestrator: Entry point that coordinates goal extraction and workflow execution
- Planner: Generates YAML workflows using RAG-retrieved examples
- Workflow Engine: Executes the DAG, managing artifact dependencies
- Validation: Inspects each artifact and triggers replanning if it doesn't match the goal
- Artifact Storage: Centralized store for generated artifacts (tables, images, models)
Development
# Run tests
python -m unittest discover tests/
# Code formatting
ruff format .
ruff check .
# Frontend development
cd frontend && pnpm dev
Project Structure
yaaaf/
components/
agents/ # Agent implementations
retrievers/ # RAG and search components
executors/ # Workflow and tool executors
sources/ # Data source connectors
server/ # FastAPI backend
data/ # Packaged datasets (planner examples)
frontend/ # Next.js application
tests/ # Unit tests
License
MIT License
Support
- Documentation:
documentation/folder - Issues: GitHub Issues
- Discussions: GitHub Discussions
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yaaaf-0.1.0.tar.gz.
File metadata
- Download URL: yaaaf-0.1.0.tar.gz
- Upload date:
- Size: 27.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be66f10969c15603dddd82ba63aaf0bfc461f13f5e3666e13b637c66645f3028
|
|
| MD5 |
30c8ed454c9fa45019d672f67cfd6f87
|
|
| BLAKE2b-256 |
92ed5522a4569cc49604f6f5c6508506f238d698e252014e2693f93a8035282e
|
File details
Details for the file yaaaf-0.1.0-py3-none-any.whl.
File metadata
- Download URL: yaaaf-0.1.0-py3-none-any.whl
- Upload date:
- Size: 27.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b4894595f61410ab4328c6080e2809122c6b377df8c4285ee652d28e7ac9c61
|
|
| MD5 |
af523b6963916170dc4b52983a412385
|
|
| BLAKE2b-256 |
c41a66342f49ce5c7f0c97e031355d905be164ecbce92877cf024d7dad12086c
|