A CLI-based autonomous research assistant powered by LLMs.
Minimalist-Agent is a command-line application that utilises two specialised AI agents to help with research tasks:
- Main Agent: Interfaces with the user, handles conversations, and delegates research tasks.
- Research Agent: Autonomously performs research using specialised tools.
The core philosophy of Minimalist-Agent is to achieve elegant simplicity through minimal, clean architecture. The entire system is built around just two fundamental base classes that serve as the foundation for all functionality. This deliberate minimalism reduces complexity, enhances maintainability, and creates a codebase that is both powerful and approachable. By focusing on essential abstractions, the project demonstrates how sophisticated agent behaviours can emerge from a thoughtfully designed, minimalist architecture.
- Interactive CLI interface with rich text formatting
- Multi-agent architecture for specialised tasks
- Integrated research tools:
- Web search capabilities via Tavily
- Data extraction and processing
- Reasoning capabilities
- Report generation
- Conversation management
- Configurable agent behaviour
- Python 3.10 - 3.12
- Poetry (dependency management)
-
Clone the repository:
git clone https://github.com/yourusername/minimalist-agent.git cd minimalist-agent -
Install dependencies with Poetry:
poetry install -
Copy the example environment file and add your API keys:
cp .env.example .env -
Edit the
.envfile to add your API keys (OpenAI and Tavily).
Start the CLI application:
poetry run python app.py [--main_turns N] [--research_turns N]
--main_turns: Maximum number of turns the main agent can take (default: 3)--research_turns: Maximum number of turns the research agent can take (default: 15)
- Type your message and press Enter to interact with the agent
reset: Clear the conversation history (retains the system prompt)exitorquit: Exit the application
app.py: Main application entry pointsrc/: Core codeagent.py: Agent implementationconversation.py: Conversation managementbase.py: Base classestools/: Tool implementationssearch.py: Web search functionalityextract.py: Data extractionreasoning.py: Reasoning capabilitiesrespond.py: Response handlingreport.py: Report generation
templates/: Jinja2 templates for prompts and responsespyproject.toml: Project configuration and dependencies